0

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>

 &lt;/web-app&gt;

私は答えを求めて Web を検索し、StackOverflow と他の場所の両方で多くの場所を読んで、それが可能であり、問​​題は構成にあることを示唆しています。しかし、彼らはスニペットしか投稿していないので、私が正しくやっているかどうかはわかりません.

あなたが提供できる助けに感謝します。

ドッボ

4

1 に答える 1

0

するとどうなりますか:

@Path("fleet")
@Singleton
public class Ships {
于 2012-11-22T10:07:47.160 に答える