我正在尝试将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
感谢。
答案 0 :(得分:0)
servlet和SSLB在同一个罐子里还是战争?他们需要。还要检查
@EJB(mappedName="contact/ContactServiceBean/local")
尝试
@EJB(mappedName="com/test/contact/ContactServiceBean/local")
或只是ContactServiceBean / local
答案 1 :(得分:0)