[jboss-jira] [JBoss JIRA] Commented: (JBAS-5646) @EJB does not work in servlet
Gerbrand van Dieijen (JIRA)
jira-events at lists.jboss.org
Tue Feb 17 08:10:45 EST 2009
[ https://jira.jboss.org/jira/browse/JBAS-5646?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12452937#action_12452937 ]
Gerbrand van Dieijen commented on JBAS-5646:
--------------------------------------------
Hello, I got the error too when using JBoss 5.0.0.GA
I could work-around the problem by adding a mappedName parameter to the @EJB annotation with the JNDI name:
Bean snippets:
@Stateless
public class MyBean implements MyBeanInterface {
...
}
@Local
public interface MyBeanInterface {
...
}
MyServlet extends HttpServlet {
@EJB(beanInterface=MyBeanInterface.class,mappedName = "MyBean/local")
private MyBeanInterface myBean;
..
}
With the mappedName the bean was injected succesfully in my servlet.
> @EJB does not work in servlet
> -----------------------------
>
> Key: JBAS-5646
> URL: https://jira.jboss.org/jira/browse/JBAS-5646
> Project: JBoss Application Server
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: EJB3, Web (Tomcat) service
> Affects Versions: JBossAS-5.0.0.CR1
> Environment: JBOSS trunk revision 74818 on both Windows 2000SP4 and Linux Fedora 8 (64-bit) with 32-bit JDK 1.5.0.14 (on both Windows and Linux)
> Reporter: Rick Vederman
> Assignee: Emanuel Muckenhuber
> Priority: Critical
> Fix For: JBossAS-5.0.0.CR2
>
>
> This was not an issue in 5.0.0.Beta4. I pulled the trunk to get the fix for another bug and this cropped up. Basically, I declare an interface POJO and prefix it with @Remote. I then declare a stateless EJB which implements that interface and prefix it with @Stateless. Finally, I create a servlet and prefix an attribute declaration of the interface type using @EJB. None of the annotations have any parameters.
> See the Forum reference for the log dump (first post) as well as the java code (third post). I apologize if this is a duplicate...I see some other issues which look close, but I was not sure.
> Work-around:
> Add 'mappedName="EJB3Test1/CoverageWCBean/remote"' to the @EJB annotation in the servlet. This gets me past the "java.lang.IllegalStateException: Resolution should not happen via injection container" problem, but then this problem crops up:
> 23:41:28,159 ERROR [FieldBeanProperty] failed to set value jboss.j2ee:ear=EJB3Test.ear,jar=EJB3TestEJB.jar,name=CoverageWCBean,service=EJB3 on field private ic.poc.wc.CoverageWC EJB3TestServlet.wc
> java.lang.IllegalArgumentException
> at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
> This problem is then worked around by setting CallByValue=true in the Naming service (jboss-service.xml) and then it works (EJBTHREE-983 might be related to this problem). Note that I tested this in GlassFish and it all works fine with just the annotations without any parameters as it did under 5.0.0.Beta4.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list