4 Replies Latest reply: Jan 4, 2013 1:16 PM by Subba T RSS

Issue with @resource annotation in Jboss 5.1

Manoj Jain Newbie

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 pai Master

    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 Jain Newbie

    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
    Ram V Newbie

    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
    Subba T Newbie

    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>