1 2 Previous Next 18 Replies Latest reply on Oct 14, 2013 8:30 PM by lwang99

    Jboss AS 7 on Tibco

    wichkabashir

      I am trying to migrate my application from jboss 5 to jboss 7.my application has MDBs using tibco messaging. how do i configure the tibco subsystem on jboss 7. currently i am using jms-ra.rar and my configuration file  tibco.xml under deploy directory  contains this:

       

       

      <connection-factories>

       

       

      <mbean code="org.jboss.naming.ExternalContext"

             name="jboss.jndi:service=ExternalContext,jndiName=tibco">

             <use-java-context>false</use-java-context>

             <attribute name="JndiName">tibco</attribute>

             <attribute name="Properties">

                java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory

                java.naming.provider.url=tibjmsnaming://xxx.abc.yyy.com:32662

                java.naming.factory.url.pkgs=com.tibco.tibjms.naming

                java.naming.security.authentication=none

                java.naming.referral=throw

             </attribute>

             <attribute name="InitialContext">javax.naming.InitialContext</attribute>

             <attribute name="RemoteAccess">true</attribute>

      </mbean>

       

      <mbean code="org.jboss.jms.jndi.JMSProviderLoader"  name="jboss.jndi:service=JMSProviderLoader,name=TibjmsProvider">

          <attribute name="ProviderName">TIBCOJMSProvider</attribute>

          <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>

          <attribute name="QueueFactoryRef">tibco/QueueConnectionFactory</attribute>

          <attribute name="TopicFactoryRef">tibco/TopicConnectionFactory</attribute>

          <attribute name="FactoryRef">tibco/ConnectionFactory</attribute>

      </mbean>

       

       

      <mbean code="org.jboss.naming.NamingAlias" name="jboss.jndi:service=NamingAlias,fromName=queue/DLQ">

          <attribute name="ToName">tibco/queue_DLQ</attribute>

          <attribute name="FromName">queue/DLQ</attribute>

      </mbean>

       

       

      <mbean code="org.jboss.naming.NamingAlias" name="DefaultDomain:service=NamingAlias,fromName=ConnectionF

      actory">

              <attribute name="ToName">tibco/ConnectionFactory</attribute>

              <attribute name="FromName">ConnectionFactory</attribute>

      </mbean>

       

      <mbean code="org.jboss.naming.NamingAlias" name="DefaultDomain:service=NamingAlias,fromName=TopicConnec

      tionFactory">

              <attribute name="ToName">tibco/XATopicConnectionFactory</attribute>

              <attribute name="FromName">TopicConnectionFactory</attribute>

      </mbean>

      .......

       

      Appreciate your help on this.

       

      thanks,

      Bashir

        • 1. Re: Jboss AS 7 on Tibco
          jbertram

          Your existing configuration uses the JBoss generic JMS JCA RA and the org.jboss.naming.ExternalContext MBean to integrate with Tibco, but these are no longer a part of JBoss AS in 7.x.  You'll need to use the Tibco JCA RA (if they provide one) and configure your MDB to use it (either via the @ResourceAdapter annotation or jboss-ejb3.xml).  Of course, you'll need to use the appropriate activation configuration properties on the MDB as well, but the Tibco documentation should provide all those details (assuming such documentation exists).

          1 of 1 people found this helpful
          • 2. Re: Jboss AS 7 on Tibco
            wichkabashir

            thank for your response. but why generic resource adapter will not work in jboss 7. can't i copy th relevent jar files from jboss 5? Tibco does not  provide RA. but assuming that generic adapter will work with jboss 7, my question is how to create sub system config in standalone.xml file to make tibco work in AS 7, since current messaging config in jboss 7 has some hornet/netty specefic tags in it.

             

            Thanks,

            Bashir

            • 3. Re: Jboss AS 7 on Tibco
              jbertram

              It may technically be possible to copy all the appropriate jars, etc. from JBoss AS 5, but the configuration, etc. will never be fully integrated into standalone*.xml in AS7.  This is mainly because the JBoss generic JMS JCA RA relies on the org.jboss.jms.jndi.JMSProviderAdapter MBean.  It is certainly possible to deploy MBeans in AS7, but their configuration is not part of the management model represented in standalone*.xml.

               

              The "messaging" subsystem in AS7 is specifically designed to integrate HornetQ which is why you see HornetQ settings in standalone*.xml.

               

              If Tibco doesn't provide it's own JCA RA then I recommend you press them to do so.  This will likely be a requirement in JMS 2.0, and most other vendors worth integrating with provide one already.

              1 of 1 people found this helpful
              • 4. Re: Jboss AS 7 on Tibco
                wichkabashir

                How do I map this mbean into Jboss AS 7 configuration. I tried using jboss:domain:naming but am not sure how to do it correctly

                 

                <mbean code="org.jboss.jms.jndi.JMSProviderLoader"  name="jboss.jndi:service=JMSProviderLoader,name=TibjmsProvider">
                    <attribute name="ProviderName">TIBCOJMSProvider</attribute>
                    <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
                    <attribute name="QueueFactoryRef">tibco/QueueConnectionFactory</attribute>
                    <attribute name="TopicFactoryRef">tibco/TopicConnectionFactory</attribute>
                    <attribute name="FactoryRef">tibco/ConnectionFactory</attribute>
                    <attribute name="Properties">
                          java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory
                          java.naming.provider.url=tibjmsnaming://JUSDA.us.yyy.com:32662
                          java.naming.factory.url.pkgs=com.tibco.tibjms.naming
                          java.naming.security.authentication=none
                          java.naming.referral=throw
                    </attribute>
                </mbean>

                 

                Thanks You,

                Basheer

                • 5. Re: Jboss AS 7 on Tibco
                  jbertram

                  There is no configuration in JBoss AS 7.1.0.Final which corresponds to the org.jboss.jms.jndi.JMSProviderLoader MBean from previous versions of JBoss AS.  That is why I indicated that you need to use the Tibco JMS JCA RA (if one exists). 

                   

                  If you want to use this MBean you'll have to port it over yourself.

                  • 6. Re: Jboss AS 7 on Tibco
                    wichkabashir

                    Tibco doesn't provide custom resource adapter and they claim that generic resource adapter works for all major app servers.

                     

                    My questions, how do you configure any Mbean in Jboss app 7? I know jboss 7 doesn' contain JMSProviderLoader. I will port the jar from version. just don't know how to configure Mbean in Jboss AS 7.

                     

                    Thanks,

                    Basheer

                    • 7. Re: Jboss AS 7 on Tibco
                      jbertram

                      In my opinion, it is short-sighted for Tibco to rely on third-party implementations to provide integration with their own software, and this is a perfect example why.  While JBossMQ and JBoss Messaging were the JMS implementations in JBoss AS (back in 4.x and 5.x) it was advantageous for us to have a generic JMS JCA RA because those JMS implementations didn't speak any other protocols but JMS.  However, since that time we've moved to HornetQ which supports a "core" API which is simpler and performs better than JMS and the HornetQ JCA RA uses this under-the-covers to communicate with the remote HornetQ broker.  That being the case, we no longer need a generic JMS JCA RA and have therefore removed it.  Although it was possible to use our generic JMS JCA RA to integrate with third-party JMS providers that (to my knowledge) was not the stated goal of the RA.  In fact, it contained logic specifically put in place to integrate with JBossMQ that is recommended to be disabled when integrating with JBoss Messaging.

                       

                      As for deploying an MBean in JBoss AS 7.1.0.Final I recommend this article.  That said, I can't recommend this approach because even after you port the org.jboss.jms.jndi.JMSProviderLoader MBean (and all of its dependencies) you will still have to port over the generic JMS JCA RA and that isn't guaranteed to deploy in AS 7.1.0.Final (which uses a new JCA implementation - IronJacamar).

                       

                      At the very least I recommend you press Tibco to provide a JCA RA.

                      • 8. Re: Jboss AS 7 on Tibco
                        stevemebius

                        Does anyone finally get the Jboss 7 (in my case Jboss 7.1.1 final) integrated with a remote JMS provider (in my case JBoss 4.2.3)?

                         

                        If you can get it working, could you post your working config files (e.g., standalone.xml and etc)?

                         

                        If you have any interesting discoveries, could you share?

                         

                        Thanks in advance.

                         

                        Below is a description of the issue I am facing:

                         

                        I have a JBoss 4.2.3 MDB which is talking to a JBoss 4.2.3 JMS instance.

                         

                        Now I want to migrate the MDB to JBoss 7.1.1 but keep talking to the same JBoss 4.2.3 JMS instance (as phrase 1).

                         

                        I think I need to add some setup in standalone.xml but I don't know exactly what to add, or where, or how.

                         

                        The anontation of my MDB code looks like this:

                         

                        ======

                        @MessageDriven(activationConfig = {

                                @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "auto-acknowledge"),

                                @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),

                                @ActivationConfigProperty(propertyName = "destination", propertyValue = "/topic/broadcast"),

                                @ActivationConfigProperty(propertyName = "messageSelector", propertyValue = "channel='general'"),

                                @ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable"),

                                @ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "xyz-broadcast"),

                                @ActivationConfigProperty(propertyName = "clientId", propertyValue = "listener-xyz"),

                                @ActivationConfigProperty(propertyName = "providerAdapterJNDI", propertyValue = "java:/RemoteJMSProvider") })

                        // We are using Spring transaction management so disable CMT

                        @TransactionManagement(TransactionManagementType.BEAN)

                        =====

                         

                        My Jboss 4.2.3 setup (default/deploy/jms/jms-ds.xml) for JMS looks like this:

                         

                        ======

                        ...

                        <mbean code="org.jboss.jms.jndi.JMSProviderLoader"

                              name="jboss.mq:service=JMSProviderLoader,name=RemoteJMSProvider,server=remotehost">

                            <attribute name="ProviderName">RemoteJMSProvider</attribute>

                            <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>

                            <!-- The connection factory -->

                            <attribute name="FactoryRef">UIL2XAConnectionFactory</attribute>

                            <!-- The queue connection factory -->

                            <attribute name="QueueFactoryRef">UIL2XAConnectionFactory</attribute>

                            <!-- The topic factory -->

                            <attribute name="TopicFactoryRef">UIL2XAConnectionFactory</attribute>

                            <!-- Connect to JNDI on the host "the-remote-host-name" port 1099-->

                            <attribute name="Properties">

                               java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

                               java.naming.factory.url.pkgs=org.jnp.interfaces

                               java.naming.provider.url=hostxyz:1099

                            </attribute>

                          </mbean>

                        =========

                         

                        I think I can reuse the existing jbossall-client.jar to provide me all the needed classes for accessing JNP protocol.

                         

                        I think all I need is the right configuration in Jboss 7.1.1 to complete the task.

                        • 9. Re: Jboss AS 7 on Tibco
                          jbertram

                          For an MDB running in AS7 to consume JMS messages from AS 4.2.3 it would need to use an appropriate JCA resource adapter.  Unfortunately no such resource adapter exists to facilitate this integration.

                           

                          Assuming you are using JBoss Messaging in AS 4.2.3, I recommend you set up a JMS bridge to forward messages to AS7 and then your MDB in AS7 can consume the messages from a local destination.  You can find more information about the JMS bridge in the JBoss Messaging documentation.

                          • 10. Re: Jboss AS 7 on Tibco
                            stevemebius

                            Thanks for the suggestion of using the JMS bridge in JBoss Messageing. I have these worries:

                             

                            1. I will be investigating more time in making JMS bridge in a JBoss 4.2.3 system which I am trying to retire it in the future.

                             

                            2. I would prefer to spend resources in future systems.

                             

                            3. Will this approach work:

                             

                            The producer (web application) posting messages is running in a JBoss 4.2.3 instance. Instead of making it to post messages to its local JMS server, I can make it post messages to the JBoss 7.1.1 JMS instance.  Therefore the consumer (MDB) running in the JBoss 7.1.1 will consume the messages from the local JMS instance.

                             

                            Will this approach work? Can a web applications running in JBoss 4.2.3 posting messages to JBoss 7.1.1 JMS server?

                             

                            I would think it should work. Any JMS clients (from any vendor) should be able to communicate to any JMS server (from any vendor). Is this thinking correct?

                             

                            Thanks in advance for any comments.

                            • 11. Re: Jboss AS 7 on Tibco
                              jbertram

                              The producer (web application) posting messages is running in a JBoss 4.2.3 instance. Instead of making it to post messages to its local JMS server, I can make it post messages to the JBoss 7.1.1 JMS instance.  Therefore the consumer (MDB) running in the JBoss 7.1.1 will consume the messages from the local JMS instance.

                              Yes, that approach will work.  However, instead of changing your MDB to post messages to AS7 you could just use the bridge to move those messages.  That is what the bridge is for, and that would save you from making code changes.

                               

                              Will this approach work? Can a web applications running in JBoss 4.2.3 posting messages to JBoss 7.1.1 JMS server?

                              Yes.  If necessary, a web application running in JBoss AS 4.2.3 can post messages to a destination in JBoss AS 7.  All it needs are the right client JAR files and the proper IntialContext properties.

                               

                              I would think it should work. Any JMS clients (from any vendor) should be able to communicate to any JMS server (from any vendor). Is this thinking correct?

                              Yes.

                              • 12. Re: Jboss AS 7 on Tibco
                                ykravchenko

                                Hi,

                                 

                                Please check this article that I just created. It describes how to integreate Jboss7 with Tibco EMS using generic jms RA. However please note that this solution is not well tested. Anyway it will give a clue of how to configure things like that.

                                https://community.jboss.org/wiki/JBoss7IntegrationWithTibcoEMSUsingGenericJMSRA

                                 

                                Thanks,

                                YK

                                • 13. Re: Jboss AS 7 on Tibco
                                  jbertram

                                  To facilitate the integration of 3rd-party JMS brokers as well as JBoss JMS brokers like JBossMQ and JBoss Messaging I have written a generic JMS JCA Resoure Adapter which should work in AS7.  The project is hosted here where you can find documentation, and sourcey.  It should be more straight-foward than using Sun's generic JMS JCA RA because you won't have to re-build it just so it will deploy.

                                  • 14. Re: Jboss AS 7 on Tibco
                                    jbertram

                                    Quick update...The JBoss Generic JMS JCA RA has been validated to work with Tibco EMS 5.1 and 6.0.  See the documentation for Tibco integration notes.

                                    1 2 Previous Next