Как получить бин из контекста в jUnit EJB? - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь создать тесты (для лабораторий) объектов БД контроллера 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)

-У меня есть еще одна проблема: этот тест не запускается автоматически при сборке приложения. - Я исправил это, изменив имя класса.

...