1 Reply Latest reply on Sep 26, 2008 6:01 AM by garwind111

    Migrate from JBossMQ over HTTPs to JBoss-Messaging

      Hi all,

      We have a JBossMQ setup in production with one central server, 150 relay servers, and 10.000 clients. The relay servers connect to the central server using JMS over HTTPs, using an JNDI lookup over HTTPS with these properties:

      java.naming.provider.url=https://jbossmq.ebit.be/invoker/HAJNDIFactorySSL
      java.naming.factory.initial=org.jboss.naming.HttpNamingContextFactory
      java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces;java.protocol.handler.pkgs
      jndiName=HTTPConnectionFactory
      

      The relay servers and the central server are now JBoss 4.0.3sp1 with the included JBossMQ implementation.

      Would it be possible to upgrade the central server to JBoss-Messaging? Do we need to do any changes to the relay servers? These relay servers are clients to the central server. I read that we need to include jboss-messaging-client.jar in the classpath, will this conflict with the jbossmq server jars?

      Does JBoss-Messaging have an implementation of an HTTPConnectionFactory, or maybe we can reuse the JBossMQ implementation, without changing anything?

      Thanks in advance,
      Geert.

        • 1. Re: Migrate from JBossMQ over HTTPs to JBoss-Messaging
          garwind111

          Hello greyfairer,

          To configure HTTPS over Jboss Messaging, you must look at connection factories settings. By default, you have the bisocket connection factory.

          In the source config examples, you can find HTTP and SSL Bisocket configuration file. To find HTTPS configuration, you must specify SSL socket factory.
          To avoid you lost of time, see my config file :


          <mbean code="org.jboss.remoting.transport.Connector"
           name="jboss.messaging:service=Connector,transport=https"
           display-name="HTTPS transport Connector">
          
           <attribute name="Configuration">
           <config>
           <invoker transport="https">
           <attribute name="marshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
           <attribute name="unmarshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
           <attribute name="dataType" isParam="true">jms</attribute>
           <attribute name="leasePeriod">10000</attribute>
           <attribute name="socket.check_connection" isParam="true">false</attribute>
           <attribute name="callbackStore">org.jboss.remoting.callback.BlockingCallbackStore</attribute>
           <attribute name="callbackPollPeriod" isParam="true">102</attribute>
           <attribute name="clientLeasePeriod" isParam="true">20000</attribute>
          
           <attribute name="serverSocketFactory">jboss.messaging:service=ServerSocketFactory,type=SSL</attribute>
           <attribute name="SSLImplementation">org.jboss.remoting.transport.coyote.ssl.RemotingSSLImplementation</attribute>
           <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
           <attribute name="serverBindPort">9443</attribute>
           </invoker>
           <handlers>
           <!--
           <handler subsystem="web">org.jboss.remoting.samples.http.WebInvocationHandler</handler>
           <handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
           -->
           <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
           </handlers>
           </config>
           </attribute>
           <!-- This depends is included because need to make sure this mbean is running before configure invoker. -->
           <depends>jboss.messaging:service=ServerSocketFactory,type=SSL</depends>
           </mbean>


          Then you must write a connector for this connection factory.

          Look at Jboss remoting documentation also.