3 Replies Latest reply: Mar 29, 2013 5:37 PM by Tom B RSS

    Inter-cluster jms communication

    555285
      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
          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
            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
              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.)