После долгих поисков нашел решение, которое работает для меня ...
Вам нужно настроить EJBContainer со свойством: EJBContainer.MODULES и местоположением, где находятся классы модуля (при использованииmaven, 'target / classes').
например,
...
props = new Properties();
props.put(EJBContainer.MODULES, new File("target/classes"));
ec = EJBContainer.createEJBContainer(props);
...
Если ваш EJB-компонент использует JPA, есть еще одна проблема в том, что вы не сможете определить источник данных во встроенном контейнере,поэтому нужно использовать ds по умолчанию: 'jdbc / __ default'.
. Например, мой файл persistence.xml выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
version="1.0">
<persistence-unit name="bookshelf" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.blah.domain.Book</class>
<jta-data-source>jdbc/__default</jta-data-source>
<properties>
<property name="eclipselink.logging.level" value="INFO"/>
</properties>
</persistence-unit>
</persistence>
Я не понял, как настроитьвстроенный тест контейнера для использования одного DS (по умолчанию jdbc / __) и мое приложение для использования другого (например, jdbc / booksDS)
см. : http://www.mentby.com/glassfish/embedded-testing-woes.html
см. : http://forums.java.net/jive/thread.jspa?messageID=395759
Если честно, я не знаю, почему люди беспокоятся о Java EE, когда такие решения, как spring, намного проще ...
Это былоочень расстраивает и тратит много времени ... надеюсь, это поможет.