EJB3 Инжекция не удалась на JBoss AS 5.1 Ошибка: ClassLoaders значения и цели не равны - PullRequest
1 голос
/ 17 августа 2011

Я пытаюсь внедрить 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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 августа 2011

Исправлено, добавляя EJB в его интерфейс, а не в реализацию.

См. Ссылку ниже:

EJB 3.1 Не удалось ввести зависимость

0 голосов
/ 17 августа 2011

Сервлет и SSLB находятся в одной банке или на войне? Они должны быть. Также проверьте

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

Попробуйте с

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

или просто ContactServiceBean / local

Проверить это сообщение http://community.jboss.org/message/8196#8196

...