java - 如何在 servlet 中获取 EJB 对象?
问题描述
我创建了简单的 EJB,并尝试在我的示例 servlet 中使用,我使用 TomEE 服务器和 eclips 作为 IDE
以下是我的代码
HelloBeanInterface.java
package com.ccc.demo;
public interface HelloBeanInterface {
public String from();
}
HelloBean.java
package com.ccc.demo;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
/**
* Session Bean implementation class HelloBean
*/
@Stateless
@LocalBean
public class HelloBean implements HelloBeanInterface{
private String message = "I am from EJB";
public String from() {
return message;
}
}
HelloServlet.java
package com.ccc.demo;
import java.io.IOException;
import java.io.Writer;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class HelloServlet
*/
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@EJB
private HelloBeanInterface bean;
/**
* @see HttpServlet#HttpServlet()
*/
public HelloServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html");
Writer out = response.getWriter();
out.append("<html>");
out.append("<body>");
out.append("<h1>Hello Servlet</h1>");
out.append("<h1>"+bean+"</h1>");
out.append("</body>");
out.append("</html>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
我的问题是这里out.append("<h1>"+bean+"</h1>");
bean 的值正在打印我在这里声明的NULL
@EJB
private HelloBeanInterface bean;
这是我运行后的结果
解决方案
我在这里只是冒险猜测 servlet 仅在 Tomcat http 服务器系统中,虽然您使用的是 ejb 类,但您还应该配置一个ejb 应用程序和ejb 容器配置文件,并有一个带有 bean 规则的ejb bean 类句法。
推荐阅读
- vba - 将多个选择存储在 Array 中,然后选择 Array 中的所有选择
- javascript - ANGULAR - 如果表单值未更改,则禁用提交按钮
- ruby-on-rails - 为什么我的脚本出现 Net::ReadTimeout 错误?
- sqlite - 自定义动态烧瓶 WTForm
- powerbi - Power BI - 按当前行值过滤的累积 SUM
- javascript - 如何在 GET api 中发送 JSON 数据?
- java - 是否可以在 JavaFX 中创建通用 CRUD
- c# - 以比表 mvc asp.net 更好的格式显示数据库中的记录列表
- geodjango - GeoDjango: raise GDALException('Could not open the datasource at "%s"' % ds_input)
- c# - 从命令处理程序传递变量