JBoss 7.1.1 と RESTeasy を使用して Web サイトを構築しようとしています。私は、WAR と EJB-JAR の両方を含む EAR を構築してデプロイすることができました。
voyager-app.ear
META-INF/MANIFEST.MF
META-INF/application.xml
META-INF/jboss-app.xml
lib/voyager-lib.jar
voyager-adm.war
voyager-ejb.jar
voyager-web.war
これまでのところ、物事は非常に単純です。voyager-adm.war と voyager-lib.jar は空 (マニフェスト ファイルのみ) ですが、すぐにコードを作成する予定です。EJB jar ファイルには、HarbourMasterBean (ローカル インターフェイスのみ) といくつかのデータベース エンティティ Bean という 1 つのステートフル EJB しかありません。
voyager-ejb.jar
META-INF/MANIFEST.MF
META-INF/persistence.xml
com/nutrastat/voyager/db/HarbourMasterBean.class
com/nutrastat/voyager/db/HarbourMasterLocal.class
com/nutrastat/voyager/db/PortEntity.class
com/nutrastat/voyager/db/ShipEntity.class
データベース ユニットが作成され、いくつかの HarbourMaster 参照のパブリケーションがログに示されているため、EJB が正しくデプロイされていることがわかります。
java:global/voyager-app/voyager-ejb/harbour-master!com.nutrastat.voyager.db.HarbourMasterLocal
java:app/voyager-ejb/harbour-master!com.nutrastat.voyager.db.HarbourMasterLocal
java:module/harbour-master!com.nutrastat.voyager.db.HarbourMasterLocal
java:global/voyager-app/voyager-ejb/harbour-master
java:app/voyager-ejb/harbour-master
java:module/harbour-master
問題は、HarbourMaster EJB を Web Bean に注入することにあります。それへの参照は、何を試しても常に NULL です。
voyager-web.war
META-INF/MANIFEST.MF
WEB-INF/web.xml
WEB-INF/classes/com/nutrastat/voyager/web/
WEB-INF/classes/com/nutrastat/voyager/web/Ships.class
WEB-INF/classes/com/nutrastat/voyager/web/VoyagerApplication.class
Ships.java:
@Path("fleet")
public class Ships {
protected transient final Logger log;
@EJB
private HarbourMasterLocal harbourMaster;
public Ships() {
log = LoggerFactory.getLogger(getClass());
}
@GET
@Path("ships")
@Produces({"text/plain"})
public String listShips() {
if (log.isDebugEnabled())
log.debug("Harbour master value: " + harbourMaster);
return "Harbour Master: " + harbourMaster;
}
}
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0" >
<display-name>Voyager Web Application</display-name>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>
<servlet>
<servlet-name>Resteasy</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
<init-param>
<param-name>
javax.ws.rs.Application
</param-name>
<param-value>
com.nutrastat.voyager.web.VoyagerApplication
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
私は答えを求めて Web を検索し、StackOverflow と他の場所の両方で多くの場所を読んで、それが可能であり、問題は構成にあることを示唆しています。しかし、彼らはスニペットしか投稿していないので、私が正しくやっているかどうかはわかりません.
あなたが提供できる助けに感謝します。
ドッボ