4 Replies Latest reply on Jan 4, 2013 1:16 PM by tsr71

    Issue with @resource annotation in Jboss 5.1

    manoj_bulbul

      I am migrating my application from jboss 4.3 to 5.1. I have used @resource annotation for spring bean injection. But as I found that ejb 3 also uses the @resouce.

      So while deploying the application the EJB container is trying to inject the bean by looking at @resource, but orignially it is made for spring.

      So I have two option to make it resolve.

       

      1. I can remove the EJB container from jboss "default" profile.

      2. Or I can explicitly tell the JBoss server not to include EJB for this particular war file.

       

      If anyone having related information for following quest. please share.

       

      1. how we can remove EJB container from default configuration of Jboss 5.1

      2. Or can we make any chanegs in web.xml or can we include some specific code or configuration file saying that the EJB will not interfere for this particular application.

        • 1. Re: Issue with @resource annotation in Jboss 5.1
          jaikiran

          Actually, the @Resource is a common Java EE resource injection annotation. So it is used even outside of EJBs (for example, in a plain non-EJB web application). So disabling EJB isn't probably going to solve the problem.

           

          What exact issue are you running into (any stacktrace)? Where is the jar containing this class located in the application?

          • 2. Re: Issue with @resource annotation in Jboss 5.1
            manoj_bulbul

            Thanks for replying,

             

               Ya you r right, I have plain non-EJB web application containing @resource injection annotation, but As I have now deployed it into Jboss 5.1, So while server startup it is throwing following error.

             

            10-12-30 14:31:48,371 ERROR [org.apache.catalina.core.StandardContext] (main) Context [/XYZ] startup failed due to previous errors
            java.lang.RuntimeException: mapped-name is required for paxSearchTranslatorIF of deployment XYZ.war
                at org.jboss.web.tomcat.service.injection.WebResourceHandler.loadXmlResourceEnvRefs(WebResourceHandler.java:287)
                at org.jboss.web.tomcat.service.injection.WebResourceHandler.loadXml(WebResourceHandler.java:325)
                at org.jboss.web.tomcat.service.TomcatInjectionContainer.processMetadata(TomcatInjectionContainer.java:550)
                at org.jboss.web.tomcat.service.WebCtxLoader.start(WebCtxLoader.java:158)
                at org.apache.catalina.core.StandardContext.start(StandardContext.java:4272)
                at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310)
                at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142)
                at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
                at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
                at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
                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:597)
                at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
                at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
                at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
                at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
                at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
                at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
                at $Proxy38.start(Unknown Source)
                at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)
                at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)
                at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
                at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
                at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
                at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
                at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:286)
                at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
                at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
                at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
                at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
                at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
                at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
                at org.jboss.system.ServiceController.doChange(ServiceController.java:688)
                at org.jboss.system.ServiceController.start(ServiceController.java:460)
                at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163)
                at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99)
                at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)
                at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
                at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
                at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
                at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
                at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
                at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
                at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
                at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
                at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
                at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
                at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
                at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
                at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
                at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
                at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
                at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
                at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
                at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
                at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
                at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:361)
                at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
                at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
                at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
                at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
                at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
                at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
                at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
                at org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:306)
                at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271)
                at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
                at org.jboss.Main.boot(Main.java:221)
                at org.jboss.Main$1.run(Main.java:556)
                at java.lang.Thread.run(Thread.java:619)

             

            where paxSearchTranslatorIF is a bean object.

             

            As EJB3 is having @resource annotation so

            My doubt is EJB container is considering this bean as part of EJB and it is trying to invoke it.

            • 3. Re: Issue with @resource annotation in Jboss 5.1
              ramav

              we had a problem with class loading

               

              Here is my JBoss-web.xml

               

              <?xml version='1.0' encoding='UTF-8' ?>

               

                <!DOCTYPE jboss-web PUBLIC
                  "-//JBoss//DTD Web Application 5.0//EN"
                  "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">    
                 
                  <jboss-web>
                 
                 
                  <class-loading java2ClassLoadingCompliance="false">
                    <loader-repository>
                       <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
                    </loader-repository>
                 </class-loading>

              </jboss-web>

               

              and there is a value

              com.example:loader=unique-archive-name 

              I am not sure whether I have to specify this or not and if so Can you guys let me guide how can I do that for my war

              its not looking for jars present in WEB-INF/lib , instead it is taking JBoss jars and if I specify java2ClassLoadingCompliance="true" and java2ParentDelegation=true is having the issue with annotations

              we also had the same issue with @resource in JBoss.5.x version. Insted of taking the java annotations it is looking for the ejb annotations.

               

               

               

              Is there anything wrong in my JBoss-web.xml

               

              Can any one help in this regard

              • 4. Re: Issue with @resource annotation in Jboss 5.1
                tsr71

                I ran into the same issue and here is how I fixed it for the benefit of others.

                 

                It is a class loading issue with javax.annotation.* package. I am using Resteasy and isolated classloader for my ear. Resteasy has transitive dependency on jsr250-api.jar (javax.annotation.*), which is being included in the ear and has a conflict with jboss libraries.

                I modified my pom (as below) and exluded the jsr250 jar and @Resource injection has worked fine.

                 

                 

                 

                 

                 

                 

                 

                 

                 

                 

                 

                 

                 

                <dependency>

                 

                <groupId>org.jboss.resteasy</groupId>

                 

                <artifactId>resteasy-jaxrs</artifactId>

                 

                <version>2.2.1.GA</version>

                 

                <exclusions>

                 

                <exclusion>

                 

                <artifactId>jsr250-api</artifactId>

                 

                <groupId>javax.annotation</groupId>

                 

                </exclusion>

                 

                </exclusions>

                 

                </dependency>