10.1.3 cache synchronization using custom RMI code

I am trying to port our custom RMI synchronization code (overriding RMIClusteringService) from 9.0.4 to 10.1.3.
It works by sending an update message to the remote cache whenever an object gets changed on the local cache as follows:
2006.05.15 11:28:38.117--ServerSession(1102039280)--Thread(Thread[RMI TCP Connection(926)-19.39.48.136,5,RMI Runtime])--Received updates from Remote Server
This message then results in a trip to the DB to get the object updates.
Per 10g documentatation, the changed notification should contain the changed attributes (change set) and this should not result in a DB trip for the remote cache. I am not seeing this behavior.
This is probably because I was using the old (9.0.4) sessions file with our custom cache synchronization manager, which overrides toplink cache sync settings, as shown below:
<cache-synchronization-manager>
<clustering-service>
oracle.toplink.remote.rmi.polling.RMIPollingClusteringService
</clustering-service>
<naming-service-url>localhost:1099</naming-service-url>
</cache-synchronization-manager>
<event-listener-class>
oracle.toplink.remote.rmi.polling.RMIPollingClusteringServiceSessionEventAdaptor</event-listener-class>
With 10.1.3 RMIClusteringService is deprecated and replaced by RMITransportManager. A whole bunch of other classes has been added. Has anyone migrated or written RMI custom cache sync code to use RMITransportManager? If so, can they share their experiences and/or send their code samples? Any other thoughts will be appreciated too.
thanks,
Prabodh.

I am trying to port our custom RMI synchronization code (overriding RMIClusteringService) from 9.0.4 to 10.1.3.
It works by sending an update message to the remote cache whenever an object gets changed on the local cache as follows:
2006.05.15 11:28:38.117--ServerSession(1102039280)--Thread(Thread[RMI TCP Connection(926)-19.39.48.136,5,RMI Runtime])--Received updates from Remote Server
This message then results in a trip to the DB to get the object updates.
Per 10g documentatation, the changed notification should contain the changed attributes (change set) and this should not result in a DB trip for the remote cache. I am not seeing this behavior.
This is probably because I was using the old (9.0.4) sessions file with our custom cache synchronization manager, which overrides toplink cache sync settings, as shown below:
<cache-synchronization-manager>
<clustering-service>
oracle.toplink.remote.rmi.polling.RMIPollingClusteringService
</clustering-service>
<naming-service-url>localhost:1099</naming-service-url>
</cache-synchronization-manager>
<event-listener-class>
oracle.toplink.remote.rmi.polling.RMIPollingClusteringServiceSessionEventAdaptor</event-listener-class>
With 10.1.3 RMIClusteringService is deprecated and replaced by RMITransportManager. A whole bunch of other classes has been added. Has anyone migrated or written RMI custom cache sync code to use RMITransportManager? If so, can they share their experiences and/or send their code samples? Any other thoughts will be appreciated too.
thanks,
Prabodh.

Similar Messages

  • Setting up cache synchronization using JMS on Tomcat

    I'm trying to enable cache synchronization using JMS on Tomcat 5.0; Does anyone have any tips on how to do this?

    Configure the TIBCO service to provide a Topic and a TopicConnectionFactory for TopLink to use.
    You will need to register for a pre-login event configured on the session that will configure the JMSClusteringService for the TIBCO service.
    ie.
    JMSClusteringService clusteringService = new JMSClusteringService(event.getSession());
    event.getSession().setClusteringService(clusteringService);
    Hashtable env = new Hashtable();
    env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY , "TIBCOFactoryClassName");
    env.put(javax.naming.Context.PROVIDER_URL, "url");
    env.put(javax.naming.Context.SECURITY_PRINCIPAL, "userName"));
    env.put(javax.naming.Context.SECURITY_CREDENTIALS,"password");
    clusteringService.setInitialContextProperties(env);
    --Gordon                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Build error when using custom error codes

    When I try to build my application using custom error codes I receive the following error:
    Error 1 occurred at Copy in AB_Engine_Copy_Error_Files.vi->AB_Application.lvclass:Copy_Error_Files.vi->AB_Application.lvclass:Copy_Files.vi->AB_Build.lvclass:Build.vi->AB_EXE.lvclass:Build.vi->AB_Engine_Build.vi->AB_Build_Invoke.vi->AB_Build_Invoke.vi.ProxyCaller
    Possible reason(s):
    LabVIEW:  An input parameter is invalid. For example if the input is a path, the path might contain a character not allowed by the OS such as ? or @.
    =========================
    NI-488:  Command requires GPIB Controller to be Controller-In-Charge.
    C:\Program Files\National Instruments\LabVIEW 8.5\user.lib\errors\BPMS-errors.txt
    This only occurs the first time I attempt to build my application. If I build again immediately after receiving the error, everything works fine. My custom error codes were created using the provided editor, and I have included the file in my project. I have also checked the "Copy error codes" box in the advanced build specification settings.

    Hi Donovan,
    The attached project is giving me the error previously discussed. Thanks for your help.
    Attachments:
    BuildError.zip ‏10 KB

  • I need help using customized HTML code for media players in Dreamweaver CC. My client is waiting patiently for this issue to be resolved.

    When I add multiple media players to my web page and upload them online, all four mp3 files begin to play at one time.  I need someone to take me through the steps to create playback controls in the HTML code so that the media players DO NOT play until the viewer clicks the "play button."

    By default, HTML5 videos do not autoplay on page load.
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>HTML5 with Video</title>
    <!--help for older IE browsers-->
    <!--[if lt IE 9]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    </head>
    <style>
    video {
        max-width:100%;
        display:block;
        margin:0 auto;
    </style>
    <body>
    <h2>Use 3 File Types to support all browsers &amp; mobile devices:  MP4, WEBM and OGV.</h2>
    <h3>If needed, use this Online Video Converter
    http://video.online-convert.com/</h3>
    <!--begin video-->
    <video controls poster="Your_poster_image.jpg">
    <!--these are 6 sec sample videos for testing purposes. Replace sample-videos with your own files-->
    <source src="http://techslides.com/demos/sample-videos/small.webm" type="video/webm">
    <source src="http://techslides.com/demos/sample-videos/small.ogv" type="video/ogg">
    <source src="http://techslides.com/demos/sample-videos/small.mp4" type="video/mp4">
    If you're seeing this, you're using an
    outdated browser that doesn't support
    the video tag. </video>
    <!--end video-->
    </body>
    </html>

  • How can i get rulefiles name in  appllication with using custom java code.

    Hi.
    I want to get rulefiles names from analytic service with using java api.
    How can i get rulefiles name. Which api can i use for this issue?

    Hi,
    Use IEssCube.getOlapFileObjects() api to retrieve rule files.
    Insert this code snipid in your code, it will list all the rule files.
    IEssCube cube = olapSvr.getApplication("Sample").getCube("Basic");
    IEssIterator itr = cube.getOlapFileObjects(IEssOlapFileObject.TYPE_RULES);
    IEssBaseObject[] rfs = itr.getAll();
    System.out.println("Rule file count: "+rfs.length);
    for (int i = 0; i < rfs.length; i++) {
         System.out.println("RuleFile"+i+": "+((EssOlapFileObject)rfs).getName());
    you can also list data files and other file objects by changing IEssOlapFileObject.TYPE in getOlapFileObjects()
    Regards
    Rajeev Singh

  • Toplink cache synchronization between two nodes using tomcat

    Hi,
    In our appcation we have two nodes. Using websphere we used to synchronize toplink cache between two nodes. Can we do same thing using tomcat.

    Yes, TopLink implements cache synchronization using JMS or RMI easily, which are not dependent on the server being used - though it JMS especially does require a JMS provider that is accessible from each node.  Cache synchronization is now cache coordination, and is described using JPA properties here:
    http://wiki.eclipse.org/EclipseLink/Examples/JPA/CacheCoordination
    the Toplink cache synchronization/coordination with JMS | EMBARCADEROS seems to be a good read for cache coordination over JMS, but is more aimed at TopLink's sessions.xml configuration.
    Best Regards,
    Chris

  • Distributed Cache synchronization with JMS

    Hello,
    The documentation on Cache Synchronization using JMS lists steps to setting up JMS in the JMSClusteringService but does not list steps as to how to connect or setup connections to the various different servers inorder to synchronize between them. It lists steps for connecting to servers when using RMI but not JMS. Appreciate any additional documentation on doing this in JMS. Many thanks

    JMS, by its nature, provides the connections between the different 'servers'. If all servers connect to the same JMS service then there are no additional actions required to have the 'servers' synchronize.
    --Gordon                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Cache Synchronization

    I am attempting to setup Toplink Cache synchronization using oracle.toplink.remote.rmi.RMIJNDIClusteringService in a clustered environment
    When I launch my server and perform operations I see messages as follows
    Announcement sent from 5ff7180-10598c5d31a--7fff192-168-0-4-381481356
    I configured my session file as follows
    <cache-synchronization-manager>
    <clustering-service>
    oracle.toplink.remote.rmi.RMIJNDIClusteringService
    </clustering-service>
    <naming-service-initial-context-factory-name>
    com.ibm.websphere.naming.WsnInitialContextFactory
    </naming-service-initial-context-factory-name>
    <naming-service-url>iiop://localhost:2809</naming-service-url>
    </cache-synchronization-manager>
    How does Toplink know about the existence of other servers in the cluster ? ( since I do not specify explictly about other members in the cluster in any toplink config file or otherwise)
    How can I ensure that all servers in the cluster are getting synchronized.
    Details
    Toplink version 9.0.4.5
    Application Server : WebSphere 5.0.2
    Thanks
    sk

    We have this setup with the following configuration:
    <cache-synchronization-manager>
    <clustering-service>oracle.toplink.remote.rmi.RMIJNDIClusteringService</clustering-service>
    <multicast-port>6018</multicast-port>
    <multicast-group-address>226.1.2.3</multicast-group-address>
    <is-asynchronous>false</is-asynchronous>
    <should-remove-connection-on-error>true</should-remove-connection-on-error>
    <naming-service-url>iiop://localhost:1900</naming-service-url>
    <naming-service-initial-context-factory>com.ibm.websphere.naming.WsnInitialContextFactory</naming-service-initial-context-factory>
    </cache-synchronization-manager>
    However, all attempts at locating any packets coming across that port have produced no results. Are we missing something?
    The problem we are seeing is that someone is modifying data in one session and another user in another session is not seeing the updates. The problem is intermittent.
    Thanks,
    Dan

  • JMS and Data Cache Synchronization

    We have setup Toplink to do cache synchronization using Tibco JMS. For some reason Toplink connects to JMS using the name "anonymous" in addition to connecting with the user name we specify in the code. Toplink also seems to connect to some queue in addition to the Topic that is mentioned in the code. Does anyone know why Toplink would behave like this?

    would not expect TopLink to connect twice at all. Is it possible that another service from within the ApplicationServer is connecting? I would recommend changing the JNDI location or the service port of the TIBCO JMS service and altering the TopLink JMS Clustering Service URL to reflect this change. Then verify that multiple connections are still being acquired.
    --Gordon

  • JMS & Cache synchronization

    We have setup Toplink to do cache synchronization using Tibco JMS. We are using Tomcat Servlet environment. We are using the pre-login event in Toplink to specify the necessary information required for cache synchronization using JMS. For some reason Toplink connects to JMS using the name "anonymous" in addition to connecting with the user name we specify in the code. Toplink also seems to connect to some queue in addition to the Topic that is mentioned in the code. Does anyone know why Toplink would behave like this?

    Hello,
    TopLink uses JNDI to get the TopicConnectionFactory, and will login using the username/password you have specified. It then calls createTopicConnection() that will use the default userid to get a connection to a Topic, so this could be what you are referring to. The login specified in the cache synch setup is only to access JNDI.
    That said, TopLink does not use a queue that I have ever seen. The source code for the JMSClusteringService is shipped with TopLink and can be used to fill in parts left out of the documentation, as well as allow for customizations. In this case, it would be good to review it to get an understanding of the calls TopLink does to connect. If this does not help, I'd need to see the configuration used to set up cache synchronization.
    Best Regards,
    Chris Delahunt

  • Toplink Cache sync using JMS

    Hi,
    I am using toplink cache synchronization using Orion JMS. While starting the application I get the following erorr message.
    Oracle apps server version is 10.1.2.0.0 toplink 9.0.4.5
    Local Exception Stack:
    Exception [TOPLINK-15016] (OracleAS TopLink - 10g (9.0.4.5) (Build 040930)): oracle.toplink.exceptions.SynchronizationException
    Exception Description: Could not gain access to SynchronizationService class
    Internal Exception: Exception [TOPLINK-15013] (OracleAS TopLink - 10g (9.0.4.5) (Build 040930)): oracle.toplink.exceptions.SynchronizationException
    Exception Description: Could not find JMS Service Topic named: jms/MyCacheSyncTopic
    Internal Exception: javax.naming.NameNotFoundException: jms/MyTopicFactory not found
    at oracle.toplink.exceptions.SynchronizationException.errorGettingSyncService(SynchronizationException.java:139)
    at oracle.toplink.remote.CacheSynchronizationManager.initialize(CacheSynchronizationManager.java:114)
    at oracle.toplink.publicinterface.DatabaseSession.login(DatabaseSession.java:534)
    at oracle.toplink.tools.sessionmanagement.SessionManager.getSession(SessionManager.java:250)
    at oracle.toplink.tools.sessionmanagement.SessionManager.getSession(SessionManager.java:181)
    at com.starkey.cqm.dao.PersistenceService.initializeService(PersistenceService.java:67)
    at com.starkey.cqm.bcs.CQMServiceManager.createService(CQMServiceManager.java:68)
    at com.starkey.cqm.web.util.CQMInitServlet.init(CQMInitServlet.java:40)
    I have made the modifications in sessions.xml as follows
              <cache-synchronization-manager>
                   <clustering-service>oracle.toplink.remote.jms.JMSClusteringService</clustering-service>
                   <jms-topic-connection-factory-name>jms/MyTopicFactory</jms-topic-connection-factory-name>
                   <jms-topic-name>jms/MyCacheSyncTopic</jms-topic-name>     
              </cache-synchronization-manager>
    Changes in JMS xml
    <topic name="MyCacheSyncTopic" location="jms/MyCacheSyncTopic"/>
    <topic-connection-factory
              host="cqtest1"
              port="3702"
              name="Cache Sync Topic Factory"
              location="jms/MyTopicFactory" />
    Has any one encountered this before ?
    Thanks
    Priya

    Hi Steve,
    Servers 1 and 2 may have dropped the connections to 3. One way that this can happen is if at some point an object delta is sent to a target server that does not have the object deployed, or on its classpath. Make sure that log-debug is turned on for the TopLink session. You should see warnings on servers 1 and 2 about the connections being dropped to 3.
    If none of this seems to help or if you can't find the answers from the debug traces then the logs of the three servers would help support in determining where the problem occurred.
    -Mike

  • Error handling for distributed cache synchronization

    Hello,
    Can somebody explain to me how the error handling works for the distributed cache synchronization ?
    Say I have four nodes of a weblogic cluster and 4 different sessions on each one of those nodes.
    On Node A an update happens on object B. This update is going to be propogated to all the other nodes B, C, D. But for some reason the connection between node A and node B is lost.
    In the following xml
    <cache-synchronization-manager>
    <clustering-service>...</clustering-service>
    <should-remove-connection-on-error>true</should-remove-connection-on-error>
    If I set this to true does this mean that the Toplink will stop sending updates from node A to node B ? I presume all of this is transparent. In order to handle any errors I do not have to write any code to capture this kind of error .
    Is that correct ?
    Aswin.

    This "should-remove-connection-on-error" option mainly applies to RMI or RMI_IIOP cache synchronization. If you use JMS for cache synchronization, then connectivity and error handling is provided by the JMS service.
    For RMI, when this is set to true (which is the default) if a communication exception occurs in sending the cache synchronization to a server, that server will be removed and no longer synchronized with. The assumption is that the server has gone down, and when it comes back up it will rejoin the cluster and reconnect to this server and resume synchronization. Since it will have an empty cache when it starts back up, it will not have missed anything.
    You do not have to perform any error handling, however if you wish to handle cache synchronization errors you can use a TopLink Session ExceptionHandler. Any cache synchronization errors will be sent to the session's exception handler and allow it to handle the error or be notified of the error. Any errors will also be logged to the TopLink session's log.

  • Cache Synchronization with JMS and a Message Driven Bean (MDB)

    If I understand correctly, Toplink ueses the following configuration info to find the target to publish its session messages to a JMS server (having its URL as below) which provides the JNDI service that Toplink needs to look up the topic:
    <cache-synchronization-manager>
    <clustering-service> oracle.toplink.remote.jms.mdb.JMSPublishingOnlyClusteringService
    </clustering-service>
    <should-remove-connection-on-error>false</should-remove-connection-on-error>
    <!-- both of the following tags are user specified and must correspond to -->
    <!-- the settings that the user has made, manually, to the JMS Service -->
    <jms-topic-connection-factory-name> jms/TopLinkTopicConectionFactory
    </jms-topic-connection-factory-name>
    <jms-topic-name>jms/TopLinkCacheSynchTopic</jms-topic-name>
    <!-- both of the following tags will be required if OracleAS TopLink -->
    <!-- is not running in the same JVM as the JNDI service that is hosting the JMS Topic -->
    <naming-service-url>ormi://localhost:23791</naming-service-url>
    <naming-service-initial-context-factory> com.evermind.server.rmi.RMIInitialContextFactory </naming-service-initial-context-factory></cache-synchronization-manager>
    The MDB also uses the same JNDI service provided by the JMS server to listen to the topic which is named in the ejb-jar.xml file:
    <enterprise-beans>
    <message-driven>
    <display-name>TopLink clustering MDB</display-name>
    <ejb-name>TopLinkClusteringMDB</ejb-name>
    <ejb-class>com.mycompany.mdb.ClusteringMDB</ejb-class>
    <transaction-type>Container</transaction-type>
    <message-driven-destination> <destination-type>javax.jms.Topic</destination-type>
    </message-driven-destination>
    <env-entry>
    <description>TopLink session name</description>
    <env-entry-name>tl_session_name_for_mdb</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>Employee_Session</env-entry-value>
    </env-entry>
    <resource-ref> <description>description</description>
    <res-ref-name>jms/TopLinkTopicConectionFactory</res-ref-name>
    <res-type>javax.jms.TopicConnectionFactory</res-type>
    <res-auth>Application</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    <resource-env-ref>
    <resource-env-ref-name> jms/TopLinkCacheSynchTopic</resource-env-ref-name>
    <resource-env-ref-type>javax.jms.Topic</resource-env-ref-type> </resource-env-ref>
    </message-driven></enterprise-beans>
    To do this, the EJB container that hosts the above MDB needs to be configured to know where the JMS server is by using the above URL same as in the Toplink sessions.xml file.
    I am not clear that who provides the JNDI service for the Toplink session name lookup used by the MDB:
    // Obtain the Session name configured in the environment variable
    String sessionName = (String) myEnv.lookup(TOPLINK_SESSION_NAME);
    session = SessionManager.getManager().getSession(sessionName);
    so that the MDB can find the currently running Toplink session and communicate with it.
    Can anybody help answer my above question and correct my understandings?
    Many thanks!

    Although TopLink is running in the application server’s VM, the only notable integration points with the server are for JTA and user-defined data sources. All of the work performed to get a session via SessionManager occurs solely within TopLink. When the call is made to retrieve a session, you aren’t getting the ‘active’ session identified by “Employee_Session” that is registered with the application server, rather a new session is created using the definition that exists for “Employee_Session” in sessions.xml.
    When the call ‘session = SessionManager.getManager().getSession(“Employee_Session”)’ is made, the SessionManager simply looks for sessions.xml at the root level of its deployed jars or classpath, then looks for the “Employee_Session” tag within sessions.xml. If a session exists in the file with that name then a TopLink session object is created and returned.
    Note that setting an environment entry as mentioned above simply allows for the session name to be declared dynamically. The call to ‘myEnv.lookup(“tl_session_name_for_mdb”)’ simply asks the bean’s environment for the <env-entry-value> that matches the <env-entry-name>. That string is then used in SessionManager (no different than a hard coded value would be) to identify the session in sessions.xml that is to be loaded.
    I hope this makes sense.

  • 10.1.3 JMS Cache Synchronization on OC4J

    Hi,
    We're using stand-alone OC4j 10.1.3.0 along with TopLink 10.1.3.0 (packaged with OC4j). In enabling JMS cache synchronization, I get the following error message:
    Exception [TOPLINK-12000] (Oracle TopLink - 10g Release 3 (10.1.3.0.0) (Build 060118)): oracle.toplink.exceptions.CommunicationException
    Exception Description: Error Sending connection service to jms/Topic/ToplinkCacheSync.
    Internal Exception: javax.jms.JMSException: TopicSubscriber[Oc4jJMS.Consumer.arkansas.6e2ec2b0:1117159d1ca:-7fff.65,Topic[ToplinkCacheSync],null,null,false]: cannot invoke method "setMessageListener" within the J2EE container.
    at oracle.toplink.exceptions.CommunicationException.errorSendingConnectionService(CommunicationException.java:40)
    at oracle.toplink.remote.CacheSynchronizationManager.addRemoteConnection(CacheSynchronizationManager.java:175)
    at oracle.toplink.remote.jms.JMSClusteringService.retreiveRemoteSessions(JMSClusteringService.java:198)
    at oracle.toplink.remote.jms.JMSClusteringService.run(JMSClusteringService.java:175)
    Caused by: javax.jms.JMSException: TopicSubscriber[Oc4jJMS.Consumer.arkansas.6e2ec2b0:1117159d1ca:-7fff.65,Topic[ToplinkCacheSync],null,null,false]: cannot invoke method "setMessageListener" within the J2EE container.
    at com.evermind.server.jms.JMSUtils.make(JMSUtils.java:1034)
    at com.evermind.server.jms.JMSUtils.toJMSException(JMSUtils.java:1114)
    at com.evermind.server.jms.JMSUtils.toJMSException(JMSUtils.java:1085)
    at com.evermind.server.jms.JMSUtils.assertNotContainer(JMSUtils.java:1500)
    at com.evermind.server.jms.EvermindMessageConsumer.setMessageListener(EvermindMessageConsumer.java:217)
    at oracle.toplink.remote.jms.JMSClusteringService.connectBackToRemote(JMSClusteringService.java:53)
    at oracle.toplink.remote.CacheSynchronizationManager.addRemoteConnection(CacheSynchronizationManager.java:168)
    ... 2 more
    It is, therefore, my assumption that Toplink is using JMS 1.0.2b while OC4J is using JMS 1.1. Who can:
    1) Verify or debunk my assumption?
    2) Point me to a work-around?
    Perhaps my config is incorrect? Here's a sessions.xml snippet, in case it helps:
    <cache-synchronization-manager>
    <clustering-service xsi:type="jms-clustering">
    <naming-service-url>ormi://localhost:23791/ems</naming-service-url>
    <jndi-user-name>oc4jadmin</jndi-user-name>
    <jndi-password>oc4j</jndi-password>
    <naming-service-initial-context-factory-name>com.evermind.server.rmi.RMIInitialContextFactory</naming-service-initial-context-factory-name>
    <jms-topic-connection-factory-name>jms/Topic/ToplinkCacheSyncConnectionFactory</jms-topic-connection-factory-name>
    <jms-topic-name>jms/Topic/ToplinkCacheSync</jms-topic-name>
    </clustering-service>
    <remove-connection-on-error>false</remove-connection-on-error>
    </cache-synchronization-manager>
    Many thanks in advance,
    --Todd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    Thank you very much for your contribution! Yes, indeed, that was my main issue. A sessions.xml section that looks like the following (instead of the <cache-synchronization-manager> section above) does fix the problem:
    <remote-command>
    <commands>
    <cache-sync>true</cache-sync>
    </commands>
    <transport xsi:type="jms-topic-transport">
    <topic-host-url>ormi://localhost:23791/ems</topic-host-url>
    <topic-connection-factory-name>jms/Topic/ToplinkCacheSyncConnectionFactory</topic-connection-factory-name>
    <topic-name>jms/Topic/ToplinkCacheSync</topic-name>
    <jndi-naming-service>
    <user-name>oc4jadmin</user-name>
    <password>oc4j</password>
    <initial-context-factory-name>com.evermind.server.rmi.RMIInitialContextFactory</initial-context-factory-name>
    </jndi-naming-service>
    </transport>
    </remote-command>
    Thanks again,
    --Todd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Distributed Cache Synchronization

    I'm trying to implement distributed cache synchronization via RMI but I find the documentation to be very limited on how to do this. I'm doing exactly what the documentation says and I end up with a CommunicationException when trying to connect to the pre-existing session. The toplink docs are not very descriptive about the cause or meaning of CommunicationException.
    Also, this is in toplink 3.6 which I know is old, but comparing it with the new oracle versions the requirements for DCS are almost identical.
    Here is the code I'm trying to use:
              RMIRemoteSessionController controller = (RMIRemoteSessionController)Naming.lookup(registryName);
              RemoteConnection connection = new RMIConnection(controller);
              CacheSynchronizationManager syncMgr = new CacheSynchronizationManager();
              serverSession.setCacheSynchronizationManager(syncMgr);
              serverSession.getCacheSynchronizationManager().addRemoteConnection(connection);
    Here is the stack trace I'm seeing:
    18:53:01,146 DEBUG OEDataEntry - OEDataEntry - - EXCEPTION [TOPLINK-0] (3.6.2 JDK1.2): TOPLink.Public.Remote.CommunicationException
    18:53:01,146 DEBUG OEDataEntry - OEDataEntry - - EXCEPTION DESCRIPTION: Error Sending connection service to
    18:53:01,156 DEBUG OEDataEntry - OEDataEntry - - INTERNAL EXCEPTION: java.lang.ClassCastException
    18:53:01,166 DEBUG OEDataEntry - OEDataEntry - -      at TOPLink.Public.Remote.CacheSynchronizationManager.addRemoteConnectionForSynchronization(CacheSynchronizationManager.java:84)
    18:53:01,166 DEBUG OEDataEntry - OEDataEntry - -      at TOPLink.Public.Remote.CacheSynchronizationManager.addRemoteConnection(CacheSynchronizationManager.java:68)

    Also, if someone could provide me with a complete example of how to implement distributed cache synchronization via RMI that would be helpful too, the docs are very sparse on this.
    Basically what I'm trying to do is this: I have a web application that uses toplink to connect to a database. I have a separate application that also uses toplink to connecto the database that runs outside the application. The external app can update tables that the web application uses, I would like the web application to have it's cache updated when the external app changes something in those tables. It is my understanding that this is what distributed cache synchronization is for. How do I use it?

Maybe you are looking for

  • Error with VO populated programmatically

    Hi, I have a view object with rows populated programmatically: This VO has a view criteria with some parameters. I've tested VO running app. module and is Ok. However, when I use the datacontrol to build a query with table and run the app. I obtain t

  • BRF plus and ABAP

    Hello Experts ,         I am passing data from ABAP to BRF plus and i am retrieving the equipment id ( Result )         Do i need to create a seperate master data form Equipment details in BRF plus ,or can i refer         them from already existing m

  • Test account for developers

    Hello, I'm interested in developing an application that allows users to create and post content directly to an iTunes U site. Is there a way to get a test or temporary site setup for testing content uploads? Thanks. Jim-

  • When curser is on hyper link the url will diplay on the bottom of the screen in the background.(where done is located when site is loaded) How do you control this function?

    When curser is on hyper link the URL will display on the bottom of the screen in the background.(where done is located when site is loaded) How do you control this function?

  • Pick selection list generation - srs

    EBS R12 OS Linux I am submitted the program "pick selection list generation - srs", by using the fnd_submit API, this is supposed to pick the Sales Order and Release the Sales Order. Program is getting completed successfully, but is not picking the S