Leo*_*rak 7 java servlets dependency-injection ejb weblogic
我用Google搜索,试图理解为什么Weblogic 10.3.4没有将EJB注入到servlet的带注释字段中.
Ear包含定义DAO EJB的ejb.jar和带有TestServlet的web.war.
PluginDataDAO.java
@Stateless
public class PluginDataDAO implements IPluginDataDAO {
}
Run Code Online (Sandbox Code Playgroud)
IPluginDataDAO.java
@Local
public interface IPluginDataDAO {
}
Run Code Online (Sandbox Code Playgroud)
TestServlet.java
public class TestServlet extends HttpServlet {
@EJB(mappedName = "PluginDataDAO")
private IPluginDataDAO pluginDataDAO;
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
Servlet位于ejb.jar中的web.war,EJB内部.没有运气,我尝试使用/不使用映射名称属性的注释.当我尝试将web.xml升级到3.0时,部署失败,未枚举3.0.怎么了?为什么pluginDataDAO仍然为空?谢谢.
以下组合工作:
Servlet的
@EJB
private IPluginDataDAO pluginDataDAO;
Run Code Online (Sandbox Code Playgroud)
web.xml中
...
<ejb-local-ref>
<ejb-ref-name>PluginDataDAO</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>cz.literak.blog.j2ee.dao.IPluginDataDAO</local>
</ejb-local-ref>
...
Run Code Online (Sandbox Code Playgroud)
我认为添加对web.xml的引用是不必要的..有什么规则,何时添加它们?
小智 5
我有同样的问题并解决了它@ManagedBean
:
@ManagedBean
public class TestServlet extends HttpServlet {
@EJB(mappedName = "PluginDataDAO")
private IPluginDataDAO pluginDataDAO;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14554 次 |
最近记录: |