1 2 3 Previous Next 42 Replies Latest reply on Dec 18, 2007 5:57 AM by marklittle

    Tibco EMS Integration

    mwax

      I have been trying to make JBoss ESB 4.2 work with Tibco EMS with no success. I have tried using both JBoss AS + JBoss ESB, and the bundled AS-ESB, and have been unsuccessful with both. (It took about 15 minutes to make JBoss AS alone work with Tibco, so I'm not completely in the dark.) Any tips?

        • 1. Re: Tibco EMS Integration
          kurtstam

          Hi MWax,

          I just tried and it got it to work right away using the following parameter settings:

          jndi-URL="tcp://<ip>:7222?
          jndi-context-factory="com.tibco.tibjms.naming.TibjmsInitialContextFactory "
          connection-factory="QueueConnectionFactory"
          destination-type="queue"
          destination-name="<queue-name>"
          


          and copying the tibco client jars into the jbossesb.sar/lib directory.

          Hope that helps,

          --Kurt



          • 2. Re: Tibco EMS Integration
            kurtstam

             



            jndi-URL="tcp://localhost:7222"
            jndi-context-factory="com.tibco.tibjms.naming.TibjmsInitialContextFactory"
            connection-factory="QueueConnectionFactory"
            destination-type="queue"
            destination-name="<queue-name>"



            • 3. Re: Tibco EMS Integration
              mwax

              As long as it is localhost, I have made it work doing what you suggest, but I also modified jndi.properties to add com.tibco.jms.naming to java.namingfactory.url.pkgs. Is this unnecessary?

              What I cannot do is use a remote Tibco server. I am getting the following error message; any suggestions?

              2007-10-22 11:42:32,404 DEBUG [org.jboss.internal.soa.esb.couriers.JmsCourier] Error from JMS system.
              javax.jms.JMSException: Failed to connect to the server at tcp://localhost:7222
              at com.tibco.tibjms.TibjmsxLinkTcp._createSocket(TibjmsxLinkTcp.java:817)
              at com.tibco.tibjms.TibjmsxLinkTcp.connect(TibjmsxLinkTcp.java:913)
              at com.tibco.tibjms.TibjmsConnection._create(TibjmsConnection.java:1002)
              at com.tibco.tibjms.TibjmsConnection.(TibjmsConnection.java:2699)
              at com.tibco.tibjms.TibjmsQueueConnection.(TibjmsQueueConnection.java:36)
              at com.tibco.tibjms.TibjmsxCFImpl._createImpl(TibjmsxCFImpl.java:159)
              at com.tibco.tibjms.TibjmsxCFImpl._createConnection(TibjmsxCFImpl.java:239)
              at com.tibco.tibjms.TibjmsXAQueueConnectionFactory.createQueueConnection(TibjmsXAQueueConnectionFactory.java:148)
              at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.addAnotherSession(JmsConnectionPool.java:126)
              at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.getSession(JmsConnectionPool.java:183)
              at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.getQueueSession(JmsConnectionPool.java:206)
              at org.jboss.internal.soa.esb.couriers.JmsCourier.createMessageConsumer(JmsCourier.java:420)
              at org.jboss.internal.soa.esb.couriers.JmsCourier.pickup(JmsCourier.java:316)
              at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:223)
              at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:205)
              at org.jboss.soa.esb.listeners.message.MessageAwareListener.waitForEventAndProcess(MessageAwareListener.java:268)
              at org.jboss.soa.esb.listeners.message.MessageAwareListener.doRun(MessageAwareListener.java:252)
              at org.jboss.soa.esb.listeners.lifecycle.AbstractThreadedManagedLifecycle.run(AbstractThreadedManagedLifecycle.java:115)
              at java.lang.Thread.run(Thread.java:595)
              2007-10-22 11:42:32,825 DEBUG [org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool] Creating a JMS Connection for
              2007-10-22 11:42:33,404 DEBUG [org.jboss.soa.esb.listeners.message.MessageAwareListener] Courier Exception
              org.jboss.soa.esb.couriers.CourierException: Unable to create Message Consumer
              at org.jboss.internal.soa.esb.couriers.JmsCourier.pickup(JmsCourier.java:327)
              at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:223)
              at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:205)
              at org.jboss.soa.esb.listeners.message.MessageAwareListener.waitForEventAndProcess(MessageAwareListener.java:268)
              at org.jboss.soa.esb.listeners.message.MessageAwareListener.doRun(MessageAwareListener.java:252)
              at org.jboss.soa.esb.listeners.lifecycle.AbstractThreadedManagedLifecycle.run(AbstractThreadedManagedLifecycle.java:115)
              at java.lang.Thread.run(Thread.java:595)
              Caused by: org.jboss.soa.esb.couriers.CourierException: javax.jms.JMSException: Failed to connect to the server at tcp://localhost:7222
              at org.jboss.internal.soa.esb.couriers.JmsCourier.createMessageConsumer(JmsCourier.java:456)
              at org.jboss.internal.soa.esb.couriers.JmsCourier.pickup(JmsCourier.java:316)
              ... 6 more
              Caused by: javax.jms.JMSException: Failed to connect to the server at tcp://localhost:7222
              at com.tibco.tibjms.TibjmsxLinkTcp._createSocket(TibjmsxLinkTcp.java:817)
              at com.tibco.tibjms.TibjmsxLinkTcp.connect(TibjmsxLinkTcp.java:913)
              at com.tibco.tibjms.TibjmsConnection._create(TibjmsConnection.java:1002)
              at com.tibco.tibjms.TibjmsConnection.(TibjmsConnection.java:2699)
              at com.tibco.tibjms.TibjmsQueueConnection.(TibjmsQueueConnection.java:36)
              at com.tibco.tibjms.TibjmsxCFImpl._createImpl(TibjmsxCFImpl.java:159)
              at com.tibco.tibjms.TibjmsxCFImpl._createConnection(TibjmsxCFImpl.java:239)
              at com.tibco.tibjms.TibjmsXAQueueConnectionFactory.createQueueConnection(TibjmsXAQueueConnectionFactory.java:148)
              at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.addAnotherSession(JmsConnectionPool.java:126)
              at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.getSession(JmsConnectionPool.java:183)
              at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.getQueueSession(JmsConnectionPool.java:206)
              at org.jboss.internal.soa.esb.couriers.JmsCourier.createMessageConsumer(JmsCourier.java:420)
              ... 7 more
              2007-10-22 11:42:33,404 WARN [org.jboss.soa.esb.listeners.message.MessageAwareListener] Error processing courier, backing off for 2000 milliseconds

              • 4. Re: Tibco EMS Integration
                kurtstam

                If your tibco EMS server is not running on localhost, then you need to put in the hostname/ip address of that host instead. You should only need to modify the settings in the jboss-esb.xml jms-provider section.

                --Kurt

                • 5. Re: Tibco EMS Integration
                  mwax

                  Thanks. I had put in hostname:port in place of localhost:port, but I still see the above Courier exception. Any ideas?

                  • 6. Re: Tibco EMS Integration
                    kurtstam

                    Well, if it says:

                    Failed to connect to the server at tcp://somehostname:7222


                    try to see if you can see it connect using


                    telnet somehostname 7222
                    


                    to see if you can 'see' that host, you may have firewall issues going on.

                    --Kurt

                    • 7. Re: Tibco EMS Integration
                      mwax

                      Thanks for the suggestion. I can connect, but the problem seems to be that ESB is picking up localhost from somewhere. I added some logging statements to JmsCourier and JmsConnectionPool, and I see the following:

                      2007-10-23 10:30:31,961 DEBUG [org.jbpm.svc.Services] closing service 'tx': org.jbpm.tx.TxService@d8dc2e
                      2007-10-23 10:30:32,165 DEBUG [org.jboss.internal.soa.esb.couriers.JmsCourier] Error from JMS system.
                      javax.jms.JMSException: Failed to connect to the server at tcp://localhost:7222
                      at com.tibco.tibjms.TibjmsxLinkTcp._createSocket(TibjmsxLinkTcp.java:817)
                      at com.tibco.tibjms.TibjmsxLinkTcp.connect(TibjmsxLinkTcp.java:913)
                      at com.tibco.tibjms.TibjmsConnection._create(TibjmsConnection.java:1002)
                      at com.tibco.tibjms.TibjmsConnection.(TibjmsConnection.java:2699)
                      at com.tibco.tibjms.TibjmsQueueConnection.(TibjmsQueueConnection.java:36)
                      at com.tibco.tibjms.TibjmsxCFImpl._createImpl(TibjmsxCFImpl.java:159)
                      at com.tibco.tibjms.TibjmsxCFImpl._createConnection(TibjmsxCFImpl.java:239)
                      at com.tibco.tibjms.TibjmsXAQueueConnectionFactory.createQueueConnection(TibjmsXAQueueConnectionFactory.java:148)
                      at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.addAnotherSession(JmsConnectionPool.java:127)
                      at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.getSession(JmsConnectionPool.java:184)
                      at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.getQueueSession(JmsConnectionPool.java:207)
                      at org.jboss.internal.soa.esb.couriers.JmsCourier.createMessageConsumer(JmsCourier.java:425)
                      at org.jboss.internal.soa.esb.couriers.JmsCourier.pickup(JmsCourier.java:316)
                      at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:223)
                      at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:205)
                      at org.jboss.soa.esb.listeners.message.MessageAwareListener.waitForEventAndProcess(MessageAwareListener.java:268)
                      at org.jboss.soa.esb.listeners.message.MessageAwareListener.doRun(MessageAwareListener.java:252)
                      at org.jboss.soa.esb.listeners.lifecycle.AbstractThreadedManagedLifecycle.run(AbstractThreadedManagedLifecycle.java:115)
                      at java.lang.Thread.run(Thread.java:595)
                      2007-10-23 10:30:32,680 INFO [org.jboss.internal.soa.esb.couriers.JmsCourier] >>>queue|queue/DeadMessageQueue
                      2007-10-23 10:30:32,680 INFO [org.jboss.internal.soa.esb.couriers.JmsCourier] >>>host: tcp://olpaws045.oldlane.corp:7222
                      2007-10-23 10:30:32,680 DEBUG [org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool] Creating a JMS Connection for
                      2007-10-23 10:30:32,680 INFO [org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool] >>>{java.naming.provider.url=tcp://olpaws045.oldlane.corp:7222, java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory, connection-factory=QueueConnectionFactory, destination-type=queue}
                      2007-10-23 10:30:33,165 DEBUG [org.jboss.soa.esb.listeners.message.MessageAwareListener] Courier Exception
                      org.jboss.soa.esb.couriers.CourierException: Unable to create Message Consumer
                      at org.jboss.internal.soa.esb.couriers.JmsCourier.pickup(JmsCourier.java:327)
                      at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:223)
                      at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:205)
                      at org.jboss.soa.esb.listeners.message.MessageAwareListener.waitForEventAndProcess(MessageAwareListener.java:268)
                      at org.jboss.soa.esb.listeners.message.MessageAwareListener.doRun(MessageAwareListener.java:252)
                      at org.jboss.soa.esb.listeners.lifecycle.AbstractThreadedManagedLifecycle.run(AbstractThreadedManagedLifecycle.java:115)
                      at java.lang.Thread.run(Thread.java:595)
                      Caused by: org.jboss.soa.esb.couriers.CourierException: javax.jms.JMSException: Failed to connect to the server at tcp://localhost:7222
                      at org.jboss.internal.soa.esb.couriers.JmsCourier.createMessageConsumer(JmsCourier.java:462)
                      at org.jboss.internal.soa.esb.couriers.JmsCourier.pickup(JmsCourier.java:316)
                      ... 6 more
                      Caused by: javax.jms.JMSException: Failed to connect to the server at tcp://localhost:7222
                      at com.tibco.tibjms.TibjmsxLinkTcp._createSocket(TibjmsxLinkTcp.java:817)
                      at com.tibco.tibjms.TibjmsxLinkTcp.connect(TibjmsxLinkTcp.java:913)
                      at com.tibco.tibjms.TibjmsConnection._create(TibjmsConnection.java:1002)
                      at com.tibco.tibjms.TibjmsConnection.(TibjmsConnection.java:2699)
                      at com.tibco.tibjms.TibjmsQueueConnection.(TibjmsQueueConnection.java:36)
                      at com.tibco.tibjms.TibjmsxCFImpl._createImpl(TibjmsxCFImpl.java:159)
                      at com.tibco.tibjms.TibjmsxCFImpl._createConnection(TibjmsxCFImpl.java:239)
                      at com.tibco.tibjms.TibjmsXAQueueConnectionFactory.createQueueConnection(TibjmsXAQueueConnectionFactory.java:148)
                      at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.addAnotherSession(JmsConnectionPool.java:127)
                      at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.getSession(JmsConnectionPool.java:184)
                      at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.getQueueSession(JmsConnectionPool.java:207)
                      at org.jboss.internal.soa.esb.couriers.JmsCourier.createMessageConsumer(JmsCourier.java:425)
                      ... 7 more
                      2007-10-23 10:30:33,165 WARN [org.jboss.soa.esb.listeners.message.MessageAwareListener] Error processing courier, backing off for 1000 milliseconds
                      2007-10-23 10:30:34,196 INFO [org.jboss.internal.soa.esb.couriers.JmsCourier] >>>queue|queue/DataCollectorQueue
                      2007-10-23 10:30:34,196 INFO [org.jboss.internal.soa.esb.couriers.JmsCourier] >>>host: tcp://olpaws045.oldlane.corp:7222
                      2007-10-23 10:30:35,196 DEBUG [org.jboss.internal.soa.esb.couriers.JmsCourier] Error from JMS system.
                      javax.jms.JMSException: Failed to connect to the server at tcp://localhost:7222
                      at com.tibco.tibjms.TibjmsxLinkTcp._createSocket(TibjmsxLinkTcp.java:817)
                      at com.tibco.tibjms.TibjmsxLinkTcp.connect(TibjmsxLinkTcp.java:913)
                      at com.tibco.tibjms.TibjmsConnection._create(TibjmsConnection.java:1002)
                      at com.tibco.tibjms.TibjmsConnection.(TibjmsConnection.java:2699)
                      at com.tibco.tibjms.TibjmsQueueConnection.(TibjmsQueueConnection.java:36)
                      at com.tibco.tibjms.TibjmsxCFImpl._createImpl(TibjmsxCFImpl.java:159)
                      at com.tibco.tibjms.TibjmsxCFImpl._createConnection(TibjmsxCFImpl.java:239)
                      at com.tibco.tibjms.TibjmsXAQueueConnectionFactory.createQueueConnection(TibjmsXAQueueConnectionFactory.java:148)
                      at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.addAnotherSession(JmsConnectionPool.java:127)
                      at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.getSession(JmsConnectionPool.java:184)
                      at org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPool.getQueueSession(JmsConnectionPool.java:207)
                      at org.jboss.internal.soa.esb.couriers.JmsCourier.createMessageConsumer(JmsCourier.java:425)
                      at org.jboss.internal.soa.esb.couriers.JmsCourier.pickup(JmsCourier.java:316)
                      at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:223)
                      at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:205)
                      at org.jboss.soa.esb.listeners.message.MessageAwareListener.waitForEventAndProcess(MessageAwareListener.java:268)
                      at org.jboss.soa.esb.listeners.message.MessageAwareListener.doRun(MessageAwareListener.java:252)
                      at org.jboss.soa.esb.listeners.lifecycle.AbstractThreadedManagedLifecycle.run(AbstractThreadedManagedLifecycle.java:115)
                      at java.lang.Thread.run(Thread.java:595)

                      • 8. Re: Tibco EMS Integration
                        kurtstam

                        In my case I also ran tibco on a different box, and I was successful. Can you do a search for 'tcp://localhost:7222'.You must have it still referenced somewhere!

                        --Kurt

                        • 9. Re: Tibco EMS Integration
                          mwax

                          I expected that I had tcp://localhost:7222 somewhere, but I have not been able to find it. I have not even been able to find localhost (or 127.0.0.1), except where you would expect it, e.g., for smtp host.

                          Where would you look? Could this end up in some jar?

                          • 10. Re: Tibco EMS Integration
                            kurtstam

                            This is what the provider section of my helloworld_action looks like:

                             <providers>
                             <jms-provider name="Tibco" connection-factory="QueueConnectionFactory"
                             jndi-URL="tcp://barentz:7222"
                             jndi-context-factory="com.tibco.tibjms.naming.TibjmsInitialContextFactory"
                             >
                            
                             <jms-bus busid="quickstartGwChannel">
                             <jms-message-filter
                             dest-type="QUEUE"
                             dest-name="myQueue"
                             />
                             </jms-bus>
                             <jms-bus busid="quickstartEsbChannel">
                             <jms-message-filter
                             dest-type="QUEUE"
                             dest-name="queue/B"
                             />
                             </jms-bus>
                            
                             </jms-provider>
                             </providers>
                            


                            Note that my Queues are is called 'myQueue' and 'queue/B'

                            Maybe you need to run an 'ant clean' to make sure you have no old
                            artifacts laying around. Check your deploy directory!

                            Next I simply send in a message using the tibco sample code:

                            java tibjmsMsgProducer -queue myQueue -user user1 User2
                            


                            and the console shows:

                            17:35:58,812 INFO [STDOUT] Message structure:
                            17:35:58,812 INFO [STDOUT] [User2].
                            17:35:58,812 INFO [STDOUT]
                            &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
                            17:35:58,812 INFO [STDOUT] Body: User2
                            17:35:58,812 INFO [STDOUT] &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
                            17:35:58,812 INFO [STDOUT] ConsoleNotifier 2007/10/23 05:35:58.812<
                            BEFORE**
                            User2
                            AFTER**
                            


                            --Kurt

                            • 11. Re: Tibco EMS Integration
                              mwax

                              I had changed the jboss-esb.xml file in deploy/jboss.esb/META-INF, and had not yet deployed any projects. This will not work, i.e., configuring the entire server instance to use Tibco? Would this then require that a second JMS provider exist for the DeadMessageQueue?

                              • 12. Re: Tibco EMS Integration
                                kurtstam

                                You can have as many JMS providers as you wish.

                                • 13. Re: Tibco EMS Integration
                                  mwax

                                  What about the JBoss internal services that are configured with the jboss-esb.xml under jbossesb.seb/META-INF? I have been unable to point these to a remote TIBCO instance.

                                  • 14. Re: Tibco EMS Integration
                                    kurtstam

                                    For those services to run of tibco you'd have to change the jbossesb.esb/META-INF/jboss-esb.xml jms-provider section so it contains the tibco factory settings etc.

                                    And even in one jboss-esb.xml you can have multiple jms-providers, so the ESB can function as a messaging bridge between JMS providers.

                                    Do you want me to attach me helloworld_action for tibco to the wiki? I think you are making it more complicated then it is :).

                                    Cheers,

                                    --Kurt

                                    1 2 3 Previous Next