JMS Exception during cache synchronization

Hi,
I am using JMS cache synchronization fro two applications . During cache synchronization I got this exception
Local Exception Stack:
Exception [TOPLINK-0] (OracleAS TopLink - 10g (9.0.4.5) (Build 040930)): oracle.toplink.exceptions.CommunicationException
Exception Description: javax.jms.JMSException: enqMessage at oracle.toplink.remote.jms.JMSConnection.processCommand(JMSConnection.java:54) at oracle.toplink.internal.remote.ChangeSetPropagator$1.run(ChangeSetPropagator.java:64)
Has this something to do with the message size ?
Appreciate any help.
Thanks
Priya

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

Similar Messages

  • Exception during client synchronization in Mobile 7.1

    Hello,
    We are working with Mobile 7.1. We changed one of the records from the client side in the table M45NOTIFICATION (the automatically created table for NOTIFICATION Data Object). During the synchronization with the DOE, the changes passed successfully and the record was updated in the backend.
    On the next synchronization the DOE tried to pass the feedback to the client but the exception was thrown. When we checked the trace file on the client, we found that the program was trying to perform SELECT from the table that doen't exist - M33NOTIFICATION instead of M45NOTIFICATION!
    Please, see the trace attached below.
    <r id="1228227880372" t="16:24:40" d="2008-12-02" s="E" c="000" u="" g="" m="SELECT M33NOTIFICATION.&quot;SYNCSTATE&quot;,M33NOTIFICATION.&quot;TXID&quot;,M33NOTIFICATION.&quot;PREVTXID&quot; FROM M33NOTIFICATION WHERE M45NOTIFICATION.&quot;SYNCKEY_MMW&quot; = 00155D1E651E1DEDB08F1206C9EE5F0E --&gt; com.sap.dbtech.jdbc.exceptions.DatabaseException: [-4004] (at 91): Unknown table name:M33NOTIFICATION
         at com.sap.dbtech.jdbc.packet.ReplyPacket.createException(ReplyPacket.java:63)
         at com.sap.dbtech.jdbc.ConnectionSapDB.throwSQLError(ConnectionSapDB.java:953)
         at com.sap.dbtech.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:593)
         at com.sap.dbtech.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:461)
         at com.sap.dbtech.jdbc.StatementSapDB.sendCommand(StatementSapDB.java:820)
         at com.sap.dbtech.jdbc.StatementSapDB.sendSQL(StatementSapDB.java:884)
         at com.sap.dbtech.jdbc.StatementSapDB.execute(StatementSapDB.java:259)
         at com.sap.dbtech.jdbc.StatementSapDB.executeQuery(StatementSapDB.java:413)
         at com.sap.dbtech.jdbc.trace.Statement.executeQuery(Statement.java:80)
         at com.sap.tc.mobile.cfs.pers.jdbc.spi.Database.doExecuteQuery(Database.java:574)
         at com.sap.tc.mobile.cfs.pers.jdbc.core.JDBCPersistenceSink.executeQuery(JDBCPersistenceSink.java:1138)
         at com.sap.tc.mobile.cfs.pers.jdbc.core.JDBCPersistenceSink.executeQuery(JDBCPersistenceSink.java:381)
         at com.sap.tc.mobile.cfs.pers.cache.DefaultPersistenceManager.executeQuery(DefaultPersistenceManager.java:2162)
         at com.sap.tc.mobile.cfs.pers.cache.DefaultPersistenceManager.executeQuery(DefaultPersistenceManager.java:2385)
         at com.sap.tc.mobile.cfs.mbosync.InboundProcessor.loadMBONodeData(InboundProcessor.java:846)
         at com.sap.tc.mobile.cfs.mbosync.InboundConfirmationProcessor.finishNodeLocal(InboundConfirmationProcessor.java:342)
         at com.sap.tc.mobile.cfs.mbosync.InboundProcessor.finishNode(InboundProcessor.java:480)
         at com.sap.tc.mobile.cfs.mbosync.MBOInboundMessageProcessor$XmlContentHandler.endElement(MBOInboundMessageProcessor.java:625)
         at com.sap.tc.mobile.cfs.xml.api.MIXMLParser$ElementParser.parse(Unknown Source)
         at com.sap.tc.mobile.cfs.xml.api.MIXMLParser.parseInternal(Unknown Source)
         at com.sap.tc.mobile.cfs.xml.api.MIXMLParser.parse(Unknown Source)
         at com.sap.tc.mobile.cfs.mbosync.MBOInboundMessageProcessor.messageReceived(MBOInboundMessageProcessor.java:202)
         at com.sap.tc.mobile.cfs.sync.SyncManagerImpl.callInboundMessageProcessor(SyncManagerImpl.java:1854)
         at com.sap.tc.mobile.cfs.sync.SyncManagerImpl.callInboundMessageProcessor(SyncManagerImpl.java:1837)
         at com.sap.tc.mobile.cfs.sync.SyncManagerImpl.processOutStandingMessages(SyncManagerImpl.java:393)
         at com.sap.tc.mobile.cfs.sync.synchronizer.http.HttpSynchronizer.syncOnce(HttpSynchronizer.java:724)
         at com.sap.tc.mobile.cfs.sync.synchronizer.http.HttpSynchronizer.synchronize(HttpSynchronizer.java:600)
         at com.sap.tc.mobile.cfs.sync.SyncManagerImpl.synchronizeOnce(SyncManagerImpl.java:619)
         at com.sap.tc.mobile.cfs.sync.SyncManagerImpl.synchronize(SyncManagerImpl.java:451)
         at com.sap.tc.mobile.cfs.sync.spi.SyncManagerSPI.synchronize(SyncManagerSPI.java:693)
         at com.sap.tc.mobile.cfs.sync.spi.SyncManagerSPI.synchronizeStart(SyncManagerSPI.java:675)
         at com.sap.tc.mobile.cfs.sync.spi.impl.SyncCoordinator.startSync(SyncCoordinator.java:138)
         at com.sap.tc.mobile.mwd.laptop.container.SyncProgress$SyncThread.run(SyncProgress.java:567)
         at java.lang.Thread.run(Unknown Source)
    ">
    <f n="ThreadName" v="Thread-49"/>
    </r>
    <r id="1228227880373" t="16:24:40" d="2008-12-02" s="E" c="000" u="" g="" m="Error while processing inbound message of type 00155D1E651E1DEDAFF171D112C07F0E with id 678 and message content &quot;&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&lt;Msg type=&quot;C&quot; id=&quot;3346&quot;&gt;&lt;NOTIFICATION C3=&quot;SERGEY TEST&quot; C0=&quot;00155D1E651E1DEDB08F1206C9EE5F0E&quot; ty=&quot;U&quot; tv=&quot;00155D1E651E1DEDB08F8C1F85573F0E&quot;/&gt;&lt;/Msg&gt;&quot; --&gt; com.sap.tc.mobile.cfs.pers.jdbc.spi.JDBCException: SQL Exception with message: [-4004] (at 91): Unknown table name:M33NOTIFICATION / State: 42000 / ErrorCode: -4004
         at com.sap.tc.mobile.cfs.pers.jdbc.core.JDBCPersistenceSink.executeQuery(JDBCPersistenceSink.java:1156)
         at com.sap.tc.mobile.cfs.pers.jdbc.core.JDBCPersistenceSink.executeQuery(JDBCPersistenceSink.java:381)
         at com.sap.tc.mobile.cfs.pers.cache.DefaultPersistenceManager.executeQuery(DefaultPersistenceManager.java:2162)
         at com.sap.tc.mobile.cfs.pers.cache.DefaultPersistenceManager.executeQuery(DefaultPersistenceManager.java:2385)
         at com.sap.tc.mobile.cfs.mbosync.InboundProcessor.loadMBONodeData(InboundProcessor.java:846)
         at com.sap.tc.mobile.cfs.mbosync.InboundConfirmationProcessor.finishNodeLocal(InboundConfirmationProcessor.java:342)
         at com.sap.tc.mobile.cfs.mbosync.InboundProcessor.finishNode(InboundProcessor.java:480)
         at com.sap.tc.mobile.cfs.mbosync.MBOInboundMessageProcessor$XmlContentHandler.endElement(MBOInboundMessageProcessor.java:625)
         at com.sap.tc.mobile.cfs.xml.api.MIXMLParser$ElementParser.parse(Unknown Source)
         at com.sap.tc.mobile.cfs.xml.api.MIXMLParser.parseInternal(Unknown Source)
         at com.sap.tc.mobile.cfs.xml.api.MIXMLParser.parse(Unknown Source)
         at com.sap.tc.mobile.cfs.mbosync.MBOInboundMessageProcessor.messageReceived(MBOInboundMessageProcessor.java:202)
         at com.sap.tc.mobile.cfs.sync.SyncManagerImpl.callInboundMessageProcessor(SyncManagerImpl.java:1854)
         at com.sap.tc.mobile.cfs.sync.SyncManagerImpl.callInboundMessageProcessor(SyncManagerImpl.java:1837)
         at com.sap.tc.mobile.cfs.sync.SyncManagerImpl.processOutStandingMessages(SyncManagerImpl.java:393)
         at com.sap.tc.mobile.cfs.sync.synchronizer.http.HttpSynchronizer.syncOnce(HttpSynchronizer.java:724)
         at com.sap.tc.mobile.cfs.sync.synchronizer.http.HttpSynchronizer.synchronize(HttpSynchronizer.java:600)
         at com.sap.tc.mobile.cfs.sync.SyncManagerImpl.synchronizeOnce(SyncManagerImpl.java:619)
         at com.sap.tc.mobile.cfs.sync.SyncManagerImpl.synchronize(SyncManagerImpl.java:451)
         at com.sap.tc.mobile.cfs.sync.spi.SyncManagerSPI.synchronize(SyncManagerSPI.java:693)
         at com.sap.tc.mobile.cfs.sync.spi.SyncManagerSPI.synchronizeStart(SyncManagerSPI.java:675)
         at com.sap.tc.mobile.cfs.sync.spi.impl.SyncCoordinator.startSync(SyncCoordinator.java:138)
         at com.sap.tc.mobile.mwd.laptop.container.SyncProgress$SyncThread.run(SyncProgress.java:567)
         at java.lang.Thread.run(Unknown Source)
    Caused by: com.sap.dbtech.jdbc.exceptions.DatabaseException: [-4004] (at 91): Unknown table name:M33NOTIFICATION
         at com.sap.dbtech.jdbc.packet.ReplyPacket.createException(ReplyPacket.java:63)
         at com.sap.dbtech.jdbc.ConnectionSapDB.throwSQLError(ConnectionSapDB.java:953)
         at com.sap.dbtech.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:593)
         at com.sap.dbtech.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:461)
         at com.sap.dbtech.jdbc.StatementSapDB.sendCommand(StatementSapDB.java:820)
         at com.sap.dbtech.jdbc.StatementSapDB.sendSQL(StatementSapDB.java:884)
         at com.sap.dbtech.jdbc.StatementSapDB.execute(StatementSapDB.java:259)
         at com.sap.dbtech.jdbc.StatementSapDB.executeQuery(StatementSapDB.java:413)
         at com.sap.dbtech.jdbc.trace.Statement.executeQuery(Statement.java:80)
         at com.sap.tc.mobile.cfs.pers.jdbc.spi.Database.doExecuteQuery(Database.java:574)
         at com.sap.tc.mobile.cfs.pers.jdbc.core.JDBCPersistenceSink.executeQuery(JDBCPersistenceSink.java:1138)
         ... 23 more
    ">
    <f n="ThreadName" v="Thread-49"/>
    </r>
    <r id="1228227880374" t="16:24:40" d="2008-12-02" s="E" c="000" u="" g="" m="Message processing failed, please consult administrator">
    <f n="SourceName" v=" [/CFS/Sync]"/>
    <f n="LocationName" v=" (com.sap.tc.mobile.cfs.sync.api.SyncManager:postMessage)"/>
    <f n="ThreadName" v="Thread-49"/>
    </r>
    Why does the program refer to the unexistinf table?
    Waiting for your help,
    Sergey

    Hi,
    Do you have more than one application which uses the same data object(NOTIFICATION) and backend tables?
    If yes when you changed the data in M45NOTIFICATION, the backend table also got updated, now when the confirmation comes from the backend it is trying to update all the notification tables on the client.
    You can deactivate the rule for the any other applications other than the one you are updating for NOTIFICATION and try again.
    Hope this helps.
    Thanks and Regards,
    Narayani

  • 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 Manager

    Hi all,
    I am trying to implement distributed cache synchronization in TopLink using JMS.
    On http://download-west.oracle.com/docs/cd/A97688_12/toplink.903/b10064/enterpri.htm#1022254 , there is an example given which has a snippet of the sessions.xml file.
    The example snippet shows a tag <naming-service-initial-context-factory> under the <cache-synchronization-manager> tag. But on the DTD given on http://download-west.oracle.com/docs/cd/A97688_12/toplink.903/b10064/a-sessio.htm#634251 , I cant find an element <naming-service-initial-context-factory>. Please let me know which one is wrong - the DTD or the example?
    Also, I tried to use JMS for distributed cache synchronization. My JMS Server is running on a seperate VM and I have configured info about it in the sessions.xml file. But TopLink is complaining that it cannot find the top and connection factory. Yet, I am able to look them up from a standalone program.
    Does anyone have any experience setting this up? Any examples?
    Thanks,
    Binil

    Hi Doug,
    Thanks for the clarifications! :)
    I am not able to get the JMS Cache Synchronization work still :( I am new to JMS & Toplink - so I will try to explain what I am doing and please let me know if there is something I am doing wrong.
    I have an EJB application which is a Stateless Session bean which has two methods : one to fetch an entity and another to update an entity. Also, I have a weblogic domain in which I have three managed servers - appServerOne, appServerTwo and jmsServer. On appServerOne and appServerTwo I have deployed the above mentioined application. On jmsServer, I have configured my ConnectionFactory and Topic and the JNDI names of those are provided to the EJB application.
    With this setup, I run two client programs. I will list the steps below:
    1. Client1 fetches an entity whereby it is loaded to the TopLink cache. The DB logs show that a SELECT query is issued to the DB.
    2. Client2 fetches the same entity whereby it is loaded to the cache; again a SELECT query is issued.
    3. Client1 updates that entity using UOW; the logs dont show a DB UPDATE statement though. But the updates are indeed made to the DB when I check them.
    4. Client1 fetches the entity again; the updates are visible and the JDBC logs show that a trip to the DB is not done.
    5. After waiting for sometime Client1 fetches the same entity again and I get the stale data! :(
    I have enabled logging, so I am hoping that TopLink will log a message when a JMS notification is posted. Also, I have made the cache synchronization synchronous, so that the transaction shouldnt commit before the notification being send.
    I tried making the stateless session bean stateful and it still didnt work. Is there anything I need to do.
    Cheerio,
    Binil

  • Cache Synchronization Exception Handling

    I am setting up cache synchronization on WebLogic using JMS. I am looking into writing an exception handler to handle cache synchronization exceptions. The following statement in the documentation caught my attention:
    “As mentioned above, the TopLink cache does not begin the merge or update process until the database transaction has already been committed. This is quite beneficial in that it avoids letting uncommitted data into the shared cache, but should be recognized where transactional synchronization is considered. In cases where a merge may have failed there is no way to roll back the changes made to the database (although it is questionable whether this would be a good idea in any case). As a consequence, failures during remote merging can leave the cache in an inconsistent state. This makes it important to handle any errors that occur by performing cache normalization actions, such as resetting the cache, or even the server.”
    Suppose we have two app server instances, A and B. Instance A commits a change and sends the update notification to instance B. The merge fails on instance B with an optimistic lock exception.
    - I assume that a CacheSynchronizationException will be thrown. Will it be thrown on instance A, B, or both?
    - At this point which cache is inconsistent; A, B, or both?
    - The documentation suggests resetting the cache, but this seems a rather severe way of dealing with the problem. Is it feasible / effective to just refresh the objects in the change set of the CacheSynchronizationException?
    This is a simple exception handler. On receiving a CacheSynchronizationException it resets the cache and re-throws the exception.
    class ToplinkExceptionHandler implements ExceptionHandler{
         public Object handleException(RuntimeException exception) throws DatabaseException{
              if(exception instanceof CacheSynchronizationException){){
                   myServerSession.initializeAllIdentityMaps();
                   throw exception;
              }else{
                   throw exception;
    - Is this approach effective?
    - Once the cache is reset should the exception be re-thrown or should I consider it handled and swallow it? If I do swallow it what should the method return?
    Any advice would be appreciated.

    I had to fix a few errors (in our code) before getting it working. Since I have multiple sessions, I had to specify different multicast ports (actually I used a different multicast address itself) for each of the sessions. I was not setting the announcement delay on one of the sesssions and that was why it was announcing immediately upon coming up. Also I had to explicitly set asynchronous to false because it is true by default.
    BTW, we are not using CMP (entity beans) rather Java Objects. Our deployment has two Apache/Tomcat machines and two WebLogic machines. The WebLogic servers are in a round-robin cluster. The cache synchronization seems to be working fine for this configuration.
    Thanks.
    Anand R

  • 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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Exception [TOPLINK-18001] (Cache synchronization)

    Hi,
    While trying to turn on cache synchronization, getting this exception (see below).
    What could be wrong?
    Interne Exception: weblogic.jms.common.JMSException: Error deserializing objec
         at oracle.toplink.exceptions.JMSProcessingException.buildDefault(JMSProcessingException.java:20
         at oracle.toplink.remote.jms.TopLinkMessageListener.onMessage(TopLinkMessageListener.java:60
         at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596
         at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516
         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197
         at weblogic.kernel.Kernel.execute(Kernel.java:336
         at weblogic.kernel.Kernel.execute(Kernel.java:360
         at weblogic.kernel.Kernel.execute(Kernel.java:348
         at weblogic.jms.client.JMSSession.pushMessage(JMSSession.java:2392
         at weblogic.jms.client.JMSSession.invoke(JMSSession.java:2919
         at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:609
         at weblogic.jms.dispatcher.DispatcherImpl.dispatchAsyncInternal(DispatcherImpl.java:128
         at weblogic.jms.dispatcher.DispatcherImpl.dispatchOneWay(DispatcherImpl.java:312
         at weblogic.jms.dispatcher.DispatcherImpl_WLSkel.invoke(Unknown Source
         at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:466
         at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:409
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144
         at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:404
         at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30
         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170
    Please help!
    THX.

    Hi Gordon,
    Sorry i don't know what class.
    The Excpetion string don't give more information
    BEA-040368 14.06.2005 14.36 Uhr IRST Error JMS The following exception has occurred:
    Lokaler Exception-Stack:
    Exception [TOPLINK-18001] (OracleAS TopLink - 10g (9.0.4.5) (Build 040930)): oracle.toplink.exceptions.JMSProcessingExceptio
    Exception-Beschreibung: Fehler bei der Verarbeitung von ankommender JMS-Meldun
    Interne Exception: weblogic.jms.common.JMSException: Error deserializing objec
         at oracle.toplink.exceptions.JMSProcessingException.buildDefault(JMSProcessingException.java:20
         at oracle.toplink.remote.jms.TopLinkMessageListener.onMessage(TopLinkMessageListener.java:60
         at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596
         at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516
         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197
         at weblogic.kernel.Kernel.execute(Kernel.java:336
         at weblogic.kernel.Kernel.execute(Kernel.java:360
         at weblogic.kernel.Kernel.execute(Kernel.java:348
         at weblogic.jms.client.JMSSession.pushMessage(JMSSession.java:2392
         at weblogic.jms.client.JMSSession.invoke(JMSSession.java:2919
         at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:609
         at weblogic.jms.dispatcher.DispatcherImpl.dispatchAsyncInternal(DispatcherImpl.java:128
         at weblogic.jms.dispatcher.DispatcherImpl.dispatchOneWay(DispatcherImpl.java:312
         at weblogic.jms.dispatcher.DispatcherImpl_WLSkel.invoke(Unknown Source
         at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:466
         at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:409
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144
         at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:404
         at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30
         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170
    >

  • Cache synchronization exception

    I am getting following exception, while trying to synchronize cache. Any Ideas ?
    Thanks in advance,
    Moin
    04/12/22 18:42:22 onMessage
    Local Exception Stack:
    Exception [TOPLINK-18001] (OracleAS TopLink - 10g (9.0.4.2) (Build 040311)): oracle.toplink.exceptions.JMSProcessingException
    Exception Description: Error while processing incomming JMS message
    Internal Exception: javax.jms.JMSException: getObject
         at oracle.toplink.exceptions.JMSProcessingException.buildDefault(JMSProcessingException.java:18)
         at oracle.toplink.remote.jms.TopLinkMessageListener.onMessage(TopLinkMessageListener.java:58)
         at com.evermind.server.jms.EvermindSession.doListener(EvermindSession.java:1326)
         at com.evermind.server.jms.EvermindSession.handleMessage(EvermindSession.java:1142)
         at com.evermind.server.jms.EvermindMessageConsumer.handleMessage(EvermindMessageConsumer.java:445)
         at com.evermind.server.jms.EvermindMessageConsumer.access$300(EvermindMessageConsumer.java:40)
         at com.evermind.server.jms.EvermindMessageConsumer$1.run(EvermindMessageConsumer.java:399)
         at java.lang.Thread.run(Unknown Source)

    Is there any more information on the Internal JMS Exception? Potentially printed out in another part of the stack trace?
    --Gordon                                                                                                                                                                                                                                                                       

  • 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.

  • 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                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • JMS Cache Synchronization - Merge or Database Read?

    When an object in one JVM is changed does TopLink' JMS cache synchronization mechanism merge the changes into the other JVMS in a cluster or does it just signal that the object is dirty and the object is re-read from the database?
    If the answer is 'merge' does a post merge event get called on the object being merged?
    thanks
    Steve

    In TopLink 10.1.3 both can happen, the changes can be merged or an object can be marked invalid and TopLink will refresh the object as needed. In 9.0.4.X the changes will be merged into the other caches (if an object of correct version exists in that cache).
    In the case of a merge postMerge() event will be called.
    --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

  • 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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • 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.

  • Toplink in Cluster without Cache Synchronization

    Hello,
    I’m trying to setup my J2EE app that uses Toplink for its persistence in a 9iAS cluster. For the first release I’m not planning to use Toplink Cache synchronization but planning to deploy the app in 9iAS cluster of nodes say A and B. By default all the requests goes to one app server (say A) in the cluster. When the app in node A goes down app in node B starts and accepts all the requests transparently. For this scenario:
    1.     Do I need to use any Toplink feature/API?
    2.     What design considerations I need to consider for my app so that I can achieve my short-term goal and the long-term goal of implementing Cache synchronization easily?
    Any references/pointers would help me.
    Thanks
    -Mani

    TopLink Cache Coordination (Synchronization) can be enabled at any point during your development. And is not required on a system running in a cluster. No special TopLink API's are required when running in the cluster.
    There should be no design decisions made now that would affect the use of Cache Coordination (Synchronization) in the future.
    --Gordon

Maybe you are looking for

  • Why does the back button not work since I updated to the latest version?

    I updated my browser to the latest version and now the back button doesn't work anymore. Is this just a glitch with my download or is anyone else having this problem.

  • My Zen Xtra fr

    My Zen Xtra froze in the middle of uploading music to it. None of the buttons work, and I can't even turn it off (to access Rescue Mode, or download the new firmware). If I press Reset, will it erase everything on its hard dri've? I've never had this

  • XML reports after RUP6 Patches

    Hello All, Our XML Concurrent Program Reports are Generating output in RTF format after applying the RUP6 Patches. They used to be in PDF format prior to patches. Has anybody experienced these issues ?. Is there any additional setup we have to do to

  • Database Time Spent Waiting (%)

    In My RAC 11.2.0.2.2, I have the following warnings in the dba_outstanding_alerts, How to clean them? I don't have Diagnostic Pack licensed for this environment; it's a test environment; I just have a basic license REASON METRIC_VALUE MESSAGE_TYPE TO

  • How to non-proportionally stretch image in Mavericks?

    In previous iterations of OSX (in particular, Lion and Mountain Lion) I could place an image in an iWork application (Keynote in this example) and when I resized it, I could stretch an image to whatever proportion I wanted. If it was a little too tal