Я пытаюсь создать тесты (для лабораторий) объектов БД контроллера EJB. Моя проблема с созданием поиска в контексте во время инициализации: javax.naming.NameNotFoundException: Name "global/Lab45r-ejb/BookBean!pl.polsl.lab45r.book.BookBean" not found.
Я использую Java с проектом Maven. Код инициации:
public class BaseScenarioTest {
private static EJBContainer container;
private static BookBean bookBean;
private static LibraryBean libraryBean;
private static BookTest bookTest;
private static LibraryTest libraryTest;
private Integer bookId;
private Integer libraryId;
@BeforeClass
public static void initOnce() throws NamingException {
Properties properties = new Properties();
properties.put("xyz", "new://Resource?type=DataSource");
// These properties (UserName, Password, JdbcUrl) should point
// to your database
properties.put("xyz.UserName", "root");
properties.put("xyz.Password", "root");
properties.put("xyz.JdbcUrl",
"jdbc:mysql://localhost:3306/lab");
properties.put("xyz.JdbcDriver", "com.mysql.cj.jdbc.Driver");
properties.put("xyz.JtaManaged", "true");
properties.put("xyz.ConnectionProperties",
"useSSL=false;allowPublicKeyRetrieval=true");
container = EJBContainer.createEJBContainer(properties);
bookBean = (BookBean) container.getContext().lookup("java:global/Lab45R-ejb/BookBean"); //<-- here it fails
libraryBean = (LibraryBean) container.getContext().lookup("java:global/Lab45R-ejb/LibraryBean");
libraryTest = new LibraryTest();
bookTest = new BookTest();
}
...
Я пытался изменить java:global/Lab45r-ejb/BookBean
на java:global/Lab45r-ejb/BookBean!package.lab45r.book.BookBean
и LibraryBean одновременно, так как оба компонента находятся в разных пакетах, чем пакет "Сценарий".
Ошибка:
javax.naming.NameNotFoundException: Name "global/Lab45R-ejb/BookBean" not found.
at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:199)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:151)
at org.apache.xbean.naming.context.ContextFlyweight.lookup(ContextFlyweight.java:55)
at package.lab45r.scenario.BaseScenario.initOnce(BaseScenario.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-У меня есть еще одна проблема: этот тест не запускается автоматически при сборке приложения. - Я исправил это, изменив имя класса.