5 Replies Latest reply on Aug 21, 2009 5:30 AM by cdsanchez

    Socket Timeout with EJB2 on JBoss v4.0.5GA?

      JBoss 5 seems to support timing out sockets if an EJB method takes too long. This is done via adding a "timeout" parameter to the the connector configuration in the ejb3.deployer/META-INF/jboss-service.xml.

      Is there an equivalent to this with EJB2? We have noticed that our clients sometimes hang while calling a remote EJB method, and we would like to add a timeout so that the clients will give up after a set amount of time. I have modified my jboss-bean.deployer/META-INF/jboss-service.xml file to include a connector that times out similar to the EJB3 version, but it does not work.

      My modified jboss-service.xml is below:

      <?xml version="1.0" encoding="UTF-8"?>
      
      <server>
      
       <!--
       The JBoss Bean Deployer
       -->
       <mbean code="org.jboss.kernel.deployment.jboss.JBossBeanDeployer"
       name="jboss.bean:service=JBossBeanDeployer">
      
       <attribute name="Extension">.beans</attribute>
       <attribute name="MetaDataURL">META-INF/jboss-beans.xml</attribute>
       </mbean>
      
       <mbean code="org.jboss.remoting.transport.Connector"
       xmbean-dd="org/jboss/remoting/transport/Connector.xml"
       name="jboss.remoting:type=Connector,transport=socket3873,handler=ejb2Deployer">
       <depends>jboss.aop:service=AspectDeployer</depends>
       <attribute name="InvokerLocator">socket://0.0.0.0:3873/?timeout=30000</attribute>
       <attribute name="Configuration">
       <handlers>
       <handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
       </handlers>
       </attribute>
       </mbean>
      
      </server>


      Is it even possible to time out remote ejb calls in EJB2 the same as can be done with EJB3? If so, does anyone see what I am missing/doing wrong?

      Thanks in advance

        • 1. Re: Socket Timeout with EJB2 on JBoss v4.0.5GA?

          My previous post may have been a little confusing, so a quick clarification:

          We are using JBoss 4.0.5GA. Using EJB3 with JBoss 4.0.5GA, you can indeed time out long ejb method calls using the connector as described in my previous post. We would like to implement the same timeout mechanism for our EJB2 application running on JBoss 4.0.5GA.

          Does anyone see what is wrong with my previously posted connector or know of a different way to accomplish this?

          • 2. Re: Socket Timeout with EJB2 on JBoss v4.0.5GA?
            pedrong

            Hi klester,

            I have the same issue here. Did you find out the solution?

            Thanks!

            • 3. Re: Socket Timeout with EJB2 on JBoss v4.0.5GA?

              Sure did [sorry for the late response]. I posted a similar question in the JBoss Remoting Forum, and someone pointed me toward using the JBoss Unified Invoker to accomplish this. The thread in the JBoss Remoting Forum is http://www.jboss.org/index.html?module=bb&op=viewtopic&t=152317.

              At a high level, the Sun RMI timeout parameters don't work for the communication between the clients and the server because they don't use the Sun RMI libraries for their communication; they use the JBoss Remoting libraries. So in order to get the timeouts to work, you have to configure the JBoss Remoting libraries.

              To do so, you have to define the UnifiedInvoker in the jboss-service.xml and set the timeouts for it. You do that in the following file:
              - <jboss_home>/server/<app_name>/conf/jboss-service.xml

              Next you have to tell JBoss that your remote EJBs should use the configured UnifiedInvoker for their communication. You do this in the following file:
              - <jboss_home>/server/<app_name>/conf/standardjboss.xml

              I basically followed the instructions in the following document:
              http://docs.jboss.org/jbossas/unified_invoker/UnifiedInvoker_guide.html

              For reference, the steps I followed and the resulting configuration changes are below:

              First I added the UnifiedInvoker configuration to my jboss-service.xml. The full configuration is below. The "timeout" attribute is the one that actually times out the sockets:

              <!-- Changes to Support the Unified Invoker:
              http://docs.jboss.org/jbossas/unified_invoker/UnifiedInvoker_guide.html#d0e9
              -->
              
               <!-- Unified invoker (based on remoting) -->
               <mbean code="org.jboss.invocation.unified.server.UnifiedInvoker"
               name="jboss:service=invoker,type=unified">
               <!-- To turn on strict RMI exception propagation uncomment block below -->
               <!-- This will cause the UnifiedInvokerProxy to wrap RemoteExceptions -->
               <!-- within a ServerException, otherwise will throw root exception -->
               <!-- (not RemoteException) -->
               <!-- <attribute name="StrictRMIException">true</attribute> -->
               <depends>jboss:service=TransactionManager</depends>
               <depends>jboss.remoting:service=Connector,transport=socket</depends>
               </mbean>
              
               <!-- The Connector is the core component of the remoting server service. -->
               <!-- It binds the remoting invoker (transport protocol, callback configuration, -->
               <!-- data marshalling, etc.) with the invocation handlers. -->
               <mbean code="org.jboss.remoting.transport.Connector"
               xmbean-dd="org/jboss/remoting/transport/Connector.xml"
               name="jboss.remoting:service=Connector,transport=socket"
               display-name="Socket transport Connector">
               <!-- Can either just specify the InvokerLocator attribute and not the invoker element in the -->
               <!-- Configuration attribute, or do the full invoker configuration in the in invoker element -->
               <!-- of the Configuration attribute. -->
              
               <!-- Remember that if you do use more than one param on the uri, will have to include as a CDATA, -->
               <!-- otherwise, parser will complain. -->
               <!-- <attribute name="InvokerLocator"><![CDATA[socket://${jboss.bind.address}:4446/?datatype=invocation]]></attribute> -->
              
               <attribute name="Configuration">
               <!-- Using the following <invoker> element instead of the InvokerLocator above because specific attributes needed. -->
               <!-- If wanted to use any of the parameters below, can just add them as parameters to the url above if wanted use the InvokerLocator attribute. -->
               <config>
               <!-- Other than transport type and handler, none of these configurations are required (will just use defaults). -->
               <invoker transport="socket">
               <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>
               <!-- This will be port on which the marshall loader port runs on. -->
               <!-- <attribute name="loaderport" isParam="true">4447</attribute> -->
               <!-- The following are specific to socket invoker -->
               <attribute name="numAcceptThreads">100</attribute>
               <attribute name="maxPoolSize">2500</attribute>
               <!-- <attribute name="clientMaxPoolSize" isParam="true">304</attribute>-->
               <attribute name="socketTimeout" isParam="true">300000</attribute>
               <!--Set the all important client side socket timeout to 5 minutes. -->
               <attribute name="timeout" isParam="true">300000</attribute>
               <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
               <attribute name="serverBindPort">4446</attribute>
               <!-- <attribute name="clientConnectAddress">216.23.33.2</attribute> -->
               <!-- <attribute name="clientConnectPort">7777</attribute> -->
               <!-- <attribute name="enableTcpNoDelay" isParam="true">true</attribute> -->
               <!-- <attribute name="backlog">200</attribute>-->
               <!-- The following is for callback configuration and is independent of invoker type -->
               <!-- <attribute name="callbackMemCeiling">30</attribute>-->
               <!-- indicates callback store by fully qualified class name -->
               <!-- <attribute name="callbackStore">org.jboss.remoting.CallbackStore</attribute>-->
               <!-- indicates callback store by object name -->
               <!-- <attribute name="callbackStore">jboss.remoting:service=CallbackStore,type=Serializable</attribute> -->
               <!-- config params for callback store. if were declaring callback store via object name, -->
               <!-- could have specified these config params there. -->
               <!-- StoreFilePath indicates to which directory to write the callback objects. -->
               <!-- The default value is the property value of 'jboss.server.data.dir' and if this is not set, -->
               <!-- then will be 'data'. Will then append 'remoting' and the callback client's session id. -->
               <!-- An example would be 'data\remoting\5c4o05l-9jijyx-e5b6xyph-1-e5b6xyph-2'. -->
               <!-- <attribute name="StoreFilePath">callback</attribute>-->
               <!-- StoreFileSuffix indicates the file suffix to use for the callback objects written to disk. -->
               <!-- The default value for file suffix is 'ser'. -->
               <!-- <attribute name="StoreFileSuffix">cst</attribute>-->
               </invoker>
              
               <!-- At least one handler is required by the connector. If have more than one, must declare -->
               <!-- different subsystem values. Otherwise, all invocations will be routed to the only one -->
               <!-- that is declared. -->
               <handlers>
               <!-- can also specify handler by fully qualified classname -->
               <handler subsystem="invoker">jboss:service=invoker,type=unified</handler>
               </handlers>
               </config>
               </attribute>
               <depends>jboss.remoting:service=NetworkRegistry</depends>
               </mbean>
              
               <mbean code="org.jboss.remoting.network.NetworkRegistry"
               name="jboss.remoting:service=NetworkRegistry"/>
              
              <!-- Done with changes for the Unified Invoker -->
              


              I added the following to my standardjboss.xml file which defines an EJB invoker that should use the UnifiedInvoker previously configured in the jboss-service.xml:
               <!-- A configuration for Stateless Session beans that tells then to use the unified invoker rather than the rmi one.
               This gives us the ability to specify a client-side socket timeout. We tell the stateless session beans to use
               this configuration in the "Standard Stateless SessionBean" configuration below.
               -->
               <invoker-proxy-binding>
               <name>stateless-unified-invoker</name>
               <invoker-mbean>jboss:service=invoker,type=unified</invoker-mbean>
               <proxy-factory>org.jboss.proxy.ejb.ProxyFactory</proxy-factory>
               <proxy-factory-config>
               <client-interceptors>
               <home>
               <interceptor>org.jboss.proxy.ejb.HomeInterceptor</interceptor>
               <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor>
               <interceptor>org.jboss.proxy.TransactionInterceptor</interceptor>
               <interceptor call-by-value="false">org.jboss.invocation.InvokerInterceptor</interceptor>
               <interceptor call-by-value="true">org.jboss.invocation.MarshallingInvokerInterceptor</interceptor>
               </home>
               <bean>
               <interceptor>org.jboss.proxy.ejb.StatelessSessionInterceptor</interceptor>
               <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor>
               <interceptor>org.jboss.proxy.TransactionInterceptor</interceptor>
               <interceptor call-by-value="false">org.jboss.invocation.InvokerInterceptor</interceptor>
               <interceptor call-by-value="true">org.jboss.invocation.MarshallingInvokerInterceptor</interceptor>
               </bean>
               </client-interceptors>
               </proxy-factory-config>
               </invoker-proxy-binding>
              


              The last step is to tell your EJBs to use the invoker defined above. In my case, I told my stateless Session EJBs to use it by editing the "Standard Stateless SessionBean" configuration in the standardjboss.xml. My full "Standard Stateless SessionBean configuration is below":
               <container-configuration>
               <container-name>Standard Stateless SessionBean</container-name>
               <call-logging>false</call-logging>
               <!--Tell the stateless session bean to use the unified session bean invoker so that we can specify client socket timeouts. -->
               <invoker-proxy-binding-name>stateless-unified-invoker</invoker-proxy-binding-name>
               <container-interceptors>
               <interceptor>org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor</interceptor>
               <interceptor>org.jboss.ejb.plugins.LogInterceptor</interceptor>
               <interceptor>org.jboss.ejb.plugins.SecurityInterceptor</interceptor>
               <!-- CMT -->
               <interceptor transaction="Container">org.jboss.ejb.plugins.TxInterceptorCMT</interceptor>
               <interceptor transaction="Container">org.jboss.ejb.plugins.CallValidationInterceptor</interceptor>
               <interceptor transaction="Container">org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor</interceptor>
               <!-- BMT -->
               <interceptor transaction="Bean">org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor</interceptor>
               <interceptor transaction="Bean">org.jboss.ejb.plugins.TxInterceptorBMT</interceptor>
               <interceptor transaction="Bean">org.jboss.ejb.plugins.CallValidationInterceptor</interceptor>
               <interceptor>org.jboss.resource.connectionmanager.CachedConnectionInterceptor</interceptor>
               </container-interceptors>
               <instance-pool>org.jboss.ejb.plugins.StatelessSessionInstancePool</instance-pool>
               <instance-cache></instance-cache>
               <persistence-manager></persistence-manager>
               <container-pool-conf>
               <MaximumSize>100</MaximumSize>
               </container-pool-conf>
               </container-configuration>
              


              That's it. I did some testing and it worked properly. We put this change into production 2 months ago (over 1000 clients attached to our server), and we haven't seen any issues so far, so I'm fairly confident that it works as expected.

              • 4. Re: Socket Timeout with EJB2 on JBoss v4.0.5GA?
                cdsanchez

                Hello klester,

                I am newbie at jboss forums and am trying to use your guide to configure the timeout in my Jboss server.

                I've modified jboss-service.xml including the Mbeans UnifiedInvoker and Connector; I've applied changes too in the standardjboss.xml adding the invoker-proxy-binding and replacing in the container "Standard Stateless SessionBean" to use the new proxy invoker.

                I've coded a sample HelloWorld Stateless Bean; when I try to deploy the service, Jboss shows me the error:


                18:25:02,406 WARN [ServiceController] Problem starting service jboss.j2ee:jndiName=HelloWorldTest,service=EJB
                java.lang.RuntimeException: invoker is null: jboss:service=invoker,type=unified
                at org.jboss.proxy.ejb.ProxyFactory.setupInvokers(ProxyFactory.java:244)
                at org.jboss.proxy.ejb.ProxyFactory.start(ProxyFactory.java:228)
                at org.jboss.ejb.SessionContainer.startInvokers(SessionContainer.java:421)
                at org.jboss.ejb.SessionContainer.startService(SessionContainer.java:383)
                at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:274)
                at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:230)
                at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:324)
                at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
                at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
                at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
                at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
                at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:943)
                at $Proxy0.start(Unknown Source)
                at org.jboss.system.ServiceController.start(ServiceController.java:428)
                at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:324)
                at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
                at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
                at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
                at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
                at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
                at $Proxy49.start(Unknown Source)
                at org.jboss.ejb.EjbModule.startService(EjbModule.java:395)
                at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:274)
                at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:230)
                at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:324)
                at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
                at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
                at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
                at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
                at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:943)
                at $Proxy0.start(Unknown Source)
                at org.jboss.system.ServiceController.start(ServiceController.java:428)
                at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:324)
                at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
                at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
                at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
                at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
                at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
                at $Proxy23.start(Unknown Source)
                at org.jboss.ejb.EJBDeployer.start(EJBDeployer.java:627)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:324)
                at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
                at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
                at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
                at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
                at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:80)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
                at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
                at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
                at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
                at $Proxy24.start(Unknown Source)
                at org.jboss.deployment.MainDeployer.start(MainDeployer.java:989)
                at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:790)
                at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:753)
                at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:324)
                at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
                at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
                at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
                at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
                at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
                at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
                at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
                at $Proxy9.deploy(Unknown Source)
                at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:319)
                at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:507)
                at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:192)
                at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:265)
                at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:274)
                at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:230)
                at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:324)
                at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
                at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
                at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
                at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
                at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:943)
                at $Proxy0.start(Unknown Source)
                at org.jboss.system.ServiceController.start(ServiceController.java:428)
                at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:324)
                at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
                at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
                at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
                at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
                at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
                at $Proxy4.start(Unknown Source)
                at org.jboss.deployment.SARDeployer.start(SARDeployer.java:285)
                at org.jboss.deployment.MainDeployer.start(MainDeployer.java:989)
                at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:790)
                at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:753)
                at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:737)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:324)
                at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
                at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
                at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
                at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
                at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
                at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
                at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
                at $Proxy5.deploy(Unknown Source)
                at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:453)
                at org.jboss.system.server.ServerImpl.start(ServerImpl.java:330)
                at org.jboss.Main.boot(Main.java:187)
                at org.jboss.Main$1.run(Main.java:438)
                at java.lang.Thread.run(Thread.java:534)


                18:25:03,171 ERROR [URLDeploymentScanner] Incomplete Deployment listing:

                --- MBeans waiting for other MBeans ---
                ObjectName: jboss.j2ee:jndiName=HelloWorldTest,service=EJB
                State: FAILED
                Reason: java.lang.RuntimeException: invoker is null: jboss:service=invoker,type=unified

                --- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
                ObjectName: jboss.j2ee:jndiName=HelloWorldTest,service=EJB
                State: FAILED
                Reason: java.lang.RuntimeException: invoker is null: jboss:service=invoker,type=unified


                I am using Jboss 4.0.3Sp1 and Jdk 1.4


                I've tried with Jboss 4.0.5GA too and got same error.


                It could be a EJB conf problem?

                Thank you very much in advance.

                Regards

                • 5. Re: Socket Timeout with EJB2 on JBoss v4.0.5GA?
                  cdsanchez

                  Hello,

                  Just fixed, I have to add the the invoker to start before the scanner starts looking at /deploy.


                  But anyway I am unable to make the EJB Client gets a timeout.

                  I'll reply with more details later.

                  Regards