@EJB Annotation работает для удаленного вызова? - PullRequest
6 голосов
/ 20 октября 2011
public class Servlet2Stateless extends HttpServlet {

@EJB private HelloUserLocal helloUser;

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println(newSess.getName());


}

будет работать над строкой кода, когда EJB и Servlet развернуты на разных серверах?или мне нужно это назвать традиционным способом ????

Ответы [ 4 ]

7 голосов
/ 21 октября 2011

Если EJB находится на сервере, отличном от вашего клиента (сервлета), вы не сможете использовать внедрение зависимостей с аннотацией @EJB.

Полагаю, вам нужно пойти по старому пути JNDI.

2 голосов
/ 21 октября 2011

В соответствии со спецификацией EJB 3.1, вы можете использовать аннотацию @EJB для множества клиентов, включая сервлеты.

Проблема в том, что вы используете клиент и сервер на разных хостах. В зависимости от сервера, который вы используете, вы можете использовать аннотацию EJB. В этом посте объясняется, как это сделать в Weblogic.

Нет необходимости говорить, что в любом случае вы должны определить серверный EJB как @Remote.

0 голосов
/ 05 декабря 2013

Как насчет использования внедрения зависимостей в автономном клиенте?

0 голосов
/ 08 августа 2012

Если ваш контейнер также поддерживает CDI, вы можете написать метод производителя CDI для компонента, который выполняет поиск JNDI.Тогда вы можете хотя бы отделить поиск от места инъекции.

...