1 Reply Latest reply on May 28, 2008 12:21 PM by hoedic

    muliple invokers in jboss.xml (JBOSS 4.0.5)

    hoedic

      Hi,
      i'm testing EJB3 on Jboss 4.0.5 with EJB3 profile (RC9) and i encounter this problem :

      i use two invokers to bind my ejb in jboss.xml file - one works with compression and the other not. (It works fine with native Jboss 4.0.5 and EJB2).

      My problem is that only the last invoker is used to bind my EJB. Here is my jboss.xml configuration file :

      <?xml version="1.0" encoding="ISO-8859-1"?>
      <jboss>
       <enterprise-beans>
       <session>
       <ejb-name>FTimeService</ejb-name>
       <jndi-name>ejb3/FTimeService</jndi-name>
       <configuration-name>
       Standard Stateless SessionBean
       </configuration-name>
       <invoker-bindings>
       <invoker>
       <invoker-proxy-binding-name>
       stateless-rmi-invoker
       </invoker-proxy-binding-name>
       <jndi-name>ejb3_u/FTimeService</jndi-name>
       </invoker>
       <invoker>
       <invoker-proxy-binding-name>
       stateless-compression-invoker
       </invoker-proxy-binding-name>
       <jndi-name>ejb3_c/FTimeService</jndi-name>
       </invoker>
       </invoker-bindings>
       </session>
       </enterprise-beans>
       <invoker-proxy-bindings>
       <invoker-proxy-binding>
       <name>stateless-compression-invoker</name>
       <invoker-mbean>
       fr.sce.jtech:service=invoker,type=jrmp,socketType=CompressionSocketFactory
       </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>
       org.jboss.invocation.InvokerInterceptor
       </interceptor>
       </home>
       <bean>
       <interceptor>
       org.jboss.proxy.ejb.StatelessSessionInterceptor
       </interceptor>
       <interceptor>
       org.jboss.proxy.SecurityInterceptor
       </interceptor>
       <interceptor>
       org.jboss.proxy.TransactionInterceptor
       </interceptor>
       <interceptor>
       org.jboss.invocation.InvokerInterceptor
       </interceptor>
       </bean>
       </client-interceptors>
       </proxy-factory-config>
       </invoker-proxy-binding>
       </invoker-proxy-bindings>
      </jboss>
      


      and here'is the JNDI view from Jmx console after deployment :
       +- TopicConnectionFactory (class: org.jboss.naming.LinkRefPair)
       +- jmx (class: org.jnp.interfaces.NamingContext)
       | +- invoker (class: org.jnp.interfaces.NamingContext)
       | | +- RMIAdaptor (proxy: $Proxy45 implements interface org.jboss.jmx.adaptor.rmi.RMIAdaptor,interface org.jboss.jmx.adaptor.rmi.RMIAdaptorExt)
       | +- rmi (class: org.jnp.interfaces.NamingContext)
       | | +- RMIAdaptor[link -> jmx/invoker/RMIAdaptor] (class: javax.naming.LinkRef)
       +- HTTPXAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
       +- ConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
       +- UserTransactionSessionFactory (proxy: $Proxy12 implements interface org.jboss.tm.usertx.interfaces.UserTransactionSessionFactory)
       +- HTTPConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
       +- XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
       +- UserTransaction (class: org.jboss.tm.usertx.client.ClientUserTransaction)
       +- UILXAConnectionFactory[link -> XAConnectionFactory] (class: javax.naming.LinkRef)
       +- UIL2XAConnectionFactory[link -> XAConnectionFactory] (class: javax.naming.LinkRef)
       +- queue (class: org.jnp.interfaces.NamingContext)
       | +- A (class: org.jboss.mq.SpyQueue)
       | +- testQueue (class: org.jboss.mq.SpyQueue)
       | +- ex (class: org.jboss.mq.SpyQueue)
       | +- DLQ (class: org.jboss.mq.SpyQueue)
       | +- D (class: org.jboss.mq.SpyQueue)
       | +- C (class: org.jboss.mq.SpyQueue)
       | +- B (class: org.jboss.mq.SpyQueue)
       +- topic (class: org.jnp.interfaces.NamingContext)
       | +- testDurableTopic (class: org.jboss.mq.SpyTopic)
       | +- testTopic (class: org.jboss.mq.SpyTopic)
       | +- securedTopic (class: org.jboss.mq.SpyTopic)
       +- console (class: org.jnp.interfaces.NamingContext)
       | +- PluginManager (proxy: $Proxy46 implements interface org.jboss.console.manager.PluginManagerMBean)
       +- ejb3_c (class: org.jnp.interfaces.NamingContext)
       | +- FTimeService (proxy: $Proxy64 implements interface fr.sce.test.ejb3.ejb.test.TimeService3,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBObject)
       +- UIL2ConnectionFactory[link -> ConnectionFactory] (class: javax.naming.LinkRef)
       +- HiLoKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.hilo.HiLoKeyGeneratorFactory)
       +- UILConnectionFactory[link -> ConnectionFactory] (class: javax.naming.LinkRef)
       +- QueueConnectionFactory (class: org.jboss.naming.LinkRefPair)
       +- UUIDKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.uuid.UUIDKeyGeneratorFactory)
       +- ATestEJB3 (class: org.jnp.interfaces.NamingContext)
       | +- FTimeService (class: org.jnp.interfaces.NamingContext)
       | | +- local (proxy: $Proxy66 implements interface fr.sce.test.ejb3.ejb.test.TimeService3,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBLocalObject)
      


      Other informations :
      - i do not use RemoteBinding annotation on my ejb bean,
      - when i reverse the invokers, the last one is is the only one i can reach with my client, it's why i can say that only the last invoker is considered during deployment.

      Any idea ?

      Thanks.


        • 1. Re: muliple invokers in jboss.xml (JBOSS 4.0.5)...a nd Jboss
          hoedic

          Hi,
          I've tried to reproduce this issue with a JBoss 4.2.2 native configuration and still have the problem.

          I have just noticed that only the first part of the JNDI name is bound for the first invoker (ejb3_u) with the complete second JNDI invoker. With Jboss 4.0.5, only the complete second JNDI invoker was bound.

           +- TopicConnectionFactory (class: org.jboss.naming.LinkRefPair)
           +- jmx (class: org.jnp.interfaces.NamingContext)
           | +- invoker (class: org.jnp.interfaces.NamingContext)
           | | +- RMIAdaptor (proxy: $Proxy47 implements interface org.jboss.jmx.adaptor.rmi.RMIAdaptor,interface org.jboss.jmx.adaptor.rmi.RMIAdaptorExt)
           | +- rmi (class: org.jnp.interfaces.NamingContext)
           | | +- RMIAdaptor[link -> jmx/invoker/RMIAdaptor] (class: javax.naming.LinkRef)
           +- JAXR (class: org.apache.ws.scout.registry.ConnectionFactoryImpl)
           +- HTTPXAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
           +- ConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
           +- ejb3_u (class: org.jnp.interfaces.NamingContext)
           +- UserTransactionSessionFactory (proxy: $Proxy14 implements interface org.jboss.tm.usertx.interfaces.UserTransactionSessionFactory)
           +- HTTPConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
           +- XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
           +- TransactionSynchronizationRegistry (class: com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple)
           +- UserTransaction (class: org.jboss.tm.usertx.client.ClientUserTransaction)
           +- UILXAConnectionFactory[link -> XAConnectionFactory] (class: javax.naming.LinkRef)
           +- UIL2XAConnectionFactory[link -> XAConnectionFactory] (class: javax.naming.LinkRef)
           +- queue (class: org.jnp.interfaces.NamingContext)
           | +- A (class: org.jboss.mq.SpyQueue)
           | +- testQueue (class: org.jboss.mq.SpyQueue)
           | +- ex (class: org.jboss.mq.SpyQueue)
           | +- DLQ (class: org.jboss.mq.SpyQueue)
           | +- D (class: org.jboss.mq.SpyQueue)
           | +- C (class: org.jboss.mq.SpyQueue)
           | +- B (class: org.jboss.mq.SpyQueue)
           +- topic (class: org.jnp.interfaces.NamingContext)
           | +- testDurableTopic (class: org.jboss.mq.SpyTopic)
           | +- testTopic (class: org.jboss.mq.SpyTopic)
           | +- securedTopic (class: org.jboss.mq.SpyTopic)
           +- console (class: org.jnp.interfaces.NamingContext)
           | +- PluginManager (proxy: $Proxy48 implements interface org.jboss.console.manager.PluginManagerMBean)
           +- ejb3_c (class: org.jnp.interfaces.NamingContext)
           | +- FTimeService (proxy: $Proxy102 implements interface fr.vif.test.ejb3.ejb.test.TimeService3,interface org.jboss.ejb3.JBossProxy)
           +- UIL2ConnectionFactory[link -> ConnectionFactory] (class: javax.naming.LinkRef)
           +- HiLoKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.hilo.HiLoKeyGeneratorFactory)
           +- UILConnectionFactory[link -> ConnectionFactory] (class: javax.naming.LinkRef)
           +- QueueConnectionFactory (class: org.jboss.naming.LinkRefPair)
           +- UUIDKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.uuid.UUIDKeyGeneratorFactory)
           +- ATestEJB3 (class: org.jnp.interfaces.NamingContext)
           | +- FTimeService (class: org.jnp.interfaces.NamingContext)
           | | +- local (proxy: $Proxy102 implements interface fr.vif.test.ejb3.ejb.test.TimeService3,interface org.jboss.ejb3.JBossProxy)
          


          Any help would be appreciate.
          Thank's in advance.