Re: [Dev] ClassNotFoundException on deserializing a custom message object in Hazelcast

2016-05-11 Thread Asitha Nanayakkara
Yes. Thanks

On Thu, May 12, 2016 at 10:53 AM, Kishanthan Thangarajah <
kishant...@wso2.com> wrote:

> Kalpa has already merged this. I hope you can continue the work with this
> fix.
>
> On Wed, May 11, 2016 at 1:43 PM, Asitha Nanayakkara 
> wrote:
>
>> I raised the question in Hazelcast Gitter community and they got back to
>> me saying to use the com.hazelcast.config.Config#setClassLoader(...) to set
>> the requeired class loader as the solution.
>>
>> Since the issue affects all the users of carbon Hzelcast module we have
>> to fix this in carbon Hazelcast module.
>>
>> @Kishanthan I've created a PR [1] with the suggested fix (by Hazelcast)
>> to add the carbon hazelcast module class loader as the class loader of
>> hazelcast bundle. Please review and merge.
>>
>> [1] https://github.com/wso2/carbon-kernel/pull/974
>>
>>
>> On Tue, May 10, 2016 at 5:13 PM, Asitha Nanayakkara 
>> wrote:
>>
>>> Hi All,
>>>
>>> We came across an issue with Hazelcast topics when passing custom
>>> message objects (Can occur for Maps and all the other data structures in
>>> Hazelcast) with C5 Hazelcast module. We have created an issue for this as
>>> well [1].
>>> Use case
>>>
>>> I'm working with Hazelcast reliable topics in an OSGi environment. I'm
>>> using a custom message object with Hazelcast topics ClusterNotification
>>> 
>>> .
>>>
>>> public class ClusterSubscriptionChangedListener implements 
>>> MessageListener {
>>>
>>> /**
>>>  * This method is triggered when a subscription is changed in clustered 
>>> environment.
>>>  *
>>>  * @param message contains the ClusterNotification
>>>  */
>>> @Override
>>> public void onMessage(Message message) {
>>>// message handling logic
>>> }
>>>  }
>>>
>>> I'm publishing/receiving messages to/from Hazelcast topics from another
>>> OSGi bundle.
>>> Issue
>>>
>>> I can publish messages to the topic successfully. But I don't receive
>>> the messages from the listener. This is because, when the Hazelcast topic
>>> ring buffer runners try to pick the serialized message and de-serialize, it
>>> throws a ClassNotFoundException. *And the exception is silently ignored*
>>> and the message never received.
>>> Root cause
>>>
>>> Class loader of the Hazelcast bundle cannot see the classes of my
>>> bundle. Therefore even though I can publish the message from my bundle,
>>> Within Hazelcast it can't de-serialize the ClusterNotification
>>> 
>>> object since the class loader of Hazelcast bundle cannot see the class.
>>> Solution, way forward?
>>>
>>>
>>>1. After having an offline discussion with Kishanthan we built the
>>>hazelcast bundle with *
>>>in the hazelcast pom.xml
>>>
>>>and we successfully received the messages (We didn't get the
>>>ClassNotFoundException). But we need a fix from Hazelcast.
>>>2. Another way Hazelcast has provided is to set the class loader for
>>>the HazelcastInstance. So Internally Hazelcast instance will use the
>>>provided class loader to deserialize the objects. If we provide our 
>>> bundle
>>>class loader it will properly deserialize the object without an issue.
>>>
>>>
>>> @Kishanthan I tried to set the class loader of the carbon-kernel
>>> hazelcast module to the hazelcast instance (when creating the hazelcast
>>> instance[2]) and added dynamic imports * property (to get the solution 2
>>> working from the carbon kernel hazelcast module itself). Still I'm having
>>> issues in loading the Andes classes thorough the carbon Hazelcast module
>>> class loader.
>>> [1] https://github.com/hazelcast/hazelcast/issues/8139
>>> [2]
>>> https://github.com/wso2/carbon-kernel/blob/hamming-release-poc/modules/carbon-hazelcast/component/src/main/java/org/wso2/carbon/hazelcast/internal/CarbonHazelcastComponent.java#L60
>>>
>>> Regards,
>>> Asitha
>>>
>>> --
>>> *Asitha Nanayakkara*
>>> Software Engineer
>>> WSO2, Inc. http://wso2.com/
>>> Mob: +94 77 853 0682
>>>
>>>
>>
>>
>> --
>> *Asitha Nanayakkara*
>> Software Engineer
>> WSO2, Inc. http://wso2.com/
>> Mob: +94 77 853 0682
>>
>>
>
>
> --
> *Kishanthan Thangarajah*
> Associate Technical Lead,
> Platform Technologies Team,
> WSO2, Inc.
> lean.enterprise.middleware
>
> Mobile - +94773426635
> Blog - *http://kishanthan.wordpress.com *
> Twitter - *http://twitter.com/kishanthan *
>



-- 
*Asitha Nanayakkara*
Software Engineer
WSO2, Inc. http://wso2.com/
Mob: +94 77 853 0682
___
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev


Re: [Dev] ClassNotFoundException on deserializing a custom message object in Hazelcast

2016-05-11 Thread Kishanthan Thangarajah
Kalpa has already merged this. I hope you can continue the work with this
fix.

On Wed, May 11, 2016 at 1:43 PM, Asitha Nanayakkara  wrote:

> I raised the question in Hazelcast Gitter community and they got back to
> me saying to use the com.hazelcast.config.Config#setClassLoader(...) to set
> the requeired class loader as the solution.
>
> Since the issue affects all the users of carbon Hzelcast module we have to
> fix this in carbon Hazelcast module.
>
> @Kishanthan I've created a PR [1] with the suggested fix (by Hazelcast) to
> add the carbon hazelcast module class loader as the class loader of
> hazelcast bundle. Please review and merge.
>
> [1] https://github.com/wso2/carbon-kernel/pull/974
>
>
> On Tue, May 10, 2016 at 5:13 PM, Asitha Nanayakkara 
> wrote:
>
>> Hi All,
>>
>> We came across an issue with Hazelcast topics when passing custom message
>> objects (Can occur for Maps and all the other data structures in Hazelcast)
>> with C5 Hazelcast module. We have created an issue for this as well [1].
>> Use case
>>
>> I'm working with Hazelcast reliable topics in an OSGi environment. I'm
>> using a custom message object with Hazelcast topics ClusterNotification
>> 
>> .
>>
>> public class ClusterSubscriptionChangedListener implements 
>> MessageListener {
>>
>> /**
>>  * This method is triggered when a subscription is changed in clustered 
>> environment.
>>  *
>>  * @param message contains the ClusterNotification
>>  */
>> @Override
>> public void onMessage(Message message) {
>>// message handling logic
>> }
>>  }
>>
>> I'm publishing/receiving messages to/from Hazelcast topics from another
>> OSGi bundle.
>> Issue
>>
>> I can publish messages to the topic successfully. But I don't receive the
>> messages from the listener. This is because, when the Hazelcast topic ring
>> buffer runners try to pick the serialized message and de-serialize, it
>> throws a ClassNotFoundException. *And the exception is silently ignored*
>> and the message never received.
>> Root cause
>>
>> Class loader of the Hazelcast bundle cannot see the classes of my bundle.
>> Therefore even though I can publish the message from my bundle, Within
>> Hazelcast it can't de-serialize the ClusterNotification
>> 
>> object since the class loader of Hazelcast bundle cannot see the class.
>> Solution, way forward?
>>
>>
>>1. After having an offline discussion with Kishanthan we built the
>>hazelcast bundle with *
>>in the hazelcast pom.xml
>>
>>and we successfully received the messages (We didn't get the
>>ClassNotFoundException). But we need a fix from Hazelcast.
>>2. Another way Hazelcast has provided is to set the class loader for
>>the HazelcastInstance. So Internally Hazelcast instance will use the
>>provided class loader to deserialize the objects. If we provide our bundle
>>class loader it will properly deserialize the object without an issue.
>>
>>
>> @Kishanthan I tried to set the class loader of the carbon-kernel
>> hazelcast module to the hazelcast instance (when creating the hazelcast
>> instance[2]) and added dynamic imports * property (to get the solution 2
>> working from the carbon kernel hazelcast module itself). Still I'm having
>> issues in loading the Andes classes thorough the carbon Hazelcast module
>> class loader.
>> [1] https://github.com/hazelcast/hazelcast/issues/8139
>> [2]
>> https://github.com/wso2/carbon-kernel/blob/hamming-release-poc/modules/carbon-hazelcast/component/src/main/java/org/wso2/carbon/hazelcast/internal/CarbonHazelcastComponent.java#L60
>>
>> Regards,
>> Asitha
>>
>> --
>> *Asitha Nanayakkara*
>> Software Engineer
>> WSO2, Inc. http://wso2.com/
>> Mob: +94 77 853 0682
>>
>>
>
>
> --
> *Asitha Nanayakkara*
> Software Engineer
> WSO2, Inc. http://wso2.com/
> Mob: +94 77 853 0682
>
>


-- 
*Kishanthan Thangarajah*
Associate Technical Lead,
Platform Technologies Team,
WSO2, Inc.
lean.enterprise.middleware

Mobile - +94773426635
Blog - *http://kishanthan.wordpress.com *
Twitter - *http://twitter.com/kishanthan *
___
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev


Re: [Dev] ClassNotFoundException on deserializing a custom message object in Hazelcast

2016-05-11 Thread Asitha Nanayakkara
I raised the question in Hazelcast Gitter community and they got back to me
saying to use the com.hazelcast.config.Config#setClassLoader(...) to set
the requeired class loader as the solution.

Since the issue affects all the users of carbon Hzelcast module we have to
fix this in carbon Hazelcast module.

@Kishanthan I've created a PR [1] with the suggested fix (by Hazelcast) to
add the carbon hazelcast module class loader as the class loader of
hazelcast bundle. Please review and merge.

[1] https://github.com/wso2/carbon-kernel/pull/974

On Tue, May 10, 2016 at 5:13 PM, Asitha Nanayakkara  wrote:

> Hi All,
>
> We came across an issue with Hazelcast topics when passing custom message
> objects (Can occur for Maps and all the other data structures in Hazelcast)
> with C5 Hazelcast module. We have created an issue for this as well [1].
> Use case
>
> I'm working with Hazelcast reliable topics in an OSGi environment. I'm
> using a custom message object with Hazelcast topics ClusterNotification
> 
> .
>
> public class ClusterSubscriptionChangedListener implements 
> MessageListener {
>
> /**
>  * This method is triggered when a subscription is changed in clustered 
> environment.
>  *
>  * @param message contains the ClusterNotification
>  */
> @Override
> public void onMessage(Message message) {
>// message handling logic
> }
>  }
>
> I'm publishing/receiving messages to/from Hazelcast topics from another
> OSGi bundle.
> Issue
>
> I can publish messages to the topic successfully. But I don't receive the
> messages from the listener. This is because, when the Hazelcast topic ring
> buffer runners try to pick the serialized message and de-serialize, it
> throws a ClassNotFoundException. *And the exception is silently ignored*
> and the message never received.
> Root cause
>
> Class loader of the Hazelcast bundle cannot see the classes of my bundle.
> Therefore even though I can publish the message from my bundle, Within
> Hazelcast it can't de-serialize the ClusterNotification
> 
> object since the class loader of Hazelcast bundle cannot see the class.
> Solution, way forward?
>
>
>1. After having an offline discussion with Kishanthan we built the
>hazelcast bundle with *
>in the hazelcast pom.xml
>
>and we successfully received the messages (We didn't get the
>ClassNotFoundException). But we need a fix from Hazelcast.
>2. Another way Hazelcast has provided is to set the class loader for
>the HazelcastInstance. So Internally Hazelcast instance will use the
>provided class loader to deserialize the objects. If we provide our bundle
>class loader it will properly deserialize the object without an issue.
>
>
> @Kishanthan I tried to set the class loader of the carbon-kernel hazelcast
> module to the hazelcast instance (when creating the hazelcast instance[2])
> and added dynamic imports * property (to get the solution 2 working from
> the carbon kernel hazelcast module itself). Still I'm having issues in
> loading the Andes classes thorough the carbon Hazelcast module class
> loader.
> [1] https://github.com/hazelcast/hazelcast/issues/8139
> [2]
> https://github.com/wso2/carbon-kernel/blob/hamming-release-poc/modules/carbon-hazelcast/component/src/main/java/org/wso2/carbon/hazelcast/internal/CarbonHazelcastComponent.java#L60
>
> Regards,
> Asitha
>
> --
> *Asitha Nanayakkara*
> Software Engineer
> WSO2, Inc. http://wso2.com/
> Mob: +94 77 853 0682
>
>


-- 
*Asitha Nanayakkara*
Software Engineer
WSO2, Inc. http://wso2.com/
Mob: +94 77 853 0682
___
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev


[Dev] ClassNotFoundException on deserializing a custom message object in Hazelcast

2016-05-10 Thread Asitha Nanayakkara
Hi All,

We came across an issue with Hazelcast topics when passing custom message
objects (Can occur for Maps and all the other data structures in Hazelcast)
with C5 Hazelcast module. We have created an issue for this as well [1].
Use case

I'm working with Hazelcast reliable topics in an OSGi environment. I'm
using a custom message object with Hazelcast topics ClusterNotification

.

public class ClusterSubscriptionChangedListener implements
MessageListener {

/**
 * This method is triggered when a subscription is changed in
clustered environment.
 *
 * @param message contains the ClusterNotification
 */
@Override
public void onMessage(Message message) {
   // message handling logic
}
 }

I'm publishing/receiving messages to/from Hazelcast topics from another
OSGi bundle.
Issue

I can publish messages to the topic successfully. But I don't receive the
messages from the listener. This is because, when the Hazelcast topic ring
buffer runners try to pick the serialized message and de-serialize, it
throws a ClassNotFoundException. *And the exception is silently ignored*
and the message never received.
Root cause

Class loader of the Hazelcast bundle cannot see the classes of my bundle.
Therefore even though I can publish the message from my bundle, Within
Hazelcast it can't de-serialize the ClusterNotification

object since the class loader of Hazelcast bundle cannot see the class.
Solution, way forward?


   1. After having an offline discussion with Kishanthan we built the
   hazelcast bundle with * in
   the hazelcast pom.xml
    and
   we successfully received the messages (We didn't get the
   ClassNotFoundException). But we need a fix from Hazelcast.
   2. Another way Hazelcast has provided is to set the class loader for the
   HazelcastInstance. So Internally Hazelcast instance will use the provided
   class loader to deserialize the objects. If we provide our bundle class
   loader it will properly deserialize the object without an issue.


@Kishanthan I tried to set the class loader of the carbon-kernel hazelcast
module to the hazelcast instance (when creating the hazelcast instance[2])
and added dynamic imports * property (to get the solution 2 working from
the carbon kernel hazelcast module itself). Still I'm having issues in
loading the Andes classes thorough the carbon Hazelcast module class
loader.
[1] https://github.com/hazelcast/hazelcast/issues/8139
[2]
https://github.com/wso2/carbon-kernel/blob/hamming-release-poc/modules/carbon-hazelcast/component/src/main/java/org/wso2/carbon/hazelcast/internal/CarbonHazelcastComponent.java#L60

Regards,
Asitha

-- 
*Asitha Nanayakkara*
Software Engineer
WSO2, Inc. http://wso2.com/
Mob: +94 77 853 0682
___
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev