私は現在、TomEE サーバーにバインドされた webapp の構築を検討しています。つまり、TomEE 内の唯一の (追加の) アプリケーションとして実行されるか、TomEE が埋め込まれています。Web アプリケーションは、サーブレットと JSP をサポートする必要があります (基本的に、ここでは Struts2 を使用したいと考えています)。
私はすべていくつかの問題を抱えていたいくつかのオプションを試しました:
オプション 1 : Maven-Shade-Plugin を使用してアプリケーションと tomee-embedded をバンドルします: http://www.tomitribe.com/blog/2015/03/50-shades-of-tomee/
問題:
1) バンドルされたアプリケーションの展開は、--as-war
オプションを介して 7.x バージョンでのみ機能しますが、7.x はまだ本番環境に対応しておらず、予定されているリリース日を見つけることができませんでした
2) JAXRS Web サービスのデプロイは正常に機能しましたが、サーブレットは機能しませんでした。たとえば、web.xml が取得されなかったり、クラスロードの問題が発生したりしました。
オプション 2 : TomEE-Maven-Plugin を使用して、tomee と webapp を含む zip をビルドします。
問題:
1) これはプラグイン バージョン 7.x (まだ本番環境には対応していません) でのみ機能しますが、結果のビルド (TomEE 1.7.2 に基づく) には影響しません。
2) TomEE は、アプリケーションによって (別のバージョンで) 提供されているいくつかのライブラリをロードする可能性があるため、ライブラリの競合があります。
アプリケーションはサーバーに関連付けられており、その逆も同様であるため、すべてのライブラリを TomEE の lib フォルダーに配置しても問題ありません。このフォルダーは、依存関係がダウンロードされるフォルダーに Maven プラグインをポイントすることによって機能します。これは機能しますが、競合の解決はありません。つまり、ライブラリがターゲット フォルダーにコピーされるだけです。
競合する各アーティファクトを削除するようにプラグインを手動で構成できるようになりましたが、アプリケーションと競合する可能性のあるライブラリの数が増えるにつれて、これは非常に面倒になる可能性があります。
オプション 3 : オプション 2 と同様ですが、TomEE-Maven-Plugin を使用しません。
事前にパッケージ化された TomEE といくつかの Maven プラグインを使用して、問題番号を解決する配布可能な zip を構築できるはずだと思います。1でも問題なし。2 - これは大きい方ですが、まだ残っています。すべての依存関係を手動で処理するのは面倒です。
最後に、問題は、そのアプリケーションをどのように構築すればよいかということです。
私はオプション 1 を好みますが、それを機能させる方法に関するドキュメント/例/チュートリアルをまだ見つけることができませんでした。
オプション 2 と 3 も問題ありませんが、各依存関係、特に推移的な依存関係を確認する必要なく、Maven に依存関係の競合を解決させる方法が必要です。