Я пишу небольшую библиотеку java, предназначенную для использования в веб-приложении, а также в консольном приложении java.Как использовать встроенный openejb из приложения Java Java?
Чтобы получить прибыль от CDI и других функций javaEE 6 и не поддерживать две версии (java EE и java SE) библиотеки, я хотел бы использовать openejb (встроенный) для консольного приложения. Итак, я создал проект maven в eclipse и добавил артефакт openejb.
Как-то я просто не понимаю, как заставить консольную программу использовать контейнер openejb, то есть разрешить мои инъекции и другие функции javaEE.
Допустим, у меня есть два очень простых классов:
@Stateless
Class A {
@Inject
public B member;
public A() {};
}
и
@Stateless
Class B {
public B() {};
public String getString() {
return "Hello";
}
}
Итак, как я мог бы получить простой старый класс Java с основной() метод сделать экземпляр членом A используя встроенный openejb? - таким образом, как:
public class TestOpenEJB {
public static void main(String[] args) {
Class A a = new A(); /*wrong of couse*/
System.out.println(a.member.getString());
}
}
Рабочее решение для этого простого примера было бы полезно.
Наконец, моя цель - предоставить Java api для Java, которая использует встроенный контейнер javaEE внутри.
Большое спасибо!
Ваш @EJB не может быть выше класса (см. [API] (http://docs.oracle.com/javaee/6/api/javax/ejb/EJB.html)), это опечатка? - Кроме того, я бы рекомендовал, если возможно, сохранить вашу библиотеку независимо от того, где она используется, а затем использовать ее как в JSE, так и в JEE-приложении. –
Это был мой первоначальный план. Библиотека будет в java SE и использована сервлетами. Это означает, однако, что ресурсы, используемые библиотекой, не управляются контейнером сервера. Не могли ли это вызвать проблемы при поступлении большого количества запросов (например, слишком много памяти распределено)? – datamole
Я не знаю достаточно о вашей библиотеке, но для меня это немного странно, что вам нужны эти механизмы. Ваша библиотека с точки зрения пользователя использует бэкэнд-систему, которая используется как сервлетом, так и администратором с доступом к консоли таким же образом, как вы можете использовать базу данных из вашего веб-приложения и консоли. Таким образом, у вас в основном есть одна и та же проблема, независимо от того, каким образом вы ее используете, но она должна быть независимой от этого.Что касается ресурсов, конечно, вам нужно либо заботиться о параллельном доступе, либо о нескольких экземплярах/пулах, или вам необходимо принять последовательный доступ. –