2013-06-06 5 views
0

Я создал простой EJBИсточник данных Инъекции для EJB 3 боба не работает Sevlet

@Stateless 
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 
public class MyTestBean implements MyTest{ 


    @Resource 
    private SessionContext ctx; 

    @EJB 
    private RuntimeConfig runtimeConfig; // another bean that works OK 

    @Resource 
    private DataSource myDB; 

Компонент не может быть инициализирован, поскольку MyDB не может быть найден

com.ibm.wsspi.injectionengine.InjectionException: CWNEN0044E: ссылка ссылки на ресурсы не найдена для следующих ссылок ресурсов [MyTestBean/myDB]

В Websphere 7 я создал источник данных myDB и использовал ссылку «Ссылки на ресурсы», чтобы сопоставить его с bean-компонентом. Чего мне не хватает? Другие компоненты, которые просто загружают конфигурацию из ejb-jar.xml, работают нормально Пожалуйста, помогите. Спасибо

ответ

0

Вы должны по-прежнему иметь возможность сопоставлять/связывать ссылки ресурсов во время развертывания. Если вы не запрашиваете этот источник данных, я рекомендую открыть PMR с IBM.

На основании сообщения об ошибке, похоже, вы используете WebSphere Application Server. В качестве обходного пути вы можете попробовать вручную добавить привязку через ibm-ejb-jar-bnd.xml. Неясно, какая версия вы используете (в прошлом вы ссылались на 7.0, хотя 8.0 поддерживает EJB 3.1), но если вы используете 8.0, вы также можете использовать @Resource(lookup="...") для настройки привязки во время разработки.

1

Как bkail говорит, вы можете отобразить этот источник данных к физическому JNDI во время развертывания

Я хотел бы также предложить:

  1. Добавить имя ссылки в коде т.е. @Resource (JDBC/myDataSource)

  2. Перейдите к «подробному развертыванию» вместо быстрого (таким образом вы сможете сопоставить все ссылки тогда и там, хотя вы также можете изменить их после развертывания)

  3. Проверьте, правильно ли вы настроили источник данных на своем сервере приложений или нет, и является ли его область правильной.

Вы можете угробить на EJB jar.xml и IBM-EJB-Jar-bnd.xml при использовании аннотаций.

Если вы не хотите использовать аннотации - вы можете предоставить этот «логический» JNDI в ejb-jar.xml и «физическом» JNDI в ibm-ejb-jar-bnd.xml (оба под этим факсимильный сеанс, google для любой путаницы в синтаксисе или если вы используете IDE, переходите через режим «дизайн», а редактируете xml напрямую)

Cheers !!