4 Replies Latest reply on Oct 14, 2008 1:39 AM by Justin

    Which thread pool services SLSB requests in AS?

    Justin Newbie


      Not sure if this is a JBoss AS question or a remoting question - will be glad to move the post if required.

      Basically I am trying to find out which thread pool contains the worker threads which service incoming (remote) requests made to stateless session beans in JBoss AS so that I can configure it.

      The only references to thread pools in jboss-service.xml that I can see are for the NamingService and WebService. The naming service reference appears to be a pool for bootstrap lookups. Not sure if this is what I'm after.


      <mbean code="org.jboss.naming.NamingService"
      <!-- The thread pool service used to control the bootstrap lookups -->
       <depends optional-attribute-name="LookupPool"

      This is a stack at the point of a breakpoint in the SLSB

      Thread [WorkerThread#0[]] (Suspended (breakpoint at line 95 in FooBean))
       FooBean.save(ApplicationContext, Object) line: 95
       NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
       NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
       DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
       Method.invoke(Object, Object...) line: 585
       MarshalledInvocation(Invocation).performCall(Object, Method, Object[]) line: 359
       StatelessSessionContainer$ContainerInterceptor.invoke(Invocation) line: 237
       Invocation.invoke() line: 86
       XMBean(AbstractMBeanInvoker).invoke(String, Object[], String[]) line: 264
       MBeanServerImpl.invoke(ObjectName, String, Object[], String[]) line: 659
       UnifiedInvokerHA.invoke(InvocationRequest) line: 146
       SocketServerInvoker(ServerInvoker).invoke(InvocationRequest) line: 769
       ServerThread.processInvocation(SocketWrapper) line: 573
       ServerThread.dorun() line: 387
       ServerThread.run() line: 166

      Any pointers in the right direction apprectiated


        • 1. Re: Which thread pool services SLSB requests in AS?
          Ron Sigal Master

          Hi Justin,

          You're in the right forum - the ServerThread you're looking at is an org.jboss.remoting.transport.socket.ServerThread, and the pool of ServerThreads is configured in the org.jboss.remoting.transport.socket.SocketServerInvoker that services EJB3s. The configuration is found in file $JBOSS_HOME/server/$CONFIG/deploy/ejb3.deployer/META-INF/jboss-service.xml, in particular, the lines

           <mbean code="org.jboss.remoting.transport.Connector"
           <attribute name="InvokerLocator">socket://${jboss.bind.address}:3873</attribute>
           <attribute name="Configuration">
           <handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>

          If, for example, you want to increase the number of worker threads, append the "maxPoolSize" parameter to the InvokerLocator attribute:

           <attribute name="InvokerLocator">socket://${jboss.bind.address}:3873/?maxPoolSize=500</attribute>

          For more information, see the Remoting Guide (http://www.jboss.org/jbossremoting/docs/guide/2.2/html/index.html), particularly Section 5.4.5. "Socket Invoker".


          • 2. Re: Which thread pool services SLSB requests in AS?
            Justin Newbie

            Hi Ron,

            Thanks for your reply - appreciate it.

            I probably should have mentioned that I'm using 2.1 EJBs and not EJB3. So I assume that the the equivalent of the $JBOSS_HOME/server/$CONFIG/deploy/ejb3.deployer/META-INF/jboss-service.xml is $JBOSS_HOME/server/$CONFIG/deploy/ejb-deployer.xml file

            Problem is that I don't see any invokers defined in this file.

            Digging a little deeper, on the jmx-console in the jboss.remoting domain I have:

             * dataType=invocation,enableTcpNoDelay=true,host=,marshaller=org.jboss.invocation.unified.marshall.InvocationMarshaller,port=4446,service=invoker,socketTimeout=600000,transport= socket,unmarshaller=org.jboss.invocation.unified.marshall.InvocationUnMarshaller
             * handler=ejb3,name=DefaultEjb3Connector,type=Connector
             * host=,port=3873,service=invoker,transport=socket
             * service=Connector,transport=socket
             * service=NetworkRegistry

            Is this invoker the one that I am after?

            Which is defined (and configured) as follows in jboss-service.xml
            <mbean code="org.jboss.remoting.transport.Connector"
             display-name="Socket transport Connector">
             <!--<attribute name="maxPoolSize">303</attribute> -->

            Which I can configure by un-commenting (and customising) the above maxPoolSize setting. If so, any idea what the default is?


            • 3. Re: Which thread pool services SLSB requests in AS?
              Ron Sigal Master

              Hey Justin,

              "justinwalsh" wrote:

              So I assume that the the equivalent of the $JBOSS_HOME/server/$CONFIG/deploy/ejb3.deployer/META-INF/jboss-service.xml is $JBOSS_HOME/server/$CONFIG/deploy/ejb-deployer.xml file

              Good guess, but as you know, nothing is ever that simple. :)

              Actually, 2.x EJBs are part of the older, somewhat more monolithic structure of the Application Server, whereas EJB3s are just another component. Consequently, the 2.x EJB transport is configured in $JBOSS_HOME/server/$CONFIG/conf/jboss-service.xml in the "jboss.remoting:service=Connector,transport=socket" MBean, as you correctly guessed.

              The default value for "maxPoolSize" is 300.


              • 4. Re: Which thread pool services SLSB requests in AS?
                Justin Newbie

                Thanks Ron, much appreciated