Weblogic 10.3.4 が EJB をサーブレットの注釈付きフィールドに挿入しない理由を理解しようと、運が悪くてググってみました。
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>
サーブレットは web.war 内にあり、EJB は ejb.jar 内にあります。マッピングされた name 属性を使用して/使用せずに注釈を試してみましたが、うまくいきませんでした。web.xml を 3.0 にアップグレードしようとすると、3.0 が列挙されていないためにデプロイに失敗しました。なにが問題ですか?なぜ pluginDataDAO はまだ null ですか? ありがとうございました。