Hi Fabien,

The subscribeFromPeer() method is invoked when a subscription is added or 
removed on a peer server in the cluster that this server may need to know 
about. The NPE is happening because the destination that the subscription was 
added to or removed from doesn't exist on the current server.

Verify that your servers are both starting up correctly and that your 
destinations are fully symmetric.

Best,
Seth

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of 
fabien.deshayes
Sent: Thursday, September 18, 2008 5:30 AM
To: [email protected]
Subject: [flexcoders] BlazeDS clustering


Hello,

I'm trying to install a cluster with BlazeDS. After some difficulties,
I've reached a point where my 2 servers A and B know each other, and
that when a client subscribe on a destination on server A, this server
send a message to the server B.
Unfortunately, this does not work and I've got this error:

--------------------------------
[BlazeDS]09/18/2008 [ERROR] [Service.Cluster] Error handling message
pushed from cluster: java.lang.NullPointerException
[BlazeDS]09/18/2008 [ERROR] [Service.Cluster]
Exception=java.lang.NullPointerException
at
flex.messaging.services.MessageService.subscribeFromPeer(MessageService.java:747)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
flex.messaging.cluster.JGroupsCluster$ServiceOperationHandler.handleBroadcast(JGroupsCluster.java:538)
at flex.messaging.cluster.JGroupsCluster.handle(JGroupsCluster.java:417)
at
org.jgroups.blocks.MessageDispatcher.handle(MessageDispatcher.java:577)
at
org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:624)
at
org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:533)
at
org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:365)
at
org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:736)
at org.jgroups.JChannel.up(JChannel.java:1063)
at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:325)
at org.jgroups.protocols.pbcast.GMS.up(GMS.java:722)
at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:234)
at org.jgroups.protocols.pbcast.NAKACK.handleMessage(NAKACK.java:720)
at org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:546)
at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:167)
at org.jgroups.protocols.FD.up(FD.java:322)
at org.jgroups.protocols.MERGE2.up(MERGE2.java:145)
at org.jgroups.protocols.Discovery.up(Discovery.java:220)
at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1486)
at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1440)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

[Incoming Thread,default-cluster,10.193.137.195:7800] ERROR
org.jgroups.blocks.RequestCorrelator - error invoking method
flex.messaging.cluster.ClusterException: Unable to replicate a service
operation received from a broadcast on cluster id 'default-cluster'.
at
flex.messaging.cluster.JGroupsCluster$ServiceOperationHandler.handleBroadcast(JGroupsCluster.java:552)
at flex.messaging.cluster.JGroupsCluster.handle(JGroupsCluster.java:417)
at
org.jgroups.blocks.MessageDispatcher.handle(MessageDispatcher.java:577)
at
org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:624)
at
org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:533)
at
org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:365)
at
org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:736)
at org.jgroups.JChannel.up(JChannel.java:1063)
at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:325)
at org.jgroups.protocols.pbcast.GMS.up(GMS.java:722)
at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:234)
at org.jgroups.protocols.pbcast.NAKACK.handleMessage(NAKACK.java:720)
at org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:546)
at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:167)
at org.jgroups.protocols.FD.up(FD.java:322)
at org.jgroups.protocols.MERGE2.up(MERGE2.java:145)
at org.jgroups.protocols.Discovery.up(Discovery.java:220)
at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1486)
at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1440)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
--------------------------------

The destination is dynamically created, with these lines:

--------------------------------
MessageService service = getService();
MessageDestination destination = (MessageDestination)
service.getDestination(destinationId);

// set the cluster config
ServerSettings serverSettings = new ServerSettings();
serverSettings.setBroadcastRoutingMode("server-to-server");

NetworkSettings netSettings = new NetworkSettings();
netSettings.setClusterId("default-cluster");

if (destination == null) {
destination = (MessageDestination)
service.createDestination(destinationId);
}

destination.setServerSettings(serverSettings);
destination.setNetworkSettings(netSettings);

if (service.isStarted()) {
destination.start();
}
--------------------------------

Also I do not see any activity on the other destination I have created
with xml configuration files. Here is it:

--------------------------------
<destination id="user-destination">
<properties>
<network>
<session-timeout>0</session-timeout>
<cluster ref="default-cluster" shared-backend="true"/>
</network>
<server>
<max-cache-size>1000</max-cache-size>
<message-time-to-live>0</message-time-to-live>
<durable>false</durable>
<cluster-message-routing>server-to-server</cluster-message-routing>
</server>
</properties>
</destination>
--------------------------------

I am using BlazeDS 3.0.0.544 with JGroup 2.5.1. I have a hardware
load-balancer in front of my 2 servers.
I have googled some good tutorials or examples about BlazeDS
clustering but the only source I've found is the BlazeDS Guide, which
does not really help me. If someone can help me, it will be great.

Thanks in advance,
Fabien

PS: sorry if there is some mistake in my english... :).


Reply via email to