3 Replies Latest reply on Jun 23, 2010 5:03 AM by Kobi Ianko

    JMS over HTTP(S) -

    Carsten Rudat Novice

      Hi all,

      I'd like to use JMS over HTTPs. I followed the instructions on http://jboss.org/community/docs/DOC-9631 (except that I configured a https/sslservlet for the public jms connector and I use the all config).

      Now, I try to run a simple example

      Properties p = new Properties();
      p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.HttpNamingContextFactory");
      p.put(Context.PROVIDER_URL, "http://localhost:8080/unified-invoker/PrivateJNDIFactory/?return-exception=true");
      p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
      InitialContext ctx = new InitialContext(p);
      
      QueueConnectionFactory cf = (QueueConnectionFactory) ctx.lookup("/PrivateServletConnectionFactory");
      Queue queue = (Queue) ctx.lookup("queue/testQueue");
      
      // everything is ok but...
      
      // now RuntimeException (Failed to download and/or install client side AOP stack)
      QueueConnection conn = cf.createQueueConnection();
      QueueSession session = conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
      conn.start();
      
      // Set the async listener
      QueueReceiver recv = session.createReceiver(queue);
      recv.setMessageListener(new ExListener());
      
      // Send a text msg
      QueueSender send = session.createSender(queue);
      TextMessage tm = session.createTextMessage("Text");
      send.send(tm);
      log.info("sendRecvAsync, sent text=" + tm.getText());
      send.close();
      log.info("End sendRecvAsync");
      


      I run my Client with javaassist.jar, jboss-aop-jdk50-client.jar, jboss-ejb3-client.jar (I tested the EJB over https, too - that works), jboss-j2ee.jar and jboss-messaging-client.jar in classpath.

      I get the error:
      Failed to download and/or install client side AOP stack
      
      java.lang.RuntimeException: Failed to download and/or install client side AOP stack
       at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:199)
       at org.jboss.jms.client.JBossConnectionFactory.createQueueConnection(JBossConnectionFactory.java:101)
       at org.jboss.jms.client.JBossConnectionFactory.createQueueConnection(JBossConnectionFactory.java:95)
       at com.genloop.test.client.TimeTellerClient.main(TimeTellerClient.java:54)
      Caused by: org.jboss.jms.exception.MessagingNetworkFailureException
       at org.jboss.jms.client.delegate.DelegateSupport.handleThrowable(DelegateSupport.java:240)
       at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:205)
       at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:160)
       at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.org$jboss$jms$client$delegate$ClientConnectionFactoryDelegate$getClientAOPStack$aop(ClientConnectionFactoryDelegate.java:233)
       at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.getClientAOPStack(ClientConnectionFactoryDelegate.java)
       at org.jboss.jms.client.ClientAOPStackLoader.load(ClientAOPStackLoader.java:75)
       at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:192)
       ... 3 more
      Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker.
       at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:334)
       at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:136)
       at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
       at org.jboss.remoting.Client.invoke(Client.java:1634)
       at org.jboss.remoting.Client.invoke(Client.java:548)
       at org.jboss.remoting.Client.invoke(Client.java:536)
       at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:189)
       ... 8 more
      Caused by: java.lang.IllegalArgumentException: Invalid packet type: 1013478509
       at org.jboss.jms.wireformat.PacketSupport.createPacket(PacketSupport.java:379)
       at org.jboss.jms.wireformat.JMSWireFormat.read(JMSWireFormat.java:290)
       at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:502)
       at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:306)
       ... 14 more
      


      I just found to entries in JBoss Forum... but the didn't help me.
      What am I doing wrong?

      Thanks,
      Carsten



      My config:
      JBoss-4.2.3.GA (all config)
      JBoss Messaging 1.4.2.GA


      server/all/deploy/nat-inverks.sar/META-INF/jboss-service.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <!-- $Id: jboss-service.xml 419 2009-02-06 15:07:31Z carsten $ -->
      <server>
       <!-- Expose the Naming service interface via the UnifiedInvoker using private Servlet transport -->
       <mbean code="org.jboss.invocation.jrmp.server.JRMPProxyFactory"
       name="jboss:service=proxyfactory,type=unified,transport=servlet,target=naming,loc=private">
       <attribute name="TargetName">jboss:service=Naming</attribute>
       <attribute name="JndiName"></attribute>
       <attribute name="ExportedInterface">org.jnp.interfaces.Naming</attribute>
       <attribute name="ClientInterceptors">
       <interceptors>
       <interceptor>org.jboss.proxy.ClientMethodInterceptor</interceptor>
       <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor>
       <interceptor>org.jboss.naming.interceptors.ExceptionInterceptor</interceptor>
       <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
       </interceptors>
       </attribute>
       <depends optional-attribute-name="InvokerName">
       jboss:service=invoker,type=unified,transport=servlet,loc=private
       </depends>
       </mbean>
      
       <!-- Expose the Naming service interface via the UnifiedInvoker using public Servlet transport -->
       <mbean code="org.jboss.invocation.jrmp.server.JRMPProxyFactory"
       name="jboss:service=proxyfactory,type=unified,transport=sslservlet,target=naming,loc=public">
       <attribute name="TargetName">jboss:service=Naming</attribute>
       <attribute name="JndiName"></attribute>
       <attribute name="ExportedInterface">org.jnp.interfaces.Naming</attribute>
       <attribute name="ClientInterceptors">
       <interceptors>
       <interceptor>org.jboss.proxy.ClientMethodInterceptor</interceptor>
       <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor>
       <interceptor>org.jboss.naming.interceptors.ExceptionInterceptor</interceptor>
       <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
       </interceptors>
       </attribute>
       <depends optional-attribute-name="InvokerName">
       jboss:service=invoker,type=unified,transport=sslservlet,loc=public
       </depends>
       </mbean>
      
       <!-- Unified invoker (based on remoting) for invocations via private HTTP with target EJB2 beans or JNDI -->
       <mbean code="org.jboss.invocation.unified.server.UnifiedInvoker"
       name="jboss:service=invoker,type=unified,transport=servlet,loc=private">
       <depends>jboss:service=TransactionManager</depends>
       <depends>jboss.remoting:service=connector,transport=servlet,loc=private</depends>
       </mbean>
      
       <!-- Unified invoker (based on remoting) for invocations via public HTTP with target EJB2 beans or JNDI -->
       <mbean code="org.jboss.invocation.unified.server.UnifiedInvoker"
       name="jboss:service=invoker,type=unified,transport=sslservlet,loc=public">
       <depends>jboss:service=TransactionManager</depends>
       <depends>jboss.remoting:service=connector,transport=sslservlet,loc=public</depends>
       </mbean>
      
       <!-- Remoting connector for standard EJB2 beans and JNDI that are accessed
       from within the internal/private network. -->
       <mbean code="org.jboss.remoting.transport.Connector"
       name="jboss.remoting:service=connector,transport=servlet,loc=private"
       display-name="Servlet transport Connector">
       <attribute name="Configuration">
       <config>
       <invoker transport="servlet">
       <attribute name="dataType" isParam="true">invocation</attribute>
       <attribute name="marshaller" isParam="true">org.jboss.invocation.unified.marshall.InvocationMarshaller</attribute>
       <attribute name="unmarshaller" isParam="true">org.jboss.invocation.unified.marshall.InvocationUnMarshaller</attribute>
       <attribute name="return-exception" isParam="true">true</attribute>
       <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
       <attribute name="serverBindPort">8080</attribute>
       <attribute name="path">unified-invoker/PrivateServerInvokerServlet</attribute>
       </invoker>
       <handlers>
       <handler subsystem="invoker">jboss:service=invoker,type=unified,transport=servlet,loc=private</handler>
       </handlers>
       </config>
       </attribute>
       </mbean>
      
       <!-- Remoting connector for standard EJB2 beans and JNDI that are accessed
       from the public network network. Please also remember to change the client
       bind url accordingly so that the EJB calls are directed the public IP -->
       <mbean code="org.jboss.remoting.transport.Connector"
       name="jboss.remoting:service=connector,transport=sslservlet,loc=public"
       display-name="Servlet transport Connector">
       <attribute name="Configuration">
       <config>
       <invoker transport="sslservlet">
       <attribute name="dataType" isParam="true">invocation</attribute>
       <attribute name="marshaller" isParam="true">org.jboss.invocation.unified.marshall.InvocationMarshaller</attribute>
       <attribute name="unmarshaller" isParam="true">org.jboss.invocation.unified.marshall.InvocationUnMarshaller</attribute>
       <attribute name="return-exception" isParam="true">true</attribute>
       <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
       <attribute name="serverBindPort">8443</attribute>
       <attribute name="clientConnectAddress">${public.firewall.address}</attribute>
       <attribute name="clientConnectPort">8443</attribute>
       <attribute name="path">unified-invoker/PublicServerInvokerServlet</attribute>
       </invoker>
       <handlers>
       <handler subsystem="invoker">jboss:service=invoker,type=unified,transport=sslservlet,loc=public</handler>
       </handlers>
       </config>
       </attribute>
       </mbean>
      
       <!-- Unified invoker (based on remoting) for invocations via private HTTP with
       target EJB3 beans.
       -->
       <mbean code="org.jboss.remoting.transport.Connector"
       name="jboss.remoting:service=connector,transport=servlet,target=ejb3,loc=private"
       display-name="EJB3 Servlet transport Connector">
       <depends>jboss.aop:service=AspectDeployer</depends>
       <attribute name="InvokerLocator">
       servlet://${jboss.bind.address}:8080/unified-invoker/PrivateEjb3ServerInvokerServlet
       </attribute>
       <attribute name="Configuration">
       <handlers>
       <handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
       </handlers>
       </attribute>
       </mbean>
      
       <!-- Unified invoker (based on remoting) for invocations via public HTTP with
       target EJB3 beans. Please make sure that you also change EJB3 bean's
       client-bind-url so that it contains the public IP, i.e:
      
       <client-bind-url>
       http://${public.firewall.address}:8080/unified-invoker/PublicEjb3ServerInvokerServlet
       </client-bind-url>
       -->
       <mbean code="org.jboss.remoting.transport.Connector"
       name="jboss.remoting:service=connector,transport=sslservlet,target=ejb3,loc=public"
       display-name="EJB3 Servlet SSL transport Connector">
       <depends>jboss.aop:service=AspectDeployer</depends>
       <attribute name="InvokerLocator">
       sslservlet://${public.firewall.address}:8443/unified-invoker/PublicEjb3ServerInvokerServlet
       </attribute>
       <attribute name="Configuration">
       <config>
       <invoker transport="sslservlet">
       <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
       <attribute name="serverBindPort">8443</attribute>
       <attribute name="clientConnectAddress">${public.firewall.address}</attribute>
       <attribute name="clientConnectPort">8443</attribute>
       <attribute name="path">unified-invoker/PublicEjb3ServerInvokerServlet</attribute>
       </invoker>
       <handlers>
       <handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
       </handlers>
       </config>
       </attribute>
       </mbean>
      
       <mbean code="org.jboss.remoting.transport.Connector"
       name="jboss.remoting:service=connector,transport=servlet,target=jms,loc=private"
       display-name="JMS Private Servlet transport Connector">
       <attribute name="Configuration">
       <config>
       <invoker transport="servlet">
       <!-- There should be no reason to change these parameters - warning!
       Changing them may stop JBoss Messaging working correctly -->
       <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="serverBindAddress">${jboss.bind.address}</attribute>
       <attribute name="serverBindPort">8080</attribute>
       <attribute name="numberOfCallRetries" isParam="true">1</attribute>
       <attribute name="pingFrequency" isParam="true">214748364</attribute>
       <attribute name="pingWindowFactor" isParam="true">10</attribute>
       <attribute name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute>
       <attribute name="callbackStore">org.jboss.remoting.callback.BlockingCallbackStore</attribute>
       <attribute name="unwrapSingletonArrays">true</attribute>
       <attribute name="path">unified-invoker/PrivateJmsServerInvokerServlet</attribute>
       <attribute name="return-exception">true</attribute>
       <attribute name="createUniqueObjectName">true</attribute>
       <attribute name="useAllParams" isParam="true">true</attribute>
       <!-- End immutable parameters -->
      
       <attribute name="stopLeaseOnFailure" isParam="true">true</attribute>
      
       <!-- Periodicity of client pings. Server window by default is twice this figure -->
       <attribute name="clientLeasePeriod" isParam="true">10000</attribute>
       <attribute name="validatorPingPeriod" isParam="true">10000</attribute>
       <attribute name="validatorPingTimeout" isParam="true">5000</attribute>
       <attribute name="registerCallbackListener">false</attribute>
      
       <attribute name="timeout" isParam="true">0</attribute>
      
       <!-- Set this to true if you want the servlet transport to block waiting for server->client traffic.
       Or false if you want it to poll for new traffic periodically. Recommended is blocking -->
       <attribute name="blockingMode" isParam="true">blocking</attribute>
      
       <!-- Timeout for blocking. Only has relevance if blockingMode = blocking -->
       <attribute name="blockingTimeout" isParam="true">30000</attribute>
      
       <!-- The periodicity of polling. Only has relevance if blockingMode = nonblocking -->
       <!--attribute name="callbackPollPeriod" isParam="true">10000</attribute-->
       </invoker>
       <handlers>
       <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
       </handlers>
       </config>
       </attribute>
       </mbean>
      
       <mbean code="org.jboss.remoting.transport.Connector"
       name="jboss.remoting:service=connector,transport=sslservlet,target=jms,loc=public"
       display-name="JMS Public Servlet transport Connector">
       <attribute name="Configuration">
       <config>
       <invoker transport="sslservlet">
       <!-- There should be no reason to change these parameters - warning!
       Changing them may stop JBoss Messaging working correctly -->
       <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="serverBindAddress">${jboss.bind.address}</attribute>
       <attribute name="serverBindPort">8443</attribute>
       <attribute name="clientConnectAddress">${public.firewall.address}</attribute>
       <attribute name="clientConnectPort">8443</attribute>
       <attribute name="numberOfCallRetries" isParam="true">1</attribute>
       <attribute name="pingFrequency" isParam="true">214748364</attribute>
       <attribute name="pingWindowFactor" isParam="true">10</attribute>
       <attribute name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute>
       <attribute name="callbackStore">org.jboss.remoting.callback.BlockingCallbackStore</attribute>
       <attribute name="unwrapSingletonArrays">true</attribute>
       <attribute name="path">unified-invoker/PublicJmsServerInvokerServlet</attribute>
       <attribute name="return-exception">true</attribute>
       <attribute name="createUniqueObjectName">true</attribute>
       <attribute name="useAllParams" isParam="true">true</attribute>
       <!-- End immutable parameters -->
      
       <attribute name="stopLeaseOnFailure" isParam="true">true</attribute>
      
       <!-- Periodicity of client pings. Server window by default is twice this figure -->
       <attribute name="clientLeasePeriod" isParam="true">10000</attribute>
       <attribute name="validatorPingPeriod" isParam="true">10000</attribute>
       <attribute name="validatorPingTimeout" isParam="true">5000</attribute>
       <attribute name="registerCallbackListener">false</attribute>
      
       <attribute name="timeout" isParam="true">0</attribute>
      
       <!-- Set this to true if you want the servlet transport to block waiting for server->client traffic.
       Or false if you want it to poll for new traffic periodically. Recommended is blocking -->
       <attribute name="blockingMode" isParam="true">blocking</attribute>
      
       <!-- Timeout for blocking. Only has relevance if blockingMode = blocking -->
       <attribute name="blockingTimeout" isParam="true">30000</attribute>
      
       <!-- The periodicity of polling. Only has relevance if blockingMode = nonblocking -->
       <!--attribute name="callbackPollPeriod" isParam="true">10000</attribute-->
       </invoker>
       <handlers>
       <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
       </handlers>
       </config>
       </attribute>
       </mbean>
      
       <mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
       name="jboss.messaging.destination:service=ServletConnectionFactory,loc=private"
       xmbean-dd="xmdesc/ConnectionFactory-xmbean.xml">
       <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
       <depends optional-attribute-name="Connector">jboss.remoting:service=connector,transport=servlet,target=jms,loc=private</depends>
       <depends>jboss.messaging:service=PostOffice</depends>
       <attribute name="JNDIBindings">
       <bindings>
       <binding>/PrivateServletConnectionFactory</binding>
       </bindings>
       </attribute>
       </mbean>
      
       <mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
       name="jboss.messaging.destination:service=ServletConnectionFactory,loc=public"
       xmbean-dd="xmdesc/ConnectionFactory-xmbean.xml">
       <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
       <depends optional-attribute-name="Connector">jboss.remoting:service=connector,transport=sslservlet,target=jms,loc=public</depends>
       <depends>jboss.messaging:service=PostOffice</depends>
       <attribute name="JNDIBindings">
       <bindings>
       <binding>/PublicServletConnectionFactory</binding>
       </bindings>
       </attribute>
       </mbean>
      
      </server>
      


      server/all/deploy/nat-invokers.sar/unified-invoker.war/WEB-INF

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE web-app PUBLIC
       "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
       "http://java.sun.com/dtd/web-app_2_3.dtd">
      <web-app>
       <servlet>
       <servlet-name>PrivateServerInvokerServlet</servlet-name>
       <description>The ServerInvokerServlet receives requests via HTTP protocol
       from within a web container and passes it onto the ServletServerInvoker
       for processing.
       </description>
       <servlet-class>org.jboss.remoting.transport.servlet.web.ServerInvokerServlet</servlet-class>
       <init-param>
       <param-name>invokerName</param-name>
       <param-value>jboss.remoting:service=invoker,transport=servlet</param-value>
       <description>The servlet server invoker</description>
       </init-param>
       <!-- init-param>
       <param-name>locatorUrl</param-name>
       <param-value>
       <![CDATA[servlet://${jboss.bind.address}:8080/unified-invoker/ServerInvokerServlet/?dataType=invocation&marshaller=org.jboss.invocation.unified.marshall.InvocationMarshaller&unmarshaller=org.jboss.invocation.unified.marshall.InvocationUnMarshaller]]>
       </param-value>
       <description>The servlet server invoker</description>
       </init-param -->
       <load-on-startup>1</load-on-startup>
       </servlet>
      
       <servlet>
       <servlet-name>PublicServerInvokerServlet</servlet-name>
       <description>The ServerInvokerServlet receives requests via HTTPs protocol
       from within a web container and passes it onto the ServletServerInvoker
       for processing.
       </description>
       <servlet-class>org.jboss.remoting.transport.servlet.web.ServerInvokerServlet</servlet-class>
       <init-param>
       <param-name>locatorUrl</param-name>
       <param-value>
       <![CDATA[sslservlet://${public.firewall.address}:8443/unified-invoker/PublicServerInvokerServlet/?dataType=invocation&marshaller=org.jboss.invocation.unified.marshall.InvocationMarshaller&unmarshaller=org.jboss.invocation.unified.marshall.InvocationUnMarshaller&return-exception=true]]>
       </param-value>
       <description>The servlet server invoker</description>
       </init-param>
       <load-on-startup>1</load-on-startup>
       </servlet>
      
       <servlet>
       <servlet-name>PrivateEjb3ServerInvokerServlet</servlet-name>
       <description>The ServerInvokerServlet receives requests via HTTP
       protocol from within a web container and passes it onto the
       ServletServerInvoker for processing.
       </description>
       <servlet-class>org.jboss.remoting.transport.servlet.web.ServerInvokerServlet</servlet-class>
       <!-- Pass locatorUrl instead of invokerName because otherwise you end up
       sharing the same server invoker for org.jboss.invocation and org.jboss.aop
       type of invocations which you don't wanna do. Worth noting that invokerName
       is hardcoded and hence you cannot create a separate one that way, hence the
       use of locatorUrl. -->
       <init-param>
       <param-name>locatorUrl</param-name>
       <param-value>servlet://${jboss.bind.address}:8080/unified-invoker/PrivateEjb3ServerInvokerServlet</param-value>
       <description>The servlet server invoker</description>
       </init-param>
       <!-- init-param>
       <param-name>invokerName</param-name>
       <param-value>jboss.remoting:service=invoker,transport=servlet</param-value>
       <description>The servlet server invoker</description>
       </init-param -->
       <load-on-startup>1</load-on-startup>
       </servlet>
      
       <servlet>
       <servlet-name>PublicEjb3ServerInvokerServlet</servlet-name>
       <description>The ServerInvokerServlet receives requests via HTTPS
       protocol from within a web container and passes it onto the
       ServletServerInvoker for processing.
       </description>
       <servlet-class>org.jboss.remoting.transport.servlet.web.ServerInvokerServlet</servlet-class>
       <init-param>
       <param-name>locatorUrl</param-name>
       <param-value>sslservlet://${public.firewall.address}:8443/unified-invoker/PublicEjb3ServerInvokerServlet</param-value>
       <description>The ssl servlet server invoker locator url</description>
       </init-param>
       <load-on-startup>1</load-on-startup>
       </servlet>
      
       <servlet>
       <servlet-name>PrivateJNDIFactory</servlet-name>
       <description>A servlet that exposes the JBoss JNDI Naming service stub
       through http. The return content is a serialized
       MarshalledValue containg the org.jnp.interfaces.Naming stub. This
       configuration handles requests for the standard JNDI naming service.
       </description>
       <servlet-class>org.jboss.invocation.http.servlet.NamingFactoryServlet</servlet-class>
       <init-param>
       <param-name>namingProxyMBean</param-name>
       <param-value>jboss:service=proxyfactory,type=unified,transport=servlet,target=naming,loc=private</param-value>
       </init-param>
       <init-param>
       <param-name>proxyAttribute</param-name>
       <param-value>Proxy</param-value>
       </init-param>
       <load-on-startup>2</load-on-startup>
       </servlet>
      
       <servlet>
       <servlet-name>PublicJNDIFactory</servlet-name>
       <description>A servlet that exposes the JBoss JNDI Naming service stub
       through http. The return content is a serialized
       MarshalledValue containg the org.jnp.interfaces.Naming stub. This
       configuration handles requests for the standard JNDI naming service.
       </description>
       <servlet-class>org.jboss.invocation.http.servlet.NamingFactoryServlet</servlet-class>
       <init-param>
       <param-name>namingProxyMBean</param-name>
       <param-value>jboss:service=proxyfactory,type=unified,transport=sslservlet,target=naming,loc=public</param-value>
       </init-param>
       <init-param>
       <param-name>proxyAttribute</param-name>
       <param-value>Proxy</param-value>
       </init-param>
       <load-on-startup>2</load-on-startup>
       </servlet>
      
       <servlet>
       <servlet-name>PrivateJmsServerInvokerServlet</servlet-name>
       <description>The JmsServerInvokerServlet receives JMS requests via HTTP
       protocol from within a web container and passes it onto the
       ServletServerInvoker for processing.
       </description>
       <servlet-class>org.jboss.remoting.transport.servlet.web.ServerInvokerServlet</servlet-class>
       <init-param>
       <param-name>locatorUrl</param-name>
       <param-value>
       <![CDATA[servlet://${jboss.bind.address}:8080/unified-invoker/PrivateJmsServerInvokerServlet/?dataType=jms&marshaller=org.jboss.jms.wireformat.JMSWireFormat&unmarshaller=org.jboss.jms.wireformat.JMSWireFormat&numberOfCallRetries=1&pingFrequency=214748364&pingWindowFactor=10&stopLeaseOnFailure=true&clientLeasePeriod=10000&validatorPingPeriod=10000&validatorPingTimeout=5000&timeout=0&blockingMode=blocking&blockingTimeout=30000&useAllParams=true]]>
       </param-value>
       <description>The servlet server invoker</description>
       </init-param>
       <load-on-startup>1</load-on-startup>
       </servlet>
      
       <servlet>
       <servlet-name>PublicJmsServerInvokerServlet</servlet-name>
       <description>The JmsServerInvokerServlet receives JMS requests via HTTP
       protocol from within a web container and passes it onto the
       ServletServerInvoker for processing.
       </description>
       <servlet-class>org.jboss.remoting.transport.servlet.web.ServerInvokerServlet</servlet-class>
       <init-param>
       <param-name>locatorUrl</param-name>
       <param-value>
       <![CDATA[sslservlet://${public.firewall.address}:8443/unified-invoker/PublicJmsServerInvokerServlet/?dataType=jms&marshaller=org.jboss.jms.wireformat.JMSWireFormat&unmarshaller=org.jboss.jms.wireformat.JMSWireFormat&numberOfCallRetries=1&pingFrequency=214748364&pingWindowFactor=10&stopLeaseOnFailure=true&clientLeasePeriod=10000&validatorPingPeriod=10000&validatorPingTimeout=5000&timeout=0&blockingMode=blocking&blockingTimeout=30000&useAllParams=true]]>
       </param-value>
       <description>The servlet server invoker</description>
       </init-param>
       <load-on-startup>1</load-on-startup>
       </servlet>
      
      
       <servlet-mapping>
       <servlet-name>PrivateServerInvokerServlet</servlet-name>
       <url-pattern>/PrivateServerInvokerServlet/*</url-pattern>
       </servlet-mapping>
      
       <servlet-mapping>
       <servlet-name>PublicServerInvokerServlet</servlet-name>
       <url-pattern>/PublicServerInvokerServlet/*</url-pattern>
       </servlet-mapping>
      
       <servlet-mapping>
       <servlet-name>PrivateEjb3ServerInvokerServlet</servlet-name>
       <url-pattern>/PrivateEjb3ServerInvokerServlet/*</url-pattern>
       </servlet-mapping>
      
       <servlet-mapping>
       <servlet-name>PublicEjb3ServerInvokerServlet</servlet-name>
       <url-pattern>/PublicEjb3ServerInvokerServlet/*</url-pattern>
       </servlet-mapping>
      
       <servlet-mapping>
       <servlet-name>PrivateJNDIFactory</servlet-name>
       <url-pattern>/PrivateJNDIFactory/*</url-pattern>
       </servlet-mapping>
      
       <servlet-mapping>
       <servlet-name>PublicJNDIFactory</servlet-name>
       <url-pattern>/PublicJNDIFactory/*</url-pattern>
       </servlet-mapping>
      
       <servlet-mapping>
       <servlet-name>PublicJmsServerInvokerServlet</servlet-name>
       <url-pattern>/PublicJmsServerInvokerServlet/*</url-pattern>
       </servlet-mapping>
      
       <servlet-mapping>
       <servlet-name>PrivateJmsServerInvokerServlet</servlet-name>
       <url-pattern>/PrivateJmsServerInvokerServlet/*</url-pattern>
       </servlet-mapping>
      
      </web-app>