gpt4 book ai didi

java - 如何通过外部Servlet调用EJB 3.0

转载 作者:行者123 更新时间:2023-12-01 11:31:05 25 4
gpt4 key购买 nike

我正在学习 EJB 3 并尝试一些简单的东西。

我正在使用 eclipse -> Luna Service Release 1 (4.4.1) 和 JBOSS AS 7.1.1(最终版本)

我在 eclipse 中创建了一个简单的 EJB 项目,名称为 -> SalutationEJBProj。在这个项目下创建了一个简单的 session 、无状态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;
}

}

远程接口(interface)是:

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 中部署它,这是我启动 jboss 时的 JNDI 绑定(bind)输出:

    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,为此我创建了一个名为 --> SalutationServletProj 的动态 Web 项目

这是简单 Servlet 的代码:

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中生成的类/库?

非常感谢任何帮助。

最佳答案

只需将 SalutationBeanRemote 添加到 Web 项目的 WEB-INF/classes 中就足够了。

如果您将以下成员添加到您的 Servlet 中,应该可以解决问题:

@EJB(lookup="java:global/SalutationEJBProj/SalutationBean")
private SalutationBeanRemote salutationBean;

只有 java:global... 名称才有效,因为您的 servlet 作为 EJB 在另一个模块和应用程序中运行。我不确定 java:jboss/exported... 查找名称是否有效,或者是否仅适用于远程客户端。

最诚挚的问候,罗伯特

关于java - 如何通过外部Servlet调用EJB 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30371496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com