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は、すべてのファイルを一緒に組み立てるために使用されます。
誰かが私を助けることができれば、どうもありがとう:)