This discussion is archived
3 Replies Latest reply: Mar 29, 2013 3:37 PM by Tom B RSS

Inter-cluster jms communication

555285 Newbie
Currently Being Moderated
Hello all,

Please help us with recommendations how to implement this.
We have a weblogic 12c clustered environment, in which we have 2 clusters defined, each of them having 2 managed servers inside.Our application uses oracle toplink as persistence system and is deployed in this system.
We need to enable toplink cache syncronization for all these 4 nodes, so that an entity change on one instance should be visible on all the other instances, even if the change happened in server 1 from cluster 1, the change should be visible also on both servers on cluster 2.
We have managed to get the communication using jms topic/factory INSIDE the same cluster but need your help on how to make it work inter cluster.
The sessions.xml for toplink looks like this

<session xsi:type="server-session">
<name>session_psr</name>
<remote-command>
<commands>
<cache-sync>true</cache-sync>
</commands>
<transport xsi:type="jms-topic-transport">
<on-connection-error>KeepConnection</on-connection-error>
<topic-host-url>t3://ourapplication-1.us.oracle.com:7001</topic-host-url>
<topic-connection-factory-name>jms/OurApplicationJMSConnectionFactoryLocal</topic-connection-factory-name>
<topic-name>jms/OurApplicationEntityChangeTopicLocal</topic-name>
<jndi-naming-service/>
</transport>
</remote-command>
.....
</session>

On ourapplication-1.us.oracle.com we have defined the topic and the factory with the jndi names from session.xml
But now when one change happens on ourapplication-4 instance, which on Cluster 2, we get this error

On PSR environment we have 2 separate cluster and this solution did not work in this way over 2 separate cluster.
When you make a modification on Server 4(which is in cluster 2) I receive the following error:

[EL Warning]: 2013-03-29 10:16:26.221--ServerSession(645505621)--Exception [EclipseLink-22112] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.RemoteCommandManagerException
Exception Description: Could not create local JMS connection with Topic jms/OurApplicationEntityChangeTopicLocal and Topic Factory jms/OurApplicationJMSConnectionFactoryLocal. Also, check your context properties are set correctly.

Thank you for help

Ruxandra
  • 1. Re: Inter-cluster jms communication
    Tom B Expert
    Currently Being Moderated
    Hi,

    You may want to also try posting to a toplink forum. I'm not familiar with toplink's support for multiple cluster synchronization (does toplink support this in the first place?), or even with toplink in general, and I suspect most folks that monitor this forum may be in a similar boat.

    That said, the problem could be that you need to configure a username and password, or that you have a bad URL, CF name, or topic name -- or perhaps that you're working with multiple domains and these are configured incorrectly with duplicate domain names. Do you have any stack traces or or any other details associated with the log message? Presumably toplink provides more information in a log somewhere.

    Tom

    PS. I suspect you may work for Oracle since you use the abbreviation "PSR" and the URL "t3://ourapplication-1.us.oracle.com"). If so, I can probably find someone that can work with you directly - either from TopLink or WebLogic -- look up "Tom Barnes" in Aria to find me. :-)
  • 2. Re: Inter-cluster jms communication
    555285 Newbie
    Currently Being Moderated
    Hello Tom,

    Thank you for such quick reply.
    I will post on the toplink forum as well.

    Meanwhile, as it all reduces to inter cluster communication for JMS, should I use a JMS bridge or even SAF?

    Thank you

    Ruxandra
  • 3. Re: Inter-cluster jms communication
    Tom B Expert
    Currently Being Moderated
    Meanwhile, as it all reduces to inter cluster communication for JMS, should I use a JMS bridge or even SAF?
    This is all just guess work. I don't know the answer for sure, although I somewhat doubt that bridges would be optimal or that SAF applies. If your goal is to synchronize two distributed topics then I assume a good simple/scalable/no-SPF solution might be to write your own MDB that consumes from the remote topic using the MDB topic-message-distribution-mode of one-copy-per-app, and then forwards to the local topic. (I'm assuming toplink isn't compatible with "partitioned" distributed topics.)

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points