Я изучаю EJB 3 и пробую некоторые простые вещи на нем.Как вызвать EJB 3.0 внешним сервлетом
Я использую затмение -> Luna Service Release 1 (4.4.1) с JBOSS AS 7.1.1 (конечная)
Я создал простой проект EJB в упадке с именем -> SalutationEJBProj. В рамках этого проекта был создан простой сеанс, без состояния Bean.
код:
package com.vipin.bean.session.stateless;
import javax.ejb.Stateless;
@Stateless(mappedName="SalutationBean")
public class SalutationBean implements SalutationBeanRemote {
public SalutationBean() {
}
@Override
public String getFormalSalutation(String name) {
return "Dear" + name;
}
@Override
public String getInfomalSalutation(String name) {
return "Hi" + name;
}
}
Удаленный интерфейс:
package com.vipin.bean.session.stateless;
import javax.ejb.Remote;
@Remote
public interface SalutationBeanRemote {
public String getFormalSalutation(String name);
public String getInfomalSalutation(String name);
}
Я могу развернуть его в Jboss AS 7.1.1 и вот выход JNDI привязок, когда я начинаю JBoss:
java:global/SalutationEJBProj/SalutationBean!com.vipin.bean.session.stateless.SalutationBeanRemote
java:app/SalutationEJBProj/SalutationBean!com.vipin.bean.session.stateless.SalutationBeanRemote
java:module/SalutationBean!com.vipin.bean.session.stateless.SalutationBeanRemot
java:jboss/exported/SalutationEJBProj/SalutationBean!com.vipin.bean.session.stateless.SalutationBeanRemote
java:global/SalutationEJBProj/SalutationBean
java:app/SalutationEJBProj/SalutationBean
java:module/SalutationBean
Теперь, я хочу, чтобы этот ejb был доступен внешним сервлетом, для этого я создал динамический веб-проект w Имя Ith -> SalutationServletProj
Вот код простого сервлета:
package com.vipin.servlet;
@WebServlet(urlPatterns = { "/SalutationServlet" })
public class SalutationServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@EJB
private SalutationBean salutationBean; // <-- How will this be accessible, this is in a different project, how do we import this?
public SalutationServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
Мое намерение состоит в том, чтобы использовать @EJB аннотацию (или любой другой метод), чтобы получить экземпляр EJB в сервлет ,
Как эти два находятся в разных проектах, как я могу это достичь? Я не могу использовать, как это в сервлет:
import com.vipin.bean.session.stateless.SalutationBean
1) Какие файлы из EJB проекта, который я должен скопировать в сервлет проекта.
2) Будет ли он работать как аннотация @EJB или мне нужно выполнить поиск JNDI? (Потому что сервлет удален).
3) Где я могу найти классы/библиотеки, созданные в jboss?
Любая помощь очень ценится.
Спасибо так много для ваших входов, я попробую. У меня есть одно сомнение, если вы можете ответить, пожалуйста. В общем, клиентам нужны «классы» для импорта. Как мы генерируем эти классы? Нужно ли предоставлять только интерфейсные классы? Это запутанно, и поиск в google у меня не получил правильного ответа. – CuriousMind
С EJB> 3.0 больше не нужно создавать классы. Это все время выполнения во время выполнения. А также в вашем веб-приложении должно быть достаточно, чтобы иметь «SalutationBeanRemote» в WEB-INF/классах.AppServer будет динамически генерировать прокси. –
Спасибо за информацию. Если у нас есть автономный клиент, в этом случае нам не нужен класс, который реализует интерфейс (будь то прокси-объект). Спасибо за вашу помощь в этом. – CuriousMind