3

CDi の実装と webapp を含む複数の jar をデプロイする方法について質問があります。

これは私のJar構造です

--------     ----------      ------------
| WAR  | <-- | API Jar | <-- | Data Jar |
--------     ----------      ------------ 
                  ^
                  |
           --------------  
           | Common Jar |    And many more implementations
           --------------                  

WAR 自体は、API Jar で定義されているクラスを使用する webapp です。API jar には、インターフェイス、注釈、非論理クラス、修飾子などのみが含まれています...

API の実装は、テーマごとに分割されたさまざまな JAR に格納されます。したがって、データ、セキュリティ、ロギング、共通などのすべてのデータ アクセス/操作の実装。この実装には、API Jar およびおそらくライブラリへの依存関係があります。すべてのパッケージは、イベントを通じて通信します。

すべての実装と webapp で CDI を使用します。完全な構成は WAR にのみ含まれます。

すべてを 1 つの EAR にデプロイしたいと考えています。これは私が使用するファイル構造です:

EAR
  - META-INF/application.xml
  - api.jar
    - api classes, no beans.xml here
  - common.jar
    - api implementation for common project classes
    - META-INF/beans.xml
  - data.jar
    - api implementation for data classes
    - META-INF/beans.xml
  - logging.jar
    - api implementation for logging classes
    - META-INF/beans.xml
  - webapp.war
    - classes 
      - ( project classes which uses the api)
      - META-INF
        - services
        - persistence.xml
    - WEB-INF/beans.xml
      - beans.xml
      - web.xml

私のapplication.xmlは次のようになります。

<application 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/application_6.xsd" version="6">
  <display-name>test-ear</display-name>
  <module>
    <java>api-1.0.0.jar</java>
  </module>
  <module>
    <java>common-package-1.0.0.jar</java>
  </module>
  <module>
    <java>data-package-1.0.0.jar</java>
  </module>
  <module>
    <java>logging-package-1.0.0.jar</java>
  </module>
  <module>
    <web>
      <web-uri>test-war-1.0.0.war</web-uri>
      <context-root>/war</context-root>
    </web>
  </module>
</application>

私の問題は、これがまったく機能していないことです。CDI コンテナーは、一部の Bean が見つからないという不平を言っています。それについて Google で検索したところ、beans.xml を含む jar を ejbModule としてデプロイする必要があることがわかりましたが、ここではすべてに対して ejb.jar を作成する必要があります。別の結果では、すべての依存関係を WEB-INF/lib の WAR ファイルに追加するだけでよいとのことでした。ここにも同じ苦情があります。

これを実行できません。ここでヘルプをリクエストしてみてください。

サーバーとして、私は websphere (そしておそらく tomee) を使いたいと思っています。

編集:Mavenは、すべてのファイルを一緒に組み立てるために使用されます。

誰かが私を助けることができれば、どうもありがとう:)

4

2 に答える 2

0

戦争マニフェストで jar を参照しようとしましたか?

何かのようなものClass-Path: api.jar data.jar logging.jar common.jar

于 2013-04-12T06:58:04.510 に答える