Я пытаюсь внедрить SLSB в сервлет, но получил следующую ошибку:
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 {
Сервлет имеет следующую аннотацию:
@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
Спасибо.