java: comp / env не найден при использовании openejb во встроенном режиме - PullRequest
2 голосов
/ 19 апреля 2011

как документация openejb decalres

Неразрушимые правила.Прочитайте их снова и снова, когда что-то не работает.

  1. java: comp / env - это пространство имен, определенное спецификацией для поиска любого ресурса, управляемого контейнером
  2. java: comp /env по умолчанию пусто
  3. java: comp / env доступен только для чтения во время выполнения java: comp / env заполняется объявлением ссылок на управляемый контейнером ресурс через xml или аннотацию

я использую openejb во встроенном режиме, DI работает нормально, но я хочу сделать поиск в pojo, чтобы получить ссылку на мой источник данных, используя стандартный поиск jndi как ctx.lookup ("java: comp / env / DS")я пытался объявить ресурсы через XML и @Resource в ejb без состояния, просто чтобы проверить, заполнен ли подконтекст env, но я не знаю, почему подконтекст env никогда не создается ... plz help

1 Ответ

5 голосов
/ 25 июля 2011

У меня были похожие проблемы, когда я использовал OpenEJB в тестах. В случае встроенных тестов с OpenEJB вы должны искать java: openejb / not java: comp / env

С помощью этого небольшого фрагмента вы можете перечислить, что зарегистрировано OpenEJB

NamingEnumeration<Binding> list = initialContext.listBindings("java:openejb/");
while (list.hasMore()) {
    Binding item = list.next();
    System.out.println(item.getClassName() +" :: " + "java:openejb/" + item.getName());
}

если вы хотите получить в свой список источников данных все, что зарегистрировано в "java: openejb / PersistenceUnit /". скорее всего, вы найдете «java: openejb / PersistenceUnit / [name-of-persistence-unit] [hashcode]» - который вы можете использовать позже - в тесте.

надеюсь, это поможет --Jakub

...