我正在学习EJB 3并尝试一些简单的东西。
我正在使用eclipse - >带有JBOSS AS 7.1.1的Luna Service Release 1(4.4.1)(最终版)
我在eclipse中使用name创建了一个简单的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);
}
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
现在,我希望外部Servlet可以访问此ejb,为此我创建了一个名为 - >的动态Web项目。 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注释(或任何其他方法)来获取Servlet中EJB的实例。
由于这两个项目在不同的项目中,我如何实现这一目标?我不能在servlet中使用这个:
import com.vipin.bean.session.stateless.SalutationBean
1)我必须将EJB项目中的文件复制到servlet项目中。
2)它是否可以作为@EJB注释工作,还是需要进行JNDI查找? (因为servlet是远程的)。
3)我在哪里可以找到jboss中生成的类/库?
任何帮助都非常感谢。
答案 0 :(得分:1)
只需将SalutationBeanRemote
添加到您的网络项目的WEB-INF/classes
即可。
如果您将以下成员添加到Servlet中,那么它应该可以解决:
@EJB(lookup="java:global/SalutationEJBProj/SalutationBean")
private SalutationBeanRemote salutationBean;
只有java:global...
名称才有效,因为您的servlet在另一个模块和应用程序中作为EJB运行。
我不确定java:jboss/exported...
查找名称是否有效,或者它是否仅适用于远程客户端。
祝你好运, 罗伯特