JBoss AS 5.1上的EJB3注入失败错误:值和目标的ClassLoader不相等

时间:2011-08-17 04:42:27

标签: java jboss ejb

我正在尝试将SLSB注入到servlet中,但出现以下错误:

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

以下是EJB的注释:

@Stateless(name="ContactServiceBean")
@Local
public class ContactServiceBean implements ContactService {

servlet具有以下注释:

@EJB(mappedName="contact/ContactServiceBean/local")
private ContactServiceBean cBean;

我的web.xml使用2.5架构:

<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">

有人可以看看吗?任何建议将不胜感激。


@AntonioP:我认为将EJB打包到战争中只适用于EJB3.1。我相信JBoss 5.1不支持它。

我已经尝试按照你的建议重命名mappedName,但得到了NameNotFoundException。我忘了在我的原始帖子中提到EJB与Global JNDI中的以下条目有关:

[org.jboss.ejb3.proxy.impl.jndiregistrar.JndiSessionRegistrarBase](HDScanner)绑定全局JNDI中的以下条目:

    contact/ContactServiceBean/local - EJB3.x Default Local Business Interface
    contact/ContactServiceBean/local-com.test.contactservice.ContactService - EJB3.x Local Business Interface

我的EAR具有以下目录结构:

contact.ear
 |
 ___META-INF
      |
      ___application.xml
 |
 ___contact.war
 |
 ___contact-ejb.jar

感谢。

2 个答案:

答案 0 :(得分:0)

servlet和SSLB在同一个罐子里还是战争?他们需要。还要检查

@EJB(mappedName="contact/ContactServiceBean/local")

尝试

@EJB(mappedName="com/test/contact/ContactServiceBean/local") 

或只是ContactServiceBean / local

查看此帖子http://community.jboss.org/message/8196#8196

答案 1 :(得分:0)

通过将EJB注入其接口而不是实现来修复它。

请参阅以下链接:

EJB 3.1 Dependency Injection Failed