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