java - 将 EJB 注入(inject) servlet

标签 java servlets dependency-injection ejb weblogic

我用谷歌搜索试图理解为什么 Weblogic 10.3.4 没有将 EJB 注入(inject) servlet 中的注释字段。

Ear 包含定义 DAO EJB 的 ejb.jar 和带有 TestServlet 的 web.war。

PluginDataDAO.java

@Stateless
public class PluginDataDAO implements IPluginDataDAO {

}

IPluginDataDAO.java

@Local
public interface IPluginDataDAO  {

}

TestServlet.java

public class TestServlet extends HttpServlet {
    @EJB(mappedName = "PluginDataDAO")
    private IPluginDataDAO pluginDataDAO;
}

web.xml

<web-app version="2.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID">
<servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>cz.literak.blog.j2ee.TestServlet</servlet-class>
</servlet>

Servlet 在web.war 里面,EJB 在ejb.jar 里面。我尝试了带/不带映射名称属性的注释,但没有成功。当我尝试将 web.xml 升级到 3.0 时,部署失败,未枚举 3.0。怎么了?为什么 pluginDataDAO 仍然为空?谢谢。

最佳答案

我有同样的问题,用@ManagedBean解决了它:

@ManagedBean
public class TestServlet extends HttpServlet {
    @EJB(mappedName = "PluginDataDAO")
    private IPluginDataDAO pluginDataDAO;

关于java - 将 EJB 注入(inject) servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18317544/

相关文章:

c# - 如何在asp.net core 2.2中注册IFileProvider进行依赖注入(inject)?

servlets - 如何防止在重定向网址末尾添加 jsessionid

java - Spring依赖注入(inject),使用@Named还是@Resource?

Java泛型不完全理解

java - 确定范围是否重叠

java - MarkLogic:将 Map-Object 从 Java 传递到 XQuery

java - Java 线程的未知行为

java - Apache POI Servlet 表已存在

java - WildFly 10.0.0 Final正在接受请求,但将其放入队列中而不进行处理

java - Spring 的 AuthenticationManager 未正确注入(inject)