У нас есть мультимодульный проект Maven с некоторыми модулями ejb и war. Один из модулей работает как интеграционный тестер для всей платформы. Мы успешно протестировали ejbs, включая безопасность, инъекцию зависимостей и транзакции, используя встроенный EjbContainer.Не удалось выполнить интеграционное тестирование CDI на Embedded EJBContainer
Теперь мы хотим добавить CDI в микс, и вот он возникает, когда возникают проблемы.
Проблема
Согласно документу, для того, чтобы активировать CDI, мы просто должны добавить пустую beans.xml в папку META-INF модуля EJB, в котором мы хотим, чтобы активировать его , Просто так, сразу после этого встроенный сервер не может запускаться, и поэтому мы не можем запускать какой-либо интеграционный тест.
Исключения брошено является:
java.lang.RuntimeException: javax.ejb.EJBException: Failed to deploy EJB modules - see log for details
...
Caused by: javax.ejb.EJBException: Failed to deploy EJB modules - see log for details
Остальная частью StackTrace просто указует на строку, в которой мы стараемся, чтобы запустить сервер и не дает никакой полезной информации.
Две вещи, чтобы отметить:
- запуск терпит неудачу, даже без каких-либо @Injected боб.
- CDI прекрасно работает при работе в незакрытой стеклянной плавке, , поэтому наша проблема заключается только в тестировании.
Наша система
Maven структура проекта
MyProject
MyProject уха
MyProject-домен
MyProject-EJB1
MyProject-EJB2
MyProject войны
MyProject -test
Environment
- Glassfish 3,1, 3,2
- TestNG
File[] modules = {
new File("/target/classes"),
new File("../myproject-ejb1/target/classes"),
new File("../myproject-ejb2/target/classes")
...};
properties.put(EJBContainer.APP_NAME, "myproject");
properties.put(EJBContainer.MODULES, modules);
properties.put("org.glassfish.ejb.embedded.glassfish.instance.root","./src/main/resources");
EJBContainer container = EJBContainer.createEJBContainer(properties);
То, что мы нашли до сих пор
Мы включили тонкую регистрацию на GlassFish, но до сих пор мы не получим никакого понятия о том, что не работает.
Мы знаем о Arquillian, и мы рассматриваем его как возможность, но мы хотели бы попробовать в последний раз со стандартным api.
Любая идея, что мы можем делать неправильно?