Uploaded image for project: 'EJB 3.0'
  1. EJB 3.0
  2. EJBTHREE-983

@EJB injection fails, RuntimeException, IllegalArgumentException

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • EJB 3.0 RC9 - Patch 1, AS 4.2.0 GA
    • EJB3 Extensions
    • None
    • Workaround Exists
    • Hide

      Use of JNDI lookup (InitialContext, etc). Changing the `Isolated' value doesn't seem to make any difference.

      Show
      Use of JNDI lookup (InitialContext, etc). Changing the `Isolated' value doesn't seem to make any difference.

      Similar to bug EJBTHREE-862. However, setting `Isolated' to false in $JBOSS_HOME/server/XXX/deploy/ear-deployer.xml does not resolve the issue for me.

      Here is the scenario:

      There are two applications, app1.ear and app2.ear.

      app1.ear contains a stateless session bean, App1Bean, with local and remote interface

      app2.ear contains a stateless session bean, App2Bean, which has a field defined like so:

      @EJB(mappedName="app1/App1Bean/local") // I've tried local and remote
      com.app1.ejb.session.App1 app1;

      app1.ear and app2.ear are loaded successfully by the application server.

      When App2Bean is activated, JBoss tries to perform the injections. At this point, the RuntimeException (see stack below) occurs.

      App2Bean can successfully obtain a reference to app1 bean using the traditional JNDI lookup methods. This is a workaround.

      When inspecting the stack, notice the presence of IllegalArgumentException, even though the interface matches.

      16:22:12,155 ERROR [STDERR] java.lang.RuntimeException: Non matching type for inject of field: App1Bean app1 for type: $Proxy79 of jndiName env/App2Bean/app2
      intfs: , App1, org.jboss.ejb3.JBossProxy, javax.ejb.EJBObject
      16:22:12,155 ERROR [STDERR] at org.jboss.injection.JndiFieldInjector.inject(JndiFieldInjector.java:135)
      16:22:12,155 ERROR [STDERR] at org.jboss.injection.JndiFieldInjector.inject(JndiFieldInjector.java:104)
      16:22:12,155 ERROR [STDERR] at org.jboss.injection.JndiFieldInjector.inject(JndiFieldInjector.java:61)
      16:22:12,155 ERROR [STDERR] at org.jboss.ejb3.AbstractPool.create(AbstractPool.java:92)
      16:22:12,155 ERROR [STDERR] at org.jboss.ejb3.ThreadlocalPool.get(ThreadlocalPool.java:48)
      16:22:12,165 ERROR [STDERR] at org.jboss.ejb3.cache.simple.SimpleStatefulCache.create(SimpleStatefulCache.java:209)
      16:22:12,165 ERROR [STDERR] at org.jboss.ejb3.stateful.StatefulContainer.dynamicInvoke(StatefulContainer.java:303)
      16:22:12,165 ERROR [STDERR] at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
      16:22:12,165 ERROR [STDERR] at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
      16:22:12,175 ERROR [STDERR] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:828)
      16:22:12,175 ERROR [STDERR] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:681)
      16:22:12,175 ERROR [STDERR] at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:358)
      16:22:12,175 ERROR [STDERR] at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:412)
      16:22:12,175 ERROR [STDERR] at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:239)
      16:22:12,185 ERROR [STDERR] Caused by: java.lang.IllegalArgumentException
      16:22:12,185 ERROR [STDERR] at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
      16:22:12,185 ERROR [STDERR] at java.lang.reflect.Field.set(Field.java:656)
      16:22:12,185 ERROR [STDERR] at org.jboss.injection.JndiFieldInjector.inject(JndiFieldInjector.java:119)
      16:22:12,185 ERROR [STDERR] ... 13 more

              Unassigned Unassigned
              dpocock_jira dpocock (Inactive)
              Votes:
              2 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated: