JMS & legacy host

According to the JMS tutorial, if one wants to access a J2EE application from a remote system that is not running J2EE server, then:
the J2EE SDK must be installed on both systems.
Does this mean that if I want to try to get a legacy host to communicate with a J2EE application, the host must have the J2EE SDK on it? Since my legacy system doesn't support this, is the Java Connector Architecture a better alternative?
To describe my situation, I want to allow TCP/IP communication to/from a legacy host to a J2EE application. The host cannot run J2EE, but can run MQSeries.
Thanks,
Ken

There are two solutions that I can think of:
1. write a JCA resource for your legacy host. This is probably what Sun would recommend and is more flexible etc. Its also much more involved and a bit fiddly.
2. use JMS over MQ Series, and configure the JMS to send and receive messages in a format that native MQ Series can read ( see http://forum.java.sun.com/thread.jsp?forum=29&thread=207563 ). This will be easier and well documented, but might not be as flexible as a JCA connector.
The choice is yours. Also, if you're legacy system can run MQSeries, it might be able to run JMS over it ( certainly MQSeries 5.2 and above will), which is pretty similar to option 2.

Similar Messages

  • JDBC connection pool failures when used by JMS stores

              We are using WebLogic 6.1 sp2. We defined a separate connection pool for use by
              a JMS Store.
              <JDBCConnectionPool Name="sybaseJMSPool"
              Targets="cluster00"
              InitialCapacity="2"
              MaxCapacity="10"
              DriverName="com.sybase.jdbc2.jdbc.SybDriver"
              Properties="[email protected]@;[email protected]@;charset=utf8"
              URL="jdbc:sybase:Tds:@jms.db.host@/@jms.db.name@"/>
              (note that the @xxx@ string are replaced by actual values).
              We are using Sybase Jconnect 5.5 to a Sybase ASE 12.5 database.
              We deployed this configuration on a number of environments (testing, staging,
              ..). The actual hardware and network configuration is different for the different
              system, but the WebLogic domain stays the same regarding this issue.
              On the test system we frequently get the following exceptions:
              <Aug 13, 2002 1:56:04 PM CEST> <Alert> <JMS> <www00-test> <node00>
              <ExecuteThread: '6' for queue: 'JMS.TimerClientPool'> <> <> <040048>
              <JMSServer "JMSServer00", store failure while writing message for topic
              OrderChangeTopic, java.io.IOException: JMS JDBC store, connection pool =
              <sybaseJMSPool>, prefix = <JMS00>: write failed
              java.sql.SQLException: JZ006: Caught IOException:
              com.sybase.jdbc2.jdbc.SybConnectionDeadException: JZ0C0: Connection is already
              closed.
              at com.sybase.jdbc2.jdbc.ErrorMessage.raiseErrorCheckDead
              (ErrorMessage.java:715)
              at com.sybase.jdbc2.tds.Tds.handleIOE(Tds.java:3124)
              at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1412)
              at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1341)
              at com.sybase.jdbc2.jdbc.SybStatement.doCancel(SybStatement.java:564)
              at com.sybase.jdbc2.jdbc.SybStatement.updateLoop(SybStatement.java:1672)
              at com.sybase.jdbc2.jdbc.SybStatement.executeUpdate
              (SybStatement.java:1625)
              at com.sybase.jdbc2.jdbc.SybPreparedStatement.executeUpdate
              (SybPreparedStatement.java:91)
              at com.p6spy.engine.logging.P6LogPreparedStatement.executeUpdate
              (P6LogPreparedStatement.java:179)
              at weblogic.jdbc.pool.Statement.executeUpdate(Statement.java:293)
              at weblogic.jms.store.JDBCIOStream.write(JDBCIOStream.java:1246)
              at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:250)
              at weblogic.jms.store.JMSStore.execute(JMSStore.java:182)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              .>
              java.io.IOException: JMS JDBC store, connection pool = <sybaseJMSPool>, prefix
              = <JMS00>: write failed
              java.sql.SQLException: JZ006: Caught IOException:
              com.sybase.jdbc2.jdbc.SybConnectionDeadException: JZ0C0: Connection is already
              closed.
              at com.sybase.jdbc2.jdbc.ErrorMessage.raiseErrorCheckDead
              (ErrorMessage.java:715)
              at com.sybase.jdbc2.tds.Tds.handleIOE(Tds.java:3124)
              at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1412)
              at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1341)
              at com.sybase.jdbc2.jdbc.SybStatement.doCancel(SybStatement.java:564)
              at com.sybase.jdbc2.jdbc.SybStatement.updateLoop(SybStatement.java:1672)
              at com.sybase.jdbc2.jdbc.SybStatement.executeUpdate
              (SybStatement.java:1625)
              at com.sybase.jdbc2.jdbc.SybPreparedStatement.executeUpdate
              (SybPreparedStatement.java:91)
              at com.p6spy.engine.logging.P6LogPreparedStatement.executeUpdate
              (P6LogPreparedStatement.java:179)
              at weblogic.jdbc.pool.Statement.executeUpdate(Statement.java:293)
              at weblogic.jms.store.JDBCIOStream.write(JDBCIOStream.java:1246)
              at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:250)
              at weblogic.jms.store.JMSStore.execute(JMSStore.java:182)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              at weblogic.jms.store.JDBCIOStream.throwIOException
              (JDBCIOStream.java:1213)
              at weblogic.jms.store.JDBCIOStream.write(JDBCIOStream.java:1256)
              at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:250)
              at weblogic.jms.store.JMSStore.execute(JMSStore.java:182)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              Before that this message appeared:
              <Aug 13, 2002 11:31:16 AM CEST> <Error> <ConnectionManager> <www00-test>
              <node00> <ExecuteThread: '26' for queue: 'default'> <> <> <000000>
              <Closing: 'weblogic.rjvm.t3.T3JVMConnection@795af6' because of: 'Server
              received a message over an uninitialized connection: 'JVMMessage from: 'null'
              to: '-4555218188801970213S:192.168.13.1:[7001,7001,7002,7002,7001,7002,-
              1]:ADIS:node00' cmd: 'CMD_REQUEST', QOS: '101', responseId: '1',
              invokableId: '287', flags: 'JVMIDs Not Sent, TX Context Not Sent', abbrev
              offset: '34'''>
              This problem did not occur on another system which was used during a 2 day stress
              testing session.
              It seems that the problem occurs after a period in which no user request where
              made. The user requests trigger EJB's that start sending JMS messages.
              When the problem occurs, the JMS messaging systems seems to lock up as no messages
              are received anymore by the different listeners (MDBs).
              Undeploying and redeploying the JBDC connection pool solves the problem. This
              solution is unacceptable in case of a production system.
              A similarly defined connection pool, which is used by the EJBs to make database
              connection, does not manifest this problem.
              <JDBCConnectionPool Name="sybasePool"
              Targets="cluster00"
              InitialCapacity="10"
              CapacityIncrement="5"
              MaxCapacity="50"
              PreparedStatementCacheSize="150"
              DriverName="com.sybase.jdbc2.jdbc.SybDriver"
              Properties="[email protected]@;[email protected]@;JCONNECT_VERSION=6;charset=utf8"
              URL="jdbc:sybase:Tds:@db.host@/@db.name@"/>
              The JDBC connection pool is used as follows by the JDBC store
              <JMSJDBCStore ConnectionPool="sybaseJMSPool" Name="JDBCStore00" PrefixName="JMS00"/>
              <JMSServer Name="JMSServer00" Store="JDBCStore00" Targets="node00">
              <JMSTopic JNDIName="ADIS.JMSError" JNDINameReplicated="false" Name="ErrorTopic"/>
              <JMSTopic JNDIName="ADIS.Status"
              Name="StatusTopic" RedeliveryDelayOverride="300000"/>
              <JMSTopic JNDIName="ADIS.OrderChange" JNDINameReplicated="false"
              Name="OrderChangeTopic" RedeliveryLimit="3"/>
              </JMSServer>
              Turning on the "Test Reserved Connection" with a appropriate test table does not
              help.
              Some sources on the internet tell us that JZ0C0 errors in the Jconnect driver
              can be related to network problems. Nevertheless the connection pool should be
              able to cope with this.
              Can you provide any solution for this ? Or give us hints what can cause the problem
              

    Zhenhao Qi wrote:
    thanks! Joe.
    The SQL statement itself can no longer be simplified, the long excuation time is due to the database size and complicated Select criteria. I can easily reproduce the problem by using this SQL. I tried "BEA's Oracle driver (Type 4): Version 8.1.7,9.0.1,9.2.0". the question can be dissect into 2 pieces:
    1) why the jdbc connection (using oracle.jdbc.OracleDriver) won't return anything if the SQL execution time > 5min, that is probably the Oracle's problem
    2) why the occupied connection pool won't release even I set "Statementtimeout=600", this is Weblogic's problem.
    ZhenhaoHi. Yes, (1) is oracle's problem. (2) may also be. The JDBC spec has very few
    allowances for one thread to interrupt a second thread's JDBC call. If we
    transmit your timeout request by calling setQueryTimeout() on the oracle
    statement, and if you have a weblogic-controlled transaction we call
    Statement.cancel() on any ongoing statement, we end up relying on whether
    the Oracle driver implements and responds to those calls.
    Are you doing weblogic-controlled transactions? Are you/can you
    call Statement.setQueryTimeout() on your statements, or are these
    generated JDBC queries?
    If you can duplicate the problem using the weblogic.jdbc.oracle.OracleDriver
    we have some other debug avenues. This would be good even if you really
    want to use the thin driver, because we will do the same JDBC calls to
    either driver, and the debug would prove (if) we set up a query timeout
    and if we call cancel(). If we do, then we can know that it is the Oracle
    driver failing in these regards.
    Joe

  • Send JMS Message to OJMS in a Servlet?

    I'm trying to get my servlet to send a message to a JMS queue hosted by OJMS. I have had the code working with the default JMS provider (in-memory only). I can't fathom what the appropriate JNDI names are for the connection factory and queue when using the resource-provider mechanism.
    The Docs suggest it's dead simple but don't give a single example to work from!
    In application.xml I have:
         <!-- JMS Resource Definition -->     
         <resource-provider class="oracle.jms.OjmsContext" name="myJMS">
              <description> OJMS/AQ </description>
              <property name="datasource" value="jdbc/myDS_OCI" />
         </resource-provider>
    The datasource connects to my Oracle 9i database and the schema contains a Queue Table with two queues in it. The one I want to use is called Timed_Event_Queue there.
    According to the docs, I should be able to do a lookup something like
    ctx.lookup("java:comp/resource/myJMS/Queues/Timed_Event_Queue")
    but I can't get anything to even pretend to work!
    I'm working with OC4J 9.0.4 at the moment.
    Any suggestions??
    Thanks,
    -Dominic

    Dominic,
    Were you able to get the QueueConnectionFactory? I have tried this on OC4J 903 and it does work fine. Is there some error message thrown at the OC4J console?
    If you want a sample code, then feel free to mail me at [email protected]
    Hope this helps,
    Rajat

  • How to integrate Websphere MQ as an external JMS Provider?

    Hello to all!
    I'm trying to integrate Websphere MQ in SAP Web AS 6.40 as an external JMS provider and I'm having some problems. As the use of SAP XI is impossible for me, I started using the built-in JMS Connector.
    I've already read (and tried to follow) the documentation in http://help.sap.com/saphelp_nw04/helpdata/en/cd/4d4941abbb4c0de10000000a1550b0/frameset.htm, but unfortunately, it didn't help me that much.
    It told me that the JMS Connector is the right place to start, and I already managed to deploy and define the Websphere MQ JMS implementation as a library. And from various examples I'm quite sure that Websphere MQ is an JNDI based JMS provider. But now the problems start.
    According to the SAP library mentioned above, I have to enter the JNDI name to the ConnectionFactory in the "New ConnectionFactory" dialogue in the "Provider" tab. As an example there is the (existing) JNDI name "jmsfactory/default/TopicConnection". For doing the same with my Websphere MQ, I expect to need something alike.
    Hoping that I'm getting the SAP library right at this point, I'm expecting to need a JNDI entry, like, let's say, "jmsfactory/WebsphereMQ/QueueConnection" connected to the class "com.ibm.mq.jms.MQConnectionFactory" (MQConnectionFactory is the class in the MQ JMS implementation that implements the JMS interface "Connection Factory"). How can I put those Websphere MQ classes, that are implementing the JMS interfaces like Connection Factory, QueueConnectionFactory and so on
    in my JNDI tree? The point is, obviously, no JNDI entry was made during deploying Websphere MQ as a library.
    Or am I totally wrong an misunderstood the SAP library completely? Any help on this topic would be highly appreciated.
    Best greetings!
    Bärbel

    Integrating WebSphereMQ with SAP Web Application Server
    Prerequisites
    The native libraries of WebSphereMQ must be added to the environment variables of the host or hosts where the SAP Web AS is running. Typically, if MQ is installed on the same host, the required entries are added to the environment at installation. However, we recommend that you check the MQ documentation for details about the directory where the libraries are located, and make sure it is added to the environment on all hosts with SAP Web AS.
    For example, for Windows OS the following libraries are required:
    -     amqmtmgr.dll
    -     amqvwaa2.dll
    -     amqxcs2.dll
    -     amqxcsn.dll
    -     amqzc.dll
    -     amqzsai.dll
    -     amqzst.dll
    -     amqztm.dll
    -     mqjbdf02.dll
    -     mqjbnd05.dll
    -     mqm.dll
    -     mqmvxd.dll
    -     mqmxa.dll
    -     MQXAi02.dll
    Procedure
    1)     If the version of the SAP Web AS is SP 7 or lower, you must apply a patch for the JMS Connector Service. The required SDA is attached to this e-mail (jmsconnector.sda). To apply it:
    a.     Run the SDM Remote GUI tool. It is located in <SAP_install_dir>\SAPSID\<Instance_ID>\SDM\program.
    b.     In the Deployment tab, add the jmsconnector.sda to the deployment list. Choose   Show Deployment Configuration. Select Update deployed SDAs/SCAs that have any version (this ensures that you will have the SDA deployed even if for some reason its timestamp is older than the one of the SP7 SDA that you already have deployed.)
    c.     Deploy the SDA following the standard deployment procedure. If prompted to choose if you want to delegate the control to the SDM server, choose Yes. The SDM shuts down the cluster, deploys the SDA, and then restarts the cluster.
    2)     Create the IBM MQ library. You can do it using either Visual Administrator or SAP NetWeaver Developer Studio.
    a.     Visual Administrator:
    i.     Go to Services -> JMS Connector.
    ii.     Select JMS Libraries, and choose New.
    iii.     Enter a name for the library, such as MQJMSLIB.
    iv.     Browse to select the following JAR files:
    - com.ibm.mq.jar
    - com.ibm.mqbind.jar
    - com.ibm.mqjms.jar
    - fscontext.jar
    - ldap.jar
    - postcard.jar
    - provider.xml
    - providerutil.jar
    v.     Deploy the library.
    vi.     Go to Services -> Configuration Adapter. In the configuration tree on the right-hand side of the screen browse to cluster_data -> server -> cfg -> ext -> MQJMSLIB-provider.xml. Switch to edit mode using  . Open the XML for editing using  . Add the following entry (after the reference entry for jms):
    <reference type="library" strength="weak">j2eeca</reference>
    Choose OK and restart the cluster to apply the changes.
    b.     SAP NetWeaver Developer Studio:
    i.     Create a J2EE Library project.
    ii.     Select the project and choose File -> Import -> File System. Browse to the MQ folder, which contains the JAR files listed above, and select to import them.
    iii.     Extend the tree of your library project and open server/provider.xml. Go to the Jars tab.
    iv.     Select Jars, and choose Add. Choose to add the JAR files that you have imported in the previous step.
    v.     Go to the References tab. Select References, and choose Add. Choose Select library/interface/service. In the list select jms and j2eeca.
    vi.     Save and close provider.xml. From the context menu of the library project choose Build Library Archive.
    vii.     Select the SDA in the project tree, open its context menu, and choose Deploy to J2EE Engine.
    3)     Create a JMS Connector Factory in Visual Administrator.
    You can either enter the required values directly in the Visual Administrator (Services -> JMS Connector), or you can edit the following sample deployment descriptors and import them in Visual Administrator using  .
    a.     Using JNDI:
    This is example of factories.xml using JNDI based JMS provider.
    <?xml version="1.0" encoding="UTF-8" ?>
      <jms-factories>
        <application-name>
          IBM_Test_App
        </application-name>
        <connection-factory>
          <library-name>
            MQJMSLIB
          </library-name>
          <factory-name>
            IBM_Queue_Factory
          </factory-name>
          <context-factory-type>
    <!—This factory should already exist on WebSphereMQ.-->
            <link-factory-name>
              QCF_1
            </link-factory-name>
            <initial-context-factory>
              com.sun.jndi.fscontext.RefFSContextFactory
            </initial-context-factory>
            <provider-url>
              file:/C:/JNDI-Directory
            </provider-url>
            <security-principal>
            </security-principal>
            <security-credentials>
            </security-credentials>
          </context-factory-type>
        </connection-factory>
      </jms-factories>
    b.     Using object factory JMS provider
    <?xml version="1.0" encoding="UTF-8" ?>
      <jms-factories>
        <application-name>
          IBM_Test_App
        </application-name>
        <connection-factory>
          <library-name>
            MQJMSLIB
          </library-name>
          <factory-name>
            IBM_Queue_Factory
          </factory-name>
          <object-factory-type>
            <object-factory-name>
              com.ibm.mq.jms.MQXAQueueConnectionFactoryFactory
            </object-factory-name>
            <class-name>
              com.ibm.mq.jms.MQXAQueueConnectionFactory
            </class-name>
            <properties>
              <property>
                <property-name>
                  HOST
                </property-name>
    <!-- JMS Provider host name -->
                <property-value>
                  localhost
                </property-value>
              </property>
              <property>
                <property-name>
                  QMGR
                </property-name>
    <!-- Queue Manager -->
                <property-value>
                  MQ_default
                </property-value>
              </property>
              <property>
                <property-name>
                  PORT
                </property-name>
    <!-- JMS Provider port number -->
                <property-value>
                  1414               
                </property-value>
              </property>
              <property>
                <property-name>
                  TRAN
                </property-name>
    <!-- Transport type -->
                <property-value>
                  1                    
                </property-value>
              </property>
            </properties>
          </object-factory-type>
        </connection-factory>
      </jms-factories>
    4)     Use the connection factory in an application:
    Code:
    Context ctx = new InitialContext();
    Object ref = ctx.lookup("java:comp/env/IBM_Queue_Factory");
    QueueConnectionFactory f = (QueueConnectionFactory)ref;
    QueueConnection connection = f.createQueueConnection();
    Resource references:
                     <resource-ref>
              <res-ref-name>
                IBM_Queue_Factory
              </res-ref-name>
              <res-type>
                javax.jms.QueueConnectionFactory
              </res-type>
              <res-auth>
                Container
              </res-auth>
            </resource-ref>
    If you are using 6.40 SP7 or below let me know to send you a patch.
    Regards Nikola

  • CEP with inbound JMS Adapter

    Problem: The inbound adapter is not triggered at all.
    I have an EPN with an inbound JMS adapter listening to a JMS Queue hosted in my 11g Jdev SOA Suite. The queue is populated from a SOA composite. I can see the messages in the queue and my CEP application is deployed succesfully, but my JMS Adapter doesn't get any.
    Here's the relevant section from EPN xml file:
    {color:#3366ff}&lt;bean id="OrderConverter" class="agb.foc.order.OrderMessageConverter"/&gt;
    &lt;wlevs:adapter id="OrderIn" provider="jms-inbound"&gt;
    &lt;wlevs:instance-property name="converterBean" ref="OrderConverter"/&gt;
    &lt;/wlevs:adapter&gt;
    {color}
    Here's my jms-adapter xml file:
    {color:#3366ff}&lt;jms-adapter&gt;
    &lt;name&gt;OrderIn&lt;/name&gt;
    &lt;jndi-provider-url&gt;t3://localhost:7001&lt;/jndi-provider-url&gt;
    &lt;connection-jndi-name&gt;weblogic/jms/ConnectionFactory&lt;/connection-jndi-name&gt;
    &lt;destination-jndi-name&gt;agb/jms/TestQueue&lt;/destination-jndi-name&gt;
    &lt;user&gt;weblogic&lt;/user&gt;
    &lt;password&gt;weblogic&lt;/password&gt;
    &lt;concurrent-consumers&gt;1&lt;/concurrent-consumers&gt;
    &lt;session-transacted&gt;false&lt;/session-transacted&gt;
    &lt;/jms-adapter&gt;{color}
    And the queue details from the weblogic admin console:
    {color:#3366ff}Name: AgbTestQueue
    Type: Queue
    JNDI Name: agb/jms/TestQueue{color}
    Note: I'm using CEP 10gR3 with Eclipse IDE and 11g Jdeveloper SOA suite internal release which comes after TP4.
    Thanks in advance
    Alosh
    Edited by: aloshbennett on Feb 9, 2009 10:44 PM
    formatting

    UPDATE:
    If I send the messages via a standalone java client, CEP is accepting them.
    The difference I see in both the messages is
    {color:#c0c0c0}SOA messages arrive in the queue with JMSXDeliveryCount property set to 1, while standalone client messages arrive in the queue with JMSXDeliveryCount set to 0.
    {color}
    {color:#c0c0c0}
    Why does the messages from SOA composite arrive with JMSXDeliveryCount set to 1? Why does that prevent CEP from receiving them?{color}
    EDIT Again: The messages look identical from the admin console. The JMSXDeliveryCount goes up because the delivery to CEP fails and it could be a red herring.
    If I export the messages from SOA Composite to a file and import them back, CEP picks them up.
    Help!
    Edited by: aloshbennett on Feb 10, 2009 8:09 AM

  • JMS cluster configuration problem

    Problem description:
    I have a OC4J cluster with two OC4J instances (referred to as I1 and I2) each having their own JMS Server (referred to JMS1 and JMS2). For certain messaging scenarios (not all) it is necessary that I1 puts a message on a queue of I2.
    In order to do that I use the following configuration:
    I2 -> jms.xml
    <jms-server host="[ALL]" port="9127">
    <queue-connection-factory location="xyz.ConnectionFactory" host="I1" />
         <queue name="queue1" location="xyz.queue" persistence-file="queue1.file"/>
    I1 -> jms.xml
    <jms-server host="[ALL]" port="9127">
    <queue-connection-factory location="xyz.ConnectionFactory" />
         <queue name="queue1" location="xyz.queue" persistence-file="queue1.file"/>
    When I try to send a message from I2 to I1, using the connection factory stored under xyz.ConnectionFactory I get the following exception:
    Caused by: javax.transaction.RollbackException at com.evermind.server.ApplicationServerTransaction.handleCommitSystemException(ApplicationServerTransaction.java:749) at com.evermind.server.ApplicationServerTransaction.twoPhaseCommit(ApplicationServerTransaction.java:688) at com.evermind.server.ApplicationServerTransaction.commitBasedOnResourceCount(ApplicationServerTransaction.java:514) at com.evermind.server.ApplicationServerTransaction.doCommit(ApplicationServerTransaction.java:246) at com.evermind.server.ApplicationServerTransaction.commit(ApplicationServerTransaction.java:126)
    at com.evermind.server.ApplicationServerTransactionManager.commit(ApplicationServerTransactionManager.java:433) at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:757)
    ... 45 more
    Caused by: oracle.as.j2ee.transaction.tpc.ConnectionLostException: Handing off to RecoveryManager due to lost connection to resource or RMERR. Branch: [null, Xid( Global Id da.f9.b0.f7.ff.ff.ff.ff.0a.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00, Format Id 4660, Branch Id e8.df.1f.91.00.00.00.00.00.00.00.00.00.00.00.01), null, state={ACTIVE}, exception error code=-3]
    at oracle.as.j2ee.transaction.tpc.Coordinator.lostResourceCleanup(Coordinator.java:628)
    at oracle.as.j2ee.transaction.tpc.Coordinator.checkForLostConnection(Coordinator.java:600)
    at oracle.as.j2ee.transaction.tpc.Coordinator.actOnEligibleBranch(Coordinator.java:553)
    at oracle.as.j2ee.transaction.tpc.Coordinator.doRollback(Coordinator.java:499)
    at oracle.as.j2ee.transaction.tpc.Coordinator.doRollbackWithRollbackException(Coordinator.java:229)
    at oracle.as.j2ee.transaction.tpc.Coordinator.doPrepare(Coordinator.java:216)
    at oracle.as.j2ee.transaction.tpc.Coordinator.doResolve(Coordinator.java:278)
    at oracle.as.j2ee.transaction.tpc.Coordinator.resolve(Coordinator.java:115)
    at oracle.as.j2ee.transaction.tpc.TwoPhaseCommitEngine.commit(TwoPhaseCommitEngine.java:93)
    at com.evermind.server.ApplicationServerTransaction.twoPhaseCommit(ApplicationServerTransaction.java:686)
    ... 50 more
    Question:
    1: Do I use the right configuration for above messaging scenario (the Oracle documentation I’ve read about this subject (High Availability Guide) is very vague) ?
    2: So yes, what do I do wrong?
    Any help would be greatly appreciated!

    Above problem could be resolved.
    1. The problem only occured when sending a message within a transaction. Without transaction everything worked fine.
    2. Due to this strange behaviour we assumed that this is a bug - and it was. This bug has the issue nummer: 5331629. In version 10.1.3.1.0 this issue is resolved. We tested it and indeed it worked as excpected.

  • JMS Interoperability between vendors

    Hi,
    I have been tasked with providing a number or proposals for connecting our enterprise to a number of external partners via a queueing mechanism. i.e. a B2B hub.
    I am pretty familiar with JMS, but concerns have been voiced over the interoperability between vendors; something I have no direct experience of.
    For example as part of my proposal I may suggest that we send out messages to JMS servers hosted on the partners sites. These partners use a variety of technologies including WebMethods, BizTalk, IBM etc. which we can assume all support JMS (including IBM MQ as I have been told).
    Has anyone ever come across interoperability issues with regards to JMS? If I send out JMS messages from one vendor will they be seamlessly received by the target vendors JMS server?
    Any shared experience would be appreciated.

    Hi Joe,
    Thanks for your response. The thing is that this refers to SOAP over JMS, i.e. JMS is the underlying transport protocol not SOAP which brings me back to the original problem interoperability of JMS vendors.
    In fact the specification (taken from your first link) states:
    "It does NOT provide any mechanism for interoperation between two different JMS providers. In the example above, VendorA and VendorB are different providers of a Web services infrastructure, but the customer must still use a single implementation of JMS at both client and service side."
    However your input has highlighted something I was unaware of; that is that there are also interoperability issues within SOAP between different vendors. This is dissapointing; I assumed that SOAP worked without any interoperablity issues whatsover.

  • Cannot create jms module, unusual error

    I'm not sure what happened, but this was working before, but I can no longer create a jms module. I need to create a jms module, but every time I try to activate my changes, I get this error. Has anyone ran into this before that could shed some light? This is running in production mode with ADF libraries installed.
    <9-Aug-2012 6:31:22 o'clock PM PDT> <Warning> <Deployer> <BEA-149004> <Failures were detected while initiating activate task for application 'SystemModule-2'.>
    <9-Aug-2012 6:31:22 o'clock PM PDT> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
    weblogic.application.ModuleException:
    at weblogic.jms.module.ModuleCoordinator.activate(ModuleCoordinator.java:247)
    at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:227)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$2.next(DeploymentCallbackFlow.java:541)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:175)
    Truncated. see log file for complete stacktrace
    Caused By: weblogic.cluster.migration.GroupActivationException: cause is: weblogic.management.DeploymentException:
    at weblogic.cluster.migration.MigratableGroup.activateAllMigratables(MigratableGroup.java:350)
    at weblogic.cluster.migration.MigratableGroup.activate(MigratableGroup.java:337)
    at weblogic.cluster.migration.MigrationManager.privateRegister(MigrationManager.java:255)
    at weblogic.cluster.migration.MigrationManager.register(MigrationManager.java:192)
    at weblogic.jms.module.ModuleCoordinator.activate(ModuleCoordinator.java:243)
    Truncated. see log file for complete stacktrace
    >
    <9-Aug-2012 6:31:22 o'clock PM PDT> <Warning> <Deployer> <BEA-149004> <Failures were detected while initiating redeploy task for application 'Module-FMWDFW'.>
    <9-Aug-2012 6:31:22 o'clock PM PDT> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
    weblogic.application.ModuleException:
    at weblogic.jms.module.ModuleCoordinator.activate(ModuleCoordinator.java:247)
    at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:227)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$2.next(DeploymentCallbackFlow.java:541)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:175)
    Truncated. see log file for complete stacktrace
    Caused By: weblogic.cluster.migration.GroupActivationException: cause is: weblogic.management.DeploymentException:
    at weblogic.cluster.migration.MigratableGroup.activateAllMigratables(MigratableGroup.java:350)
    at weblogic.cluster.migration.MigratableGroup.activate(MigratableGroup.java:337)
    at weblogic.cluster.migration.MigrationManager.privateRegister(MigrationManager.java:255)
    at weblogic.cluster.migration.MigrationManager.register(MigrationManager.java:192)
    at weblogic.jms.module.ModuleCoordinator.activate(ModuleCoordinator.java:243)
    Truncated. see log file for complete stacktrace
    >
    <9-Aug-2012 6:31:23 o'clock PM PDT> <Error> <Console> <BEA-240003> <Console encountered the following error weblogic.application.ModuleException:
    at weblogic.jms.module.ModuleCoordinator.activate(ModuleCoordinator.java:247)
    at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:227)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$2.next(DeploymentCallbackFlow.java:541)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:175)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:167)
    at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:636)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:205)
    at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:43)
    at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
    at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
    at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150)
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116)
    at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)
    at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)
    at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    Caused by: weblogic.cluster.migration.GroupActivationException: cause is: weblogic.management.DeploymentException:
    at weblogic.cluster.migration.MigratableGroup.activateAllMigratables(MigratableGroup.java:350)
    at weblogic.cluster.migration.MigratableGroup.activate(MigratableGroup.java:337)
    at weblogic.cluster.migration.MigrationManager.privateRegister(MigrationManager.java:255)
    at weblogic.cluster.migration.MigrationManager.register(MigrationManager.java:192)
    at weblogic.jms.module.ModuleCoordinator.activate(ModuleCoordinator.java:243)

    I think the following can be a possible problems:
    a. Cluster communication issue (which can be checked using admin console > cluster > cluster_name > monitoring.
    b. Problem with the JMS server hosts. Check whether there are any issues with the migration setup?
    Just a quick search lead to:
    https://confluence.nau.edu/confluence/plugins/viewsource/viewpagesrc.action?pageId=4522139
    This thread is talking about the same exception due to migration.

  • JMS:Java Client XAQueueConnectionFactory.createQueueConnection() exception

    Team,
    Running from stanalone java client. Whe I try to put the message on JMS, it throws the exception. Some other person found the same problem(JMS Exception: hosts (hostname:port) cannot be accessed!).
    I can create the initial context, lookup connection factory and look up queue succesfully but after that when I create the connection it throws the exception(listed below)
    Same code if I run under jsp running on SAP WS runs fine all the way and put the message on the queue.
    javax.jms.JMSException: The following hosts (hostname:port) cannot be accessed:
    . Check host names and ports.
            at com.sap.jms.client.connection.ConnectionFactory.getSocket(ConnectionF
    actory.java:447)
            at com.sap.jms.client.connection.ConnectionFactory.createConnection(Conn
    ectionFactory.java:300)
            at com.sap.jms.client.connection.ConnectionFactory.createConnection(Conn
    ectionFactory.java:244)
            at com.sap.jms.client.xa.XAQueueConnectionFactory.createQueueConnection(
    XAQueueConnectionFactory.java:122)
            at QueueSend.main(QueueSend.java:37)
    This where I print out the context, cf and queue.
    ctx=javax.naming.InitialContext@1833eca
      qcf=com.sap.jms.client.xa.XAQueueConnectionFactory@18f5824

    Peter solved it
    When you make a standalone java client the connection will be performed by a TCP socket to the server. Your problem is this cannot be achieved. When you do it from JSP your code will interact directly with the JMS on the server. No opening of socket to itself. That's why it works.
    I would suggest launching a visual administrator, then going to the "dispatcher" nodes, (not server) and checking the properties of the JMS_provider service. Set up there a valid TCP port (perhaps it is empty or it is not read ?), then try to restart the whole cluster.
    If that will not help you, please open a OSS message where the SAP supoprt guys can help you.
    HTH
    Peter

  • JMSException: hosts (hostname:port) cannot be accessed

    Hi...all
    My scenaro is  connecting to the JMS server through the(Servelet) Java Client proxy i am able to connect to local JMS Server but when i tried to connect to the Remote JMS server it's giving error.And also i checked through the Stand alone program in that also giving the same error.stand alone progaram also able to connect to the localserver that is NWDW server
    javax.jms.JMSException: The following hosts (hostname:port) cannot be accessed: . Check host names and ports.(host:50110)
         at com.sap.jms.client.connection.ConnectionFactory.getSocket(ConnectionFactory.java:447)
         at com.sap.jms.client.connection.ConnectionFactory.createConnection(ConnectionFactory.java:300)
         at com.sap.jms.client.connection.ConnectionFactory.createConnection(ConnectionFactory.java:244)
         at com.sap.jms.client.connection.QueueConnectionFactory.createQueueConnection(QueueConnectionFactory.java:70)
         at com.yambay.mach.gatewayjmsbridge.JMSTestClient.initialiseServer(JMSTestClient.java:98)
         at com.yambay.mach.gatewayjmsbridge.JMSTestClient.<init>(JMSTestClient.java:66)
         at com.yambay.mach.gatewayjmsbridge.JMSTestClient.main(JMSTestClient.java:75)
    and my program is
    Properties m_JNDIProperties = new Properties();
    m_JNDIProperties.put(Context.INITIAL_CONTEXT_FACTORY,"com.sap.engine.services.jndi.InitialContextFactoryImpl");
    m_JNDIProperties.put (Context.PROVIDER_URL,"localhost:50004");
    m_JNDIProperties.put(Context.SECURITY_PRINCIPAL,"Administrator");
    m_JNDIProperties.put(Context.SECURITY_CREDENTIALS,"*****");
    /*    Create a JNDI API InitialContext object.    */
    m_Context = new InitialContext(m_JNDIProperties);     
    queueConnectionFactory = (QueueConnectionFactory) m_Context.lookup("jmsfactory/default/QueueConnectionFactory");
    queueConnection = queueConnectionFactory.createQueueConnection();

    Refer this..hope it may help u:)
    JMS Exception: hosts (hostname:port) cannot be accessed!
    Hosts not set in QueueConnectionFactory
    Regards,
    Farooq.

  • Weblogic JMS and BPEL Process

    Hello,
    Can someone please help me with the steps necessary to configure a BPEL process to accept messages from a JMS queue hosted on Weblogic 9.x?
    My setup:
    - Weblogic 9.1 hosts JMS queues
    - Oracle BPEL 10.1.3.1.0 hosted in OC4J
    - I have not touched oc4j-ra.xml to configure a JMS queue or connection factory. It looks as if the BPEL designer in JDeveloper allows you to specifiy everything necessary for this descritor.
    - I have not moved any jars from my appserver (weblogic) into BPEL's classpath.
    I have a JMS Adapter configured to point to my JMS queue. My jca:address looks as follows:
    <jca:address location="order.process.queue"
    ManagedConnectionFactory="oracle.tip.adapter.jms.JmsManagedConnectionFactory"
    mcf.ConnectionFactoryLocation="jms.connection.factory"
    mcf.FactoryProperties="java.naming.provider.url=http://wljms:7001"
    mcf.IsTopic="false"
    mcf.IsTransacted="false"
    mcf.Username=""
    mcf.Password=""
    UIJmsProvider="THIRDPARTY" />
    I receive the following exception:
    ORABPEL-12141
    ERRJMS_CONN_FAC_NOT_FOUND.
    Unable to instantiate connection factory. JMS adapter was unable to look up the connection factor jms.connection.factory neither through JNDI nor instantiate it as a Java class
    Please examine the log file to determine the problem.
    The stacktrace that follows points to a naming exception:
    Caused by: javax.naming.NameNotFoundException: jms.connection.factory not found
    I've seen posts on this forum where people have included jars from their app server distro on to OC4J's (or whatever BPEL's container) classpath. Is this the correct thing to do? That approach looks like it could be trouble.
    I've verified that my queue is set up correctly on the Weblogic side. I am able to place messages on queue successfully. I can also see my Weblogic server from the BPEL server.
    Any help is appreciated!
    Al

    Thank you for the reply. I did change the protocol to use t3 and copied the weblogic.jar over to the BPEL server under "\j2ee\home\applib". Now, I get a whole host of other exceptions related to JNDI lookups related for bpel related resources such as"java:comp/env/jms/collaxa/BPELWorkerQueue". The good news is that this happens whenever I drop a message on queue, so I am almost there.
    Is there any documentation on this particular setup? I suspect a collision in JNDI classes between OC4J and weblogic now.
    Here is a snap of my stacktrace:
    <2007-10-10 09:43:34,513> <ERROR> <default.collaxa.cube.activation> <AdapterFramework::Inbound>
    java.lang.Exception: Failed to create "java:comp/env/ejb/local/CubeDeliveryLocalBean" bean; exception reported is: "javax.naming.NameNotFoundException
    : remaining name: env/ejb/local/CubeDeliveryLocalBean
    at weblogic.j2eeclient.SimpleContext.resolve(SimpleContext.java:35)
    at weblogic.j2eeclient.SimpleContext.resolve(SimpleContext.java:39)
    at weblogic.j2eeclient.SimpleContext.lookup(SimpleContext.java:59)
    at weblogic.j2eeclient.SimpleContext.lookup(SimpleContext.java:59)
    at weblogic.j2eeclient.SimpleContext.lookup(SimpleContext.java:64)
    And later on...
    <2007-10-10 09:41:52,024> <ERROR> <default.collaxa.cube.engine.dispatch> <Dispatcher::adjustThreadPool> Error allocating 1 thread(s)
    ORABPEL-05005
    Cannot send JMS message.
    The process domain was unable to send a message to the JMS queue "". The exception reported is: Cannot lookup context object.
    The process domain was unable to lookup the context object using the bind name "java:comp/env/jms/collaxa/BPELWorkerQueue". The exception reported is
    : remaining name: env/jms/collaxa/BPELWorkerQueue
    Please verify the JNDI identifier is valid.
    Please check that the JMS service for the application server has been configured properly.
    at com.collaxa.cube.engine.ejb.impl.DispatcherBean.send(DispatcherBean.java:129)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.JAASInterceptor$1.run(JAASInterceptor.java:31)
    at com.evermind.server.ThreadState.runAs(ThreadState.java:620)
    at com.evermind.server.ejb.interceptor.system.JAASInterceptor.invoke(JAASInterceptor.java:34)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.TxNotSupportedInterceptor.invoke(TxNotSupportedInterceptor.java:43)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
    at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87)
    at DispatcherBean_LocalProxy_4bin6i8.send(Unknown Source)
    at com.collaxa.cube.engine.dispatch.DispatchHelper.sendLocal(DispatchHelper.java:450)
    at com.collaxa.cube.engine.dispatch.Dispatcher.adjustThreadPool(Dispatcher.java:711)
    at com.collaxa.cube.engine.dispatch.Dispatcher.receive(Dispatcher.java:453)
    at com.collaxa.cube.engine.ejb.impl.DispatcherBean.schedule(DispatcherBean.java:87)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.JAASInterceptor$1.run(JAASInterceptor.java:31)
    at com.evermind.server.ThreadState.runAs(ThreadState.java:620)
    at com.evermind.server.ejb.interceptor.system.JAASInterceptor.invoke(JAASInterceptor.java:34)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.TxNotSupportedInterceptor.invoke(TxNotSupportedInterceptor.java:43)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
    at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87)
    at DispatcherBean_RemoteProxy_4bin6i8.schedule(Unknown Source)
    at com.collaxa.cube.engine.dispatch.DispatchHelper.scheduleRemote(DispatchHelper.java:366)
    at com.collaxa.cube.engine.agents.BaseSimpleAgent$SimpleJob.execute(BaseSimpleAgent.java:271)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:191)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:516)
    <2007-10-10 09:41:52,024> <DEBUG> <default.collaxa.cube.engine.agents> <SimpleJob::execute> Sent message to dispatcher
    <2007-10-10 09:41:52,024> <DEBUG> <default.collaxa.cube.engine.agents> <SimpleScheduler::schedule> Next activation time for agent dispatch: Wed Oct 10
    09:43:52 EDT 2007

  • How Connections are handled on WebLogic JMS server

    I have a cluster with two managed servers, S1 and S2, running on 8.1SP3. I configured connection factory for both servers: CF1 for S1, CF2 for S2.
              A client, C1, lookups CF1 and create a connection thru it. At this point, I thouht C1 is "connected" to S1. But when I shutdown S2, in about 50% of occasions, C1 will receive lost server exception.
              What's going on here?
              Thanks,
              JD

    Good morning,
              A JMS client routes all operations through a single JMS connection host, where the connection host may consists of any one of the servers that host the designated connection factory. Once established, a JMS client's connection host doesn't change. In your case, 50% of clients load-balance to connection host S2 when they establish a connection.
              In most applications, best practice is to target CFs only at those server(s) that thost the client's destination.
              For more information, see the "JMS Performance Guide" white-paper on dev2dev.bea.com.
              Tom, BEA

  • Error While accessing JMS Queue on Weblogic***** ASSERTION FAILED *****[ Environment not found on thread ]

    Hi,
    I am trying to read response from JMS Queue hosted on Weblogic server and getting below exception. Any help on this will be appreciable.
    weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Environment not found on thread ]
          at weblogic.jndi.internal.NamingNodeReplicaHandler.<init>(NamingNodeReplicaHandler.java:148)
          at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
          at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
          at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
          at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
          at java.lang.Class.newInstance0(Class.java:308)
          at java.lang.Class.newInstance(Class.java:261)
          at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:90)
          at weblogic.common.internal.ChunkedObjectInputStream.readObjectWL(ChunkedObjectInputStream.java:159)
          at weblogic.common.internal.ChunkedObjectInputStream$NestedObjectInputStream.readObjectWL(ChunkedObjectInputStream.java:341)
          at weblogic.rmi.cluster.ReplicaAwareRemoteRef.readExternal(ReplicaAwareRemoteRef.java:356)
          at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1686)
          at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1644)
          at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
          at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
          at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:452)
          at weblogic.rmi.internal.StubInfo.readObject(StubInfo.java:95)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:324)
          at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:838)
          at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1746)
          at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
          at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
          at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
          at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:111)
          at weblogic.common.internal.ChunkedObjectInputStream.readObjectWL(ChunkedObjectInputStream.java:159)
          at weblogic.common.internal.ChunkedObjectInputStream$NestedObjectInputStream.readObjectWL(ChunkedObjectInputStream.java:341)
          at weblogic.jndi.internal.WLContextImpl.readExternal(WLContextImpl.java:425)
          at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1686)
          at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1644)
          at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
          at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
          at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
          at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
          at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
          at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
          at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
          at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
          at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
          at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
          at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:111)
          at weblogic.rjvm.ResponseImpl.getThrowable(ResponseImpl.java:117)
          at weblogic.rmi.internal.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:106)
          at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:127)
          at weblogic.jms.dispatcher.DispatcherImpl_1035_WLStub.dispatchSyncNoTranFuture(Unknown Source)
          at weblogic.jms.dispatcher.DispatcherWrapperState.dispatchSyncNoTran(DispatcherWrapperState.java:341)
          at weblogic.jms.client.JMSSession.createDestination(JMSSession.java:1735)
          at weblogic.jms.client.JMSSession.createQueue(JMSSession.java:1296)
    Thanks

    Hi,
    I am trying to read Queue standalone. Please find the code snippet below.  code highlighted in  where i am getting exception.
    public static void main(String[] args) {
    String jmsServerUrl = "t3://10.51.245.45:5858";
    String jmsUserName = "weblogic";
    String jmsPassword = "welcome123";
    String jndiFactory = "weblogic.jndi.WLInitialContextFactory";
    String jmsFactory = "jms/CBCMReplyConnectionFactory";
    String qName = "jms/CBCMOrderReplyQueue";
    QueueReceiver qReciever = null;
    JMSQueueReader.getQueueSession(jmsServerUrl,jmsUserName,jmsPassword,jndiFactory,jmsFactory);
    qReciever = JMSQueueReader.getQueueReceiver(qName);
    if (qReciever == null) {
    System.out.println("Unable to find JMS Queue Reciever for Queue Name: "
    + qName + " and JMS Server URL:"
    + jmsServerUrl);
    //isProcess = false;
    private static InitialContext getInitialContext(String url, String userName, String password,  String jndiFactory) throws NamingException {
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, jndiFactory);
    env.put(Context.PROVIDER_URL, url);
    env.put(Context.SECURITY_PRINCIPAL, userName);
    env.put(Context.SECURITY_CREDENTIALS, password);
    return new InitialContext(env);
    public static QueueReceiver getQueueReceiver(String qName) {
    try {
    if(qReceiver == null || !qName.equals(queueName))
    queueName = qName;
    if(qReceiver != null)
    qReceiver.close();
    qReceiver = null;
    javax.jms.Queue queue = qSession.createQueue(queueName);
    //qReceiver = qSession.createReceiver(queue);
    qReceiver = qSession.createReceiver(queue, "JMSCorrelationID LIKE '"+SOHConstant.CBCM_BSCS_CORRELATION_ID_PREFIX+"%'");
                } catch (Throwable e) {
    e.printStackTrace();
    return qReceiver;

  • Upgrade of Integation Services (Windows 2012 R2) on Windows 2008 R2 with Exchange 2013 SP1 DAG fails

    Here is the scenario:
    Legacy Host: Windows 2008 R2
    Guest VM: Windows 2008 R2 with Exchange 2013 SP1 DAG cluster.
    After importing the VM (2008 R2 and Exchange 2013 DAG) into a 2012 R2 host (Cluster).  (copy VM files to new 2012 R2host) Everything works fine.
    Then upgrading "Installation Services" (for Windows 2012 R2 host) on the imported VM runs fine with no errors to the "Restart" prompt. VM than shows: "Configuring Windows updates 32% complete. Do not turn
    of your computer." Hangs there for about 20 minutes until is says "shutting down". Hangs there for 20 minutes until power off. Restart to normal start; "Preparing to configure Windows. Do not turnoff your computer." proceeds slowly
    to "Configuring Windows updates 32% complete. Do not turn of your computer." hangs there again indefinite. Sometime hangs at shutdown cycle and "Configuring Windows updates 32% complete. Do not turn of your computer." indefinitely.
    I moved 20 other machines from a 2008 R2 host to new Windows 2012 R2 hosts all of these machines install the 2012 R2 Integration services just fine on the 2008 R2 VM. Just the 2008 R2 VMs clustered (DAG) and Exchange 2013 SP1 do not take the Integration
    Services upgrade.
    Any advise from Microsoft? I know I could decommission the DAG and Exchange machines and install Integration services on the native box before Exchange and DAG and that would sure work, but I'd rather avoid that amount of work for a simple integration layer
    upgrade.
    Thanks
    Gerhard Waterkamp ACSLA Inc.

    Hi,
    Could you try use the following method to fix this issue first?
    1. Run the System Update Readiness Tool, then check if there is any error in the Checksur.log and checksur.persist.log.
     1. Please run the System Update Readiness Tool on this affected server. Please download this tool from the following Microsoft article:
     Description of the System Update Readiness Tool for Windows Vista, for Windows Server 2008, and for Windows 7
     http://support.microsoft.com/kb/947821/en-us
    2. The System Update Readiness Tool creates the log files that captures any issues that the tool found or fixed. The log files are located at the following location:
    %SYSTEMROOT%\Logs\CBS\
    3. Please paste the checksur.log here for analysis.
    If there is no error found, please try the following step.
    ==================================
    2. Use Fix it tool to reset the Windows Update components.
     1. Open the following link.
     http://support.microsoft.com/kb/971058/en-nz
     2. Select Windows 8.1, Windows 8 and Windows 7 in the product selection box.
     3. Click “Run Now” to reset the Windows Update components.
    Note: We can reset the Windows Updates manually by following the steps in the KB above.
    3. Use the System File Checker tool to repair missing or corrupted system files
     1. Open the command promote with Administrators.
     2. At the command prompt, type the following command, and then press ENTER:
         sfc /scannow
    Any errors are found in the steps above, please let me know.
    Hope this helpful.
    Best Regards,
    Jason Zeng
    Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

  • Bean-Managed vs. Container-Managed Persistence

    Hello,
    I would like the real world skinny on bean-managed persistence vs. container-managed persistence. I have heard the bean-managed offers higher scalability and performance, while container-managed offers simplicity but with a cost. Can someone give me some perspective?
    Thanks,
    Rob Miller

    Wrong forum, but I guess if you are new to java it could be argued that anything goes...
    General rule:
    use CMP if you don't have worries about speed or legacy systems.
    use BMP if you need to control the persistence and/or want to connect to legacy host systems. BMP allows you to set up caching and transaction handlers to handle the presistence in a manner more suited to your needs.

Maybe you are looking for

  • BPM or not

    I have a scenario where i need to implement File --> SOAP(synchronous) --> File DO i need to use BPM for this? or can i do without BPM?

  • How to prevent action (lead selection change) with popup (confirmation)?

    Hello all, I have an application where I want the user to confirm when he selects a new line in a table. When the user selects a new line in the table an other used component reloads its data based on the new line selected. If the user has not presse

  • Reinstalling the iTunes that I liked

    I use computers, but I don't claim to understand how they work, so please excuse what may seem like a dumb question. I liked Snow Leopard more than Mountain Lion (the missing scroll arrows) and the older version of iTunes more than the current one, a

  • Embed SharePoint Calendar to External Web Page

    I would like to embed a SharePoint Calendar to an external public web page. This is very easy to do with google calendars and I have been struggling trying to find a solution in SharePoint.

  • Wifi problems dont know whats goin on :(

    so my wifi is not working correctly, it says that I am connected and have a connection to my network but nothing is working until i plug in an ethernet cable, anyone know whats going on?