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 <asi...@wso2.com>
> 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 <asi...@wso2.com>
>> 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
>>> <https://github.com/wso2/andes/blob/v3.1.5/modules/andes-core/broker/src/main/java/org/wso2/andes/server/cluster/coordination/ClusterNotification.java>
>>> .
>>>
>>> public class ClusterSubscriptionChangedListener implements 
>>> MessageListener<ClusterNotification> {
>>>
>>>     /**
>>>      * This method is triggered when a subscription is changed in clustered 
>>> environment.
>>>      *
>>>      * @param message contains the ClusterNotification
>>>      */
>>>     @Override
>>>     public void onMessage(Message<ClusterNotfication> 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
>>> <https://github.com/wso2/andes/blob/v3.1.5/modules/andes-core/broker/src/main/java/org/wso2/andes/server/cluster/coordination/ClusterNotification.java>
>>> 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 <DynamicImport-Package>*</DynamicImport-Package>
>>>    in the hazelcast pom.xml
>>>    <https://github.com/hazelcast/hazelcast/blob/v3.6/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 <http://kishanthan.wordpress.com>*
> Twitter - *http://twitter.com/kishanthan <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

Reply via email to