EJB3 Injection failed on JBoss AS 5.1 Error: ClassLoaders of value and target are not equal [duplicate]
I'm trying to inject a SLSB into a servlet but got the following error:
ERROR [org.jboss.injection.lang.reflect.FieldBeanProperty] (HDScanner) failed to set value Proxy to jboss.j2ee:ear=contact.ear,jar=contact-ejb.jar,name=ContactServiceBean,service=EJB3 implementing [interface com.test.contactservice.ContactService] on field private com.test.contactservice.ContactServiceBean com.test.contactmanager.controller.ContactController.cBean; Reason: ClassLoaders of value and target are not equal
Here is the annotation on the EJB:
@Stateless(name="ContactServiceBean")
@Local
public cl开发者_运维技巧ass ContactServiceBean implements ContactService {
The servlet has the following annotation:
@EJB(mappedName="contact/ContactServiceBean/local")
private ContactServiceBean cBean;
My web.xml uses 2.5 schema:
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
Could someone please take a look? Any suggestion would be much appreciated.
@AntonioP: I thought packaging the EJB into the war only works in EJB3.1. I believe it's not supported in JBoss 5.1.
I've tried renaming the mappedName as you suggested but got NameNotFoundException. I forgot to mention in my original post that the EJB is bounded to the following entry in Global JNDI:
[org.jboss.ejb3.proxy.impl.jndiregistrar.JndiSessionRegistrarBase] (HDScanner) Binding the following Entries in Global JNDI:
contact/ContactServiceBean/local - EJB3.x Default Local Business Interface
contact/ContactServiceBean/local-com.test.contactservice.ContactService - EJB3.x Local Business Interface
My EAR has the following directory structure:
contact.ear
|
___META-INF
|
___application.xml
|
___contact.war
|
___contact-ejb.jar
Thanks.
Are the servlet and SSLB in the same jar or war? They need to be. Also check
@EJB(mappedName="contact/ContactServiceBean/local")
Try with
@EJB(mappedName="com/test/contact/ContactServiceBean/local")
or just ContactServiceBean/local
Check this post http://community.jboss.org/message/8196#8196
精彩评论