問題タブ [skinny-war]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
229 参照

java - 関連するクラスにデフォルトのアクセサーがあるスキニー戦争の概念に従ってjarがロードされると、自動配線が失敗します

私たちのアプリケーションは、スキニー戦争の概念 ( http://maven.apache.org/plugins/maven-war-plugin/examples/skinny-wars.html )に基づいています。

Spring jar とその他のコア アプリケーション jar がアプリケーション レベルで読み込まれます。共通の jar とコア アプリケーションの jar には、独自の applicationContext.xml があります。また、戦争には、各戦争に固有の applicationContext.xml を持つ独自の web-jar があります。アプリケーションの起動時に (コア アプリケーションの jar クラスで) オートワイヤリングが失敗し、添付のログ ファイルにエラーが表示されることに気付きました。

所見は次のとおりです。

  1. アプリケーション レベルでロードされたすべての jar が個々の wars(WEB-INF/lib) に移動されている場合、自動配線は正常に機能します。
  2. コア アプリケーション jar 内のクラスにパブリック アクセサー (セキュリティとカプセル化の目的でデフォルトである) がある場合、自動配線は正常に機能します。

スキニー戦争の概念に従う必要があり、コア アプリケーション jar は変更できません。

0 投票する
1 に答える
2227 参照

maven - ウォーパスとのMavenスキニー戦争

3 つの war-modules が ear-module にパッケージ化されているプロジェクトがあります。私の問題は、各ライブラリ jar が各 war-module と ear-module に含まれているため、結果の ear-file が非常に大きくなることです (現時点では約 190MB)。

ここでmavenを使用してスキニー戦争を作成するためのチュートリアルに従いました: http://maven.apache.org/plugins/maven-war-plugin/examples/skinny-wars.html

これで、ear のサイズを約 45MB まで小さくすることができました。

これは、war ファイルとしてパッケージ化されている appfuse-struts への依存が原因であることがわかりました。これは、war-project の 1 つで warpath の依存関係を使用して含まれています。

スキニー戦争の作成に関するチュートリアルでは、戦争で見つかったすべての依存関係も耳で定義する必要があると述べているためです。私はこれを試しましたが、appfuse-struts の依存関係が warpath であるため、これは機能しませんでした。(war 依存関係のみを ear pom に追加すると、一部のクラスが見つからないと不平を言い、warpath 依存関係も追加すると、maven は warpath が何かわからないと不平を言います。)

war が warpath の依存関係を使用している場合、skinny war で耳を作成する方法を知っている人はいますか?

0 投票する
2 に答える
2843 参照

maven - maven skinnyWars が ejb jar を WEB-INF\lib\ から削除しない

http://maven.apache.org/plugins/maven-ear-plugin/examples/skinny-wars.htmlで maven トピックskinnyWarsを見つけました。説明したように、この方法を使用して、選択した依存関係を WAR モジュールから EAR モジュールに移動できます。これらは、EAR にある他のすべての WAR モジュールで使用できます。

私が発見したように、移動する依存関係は EAR モジュールで宣言し、META-INF\libカタログに含める必要があります。これは、EAR モジュールのルート カタログにあるEJB モジュールには適用されません。

私の質問は、重複した EJB モジュールを WAR から削除し、EAR ファイルにあるモジュールへの参照をポイントする方法です。

現在の構造は次のようになっています。

0 投票する
1 に答える
1289 参照

jsf-2 - EAR で OmniFaces を正しく使用する方法

Java EE 7 アプリケーションでOmniFaces 1.7を使用したいと考えています。私のアプリケーションは、JAR とスキニー WARを含む EAR です。一部の JAR は OmniFaces に依存しているため、OmniFaces アーティファクトは EAR にある必要がありますがWEB-INF/lib、WAR にはありません。

私のEARは次のようになります。

このように説明すると、OmniFaces コンバーター ( などGenericEnumConverter) は JSF に登録されておらず、機能しません。この理由については、こちらこちらで説明しています。基本的に、JSF 2.0 仕様(セクション11.5.1 アノテーション用のクラスのスキャンに関する要件) に従って、WARsWEB-INF/libディレクトリのみがスキャンされます。

私の質問は次のとおりです。アプリケーションに OmniFaces をどのように含める必要がありますか?

それを 2 回 (EAR/libおよび WARsにWEB-INF/lib) 含めるとうまくいく可能性がありますが、ぎこちなく感じます。少し前にRichFaces 4.3.5(同じ問題)で試してみましたが、うまくいきませんでしたがIllegalArgumentException: duplicate key: class javax.faces.convert.ByteConverter.

0 投票する
0 に答える
1808 参照

jboss - 複数のスプリング ブート ウォーを含むスキニー ウォーを ear パッケージに入れ、jboss 7.3 (jboss-eap-6.2) にデプロイします。

これまでのところ、skinnywars を使用して ear パッケージを jboss 7.3 (jboss-eap-6.2) にデプロイしようとしています。耳には複数のスプリング ブーツ ウォーとジャーが含まれています。

わかりやすくするために、2 つの小さなスプリング ブート戦争で 1 つの単純な耳プロジェクトを作成し、同じ結果を得ました。

プロセス:

  • jboss-eap-6.2 を新規インストールしました (これはスタンドアロン モードで実行されます)。
  • spring-boot-starter-parent とモジュールの依存関係管理を使用して、メイン プロジェクトの親 pom.xml を作成しました (
  • 私は 2 つの単純な web1.war と web2.war スプリング ブート プロジェクトを作成しましたが、それぞれにインデックス タイムリーフ ページしかありません。(サーバーに展開された各戦争は完全に正常に実行されます)
  • 共通の依存関係 (スキニー部分用) とスキニーウォーズ用の maven-ear-plugin 構成を使用して ear pom.xml を作成しました。
  • パッケージングとインストールは問題なく動作します (ear プロジェクトの重量は約 12Mb です。
  • .ear ファイルをスタンドアロン/デプロイメントにコピーしましたが、サーバーはどちらのスプリング ブート アプリケーションも起動しません...

私は何が欠けていますか??

親 pom.xml

web1.war プロジェクトの pom.xml:

web2.war プロジェクト (web1 と同じ):

最後に、maven-ear-plugin の skinnywars 構成の ear pom:

前に述べたように、true を false に変更すると、ear パッケージはアプリケーション サーバーで正常に動作します...

maven-war-plugin と maven-ear-plugin の非常に多くの異なる構成を試しましたが、成功しませんでした...

更新: これは jboss ログの出力です。web1 と web2 のコンテキストをロードしようとしているようですが、2 つの spring-boot アプリケーションはどちらも起動しません....

更新: サンプル コードを github -> guilu/spring-boot-ear-skinny-warにプッシュして、スタンドアロンの jboss-eap-6.2 サーバーでプロジェクトをデプロイして実行するかどうかを確認しました。

0 投票する
0 に答える
824 参照

spring-boot - 細い戦争で耳に複数のスプリングブーツ戦争

2 つのスプリング ブート ウォー アプリケーションをスキニー ウォーで耳にパッケージ化する方法について、ステップバイステップ ガイドを教えてもらえますか?

jboss-eap-6.2 サーバーに両方の spring-boot アプリケーションをデプロイして別々に動作させていますが、それらを ear にパッケージ化しようとすると結果がデプロイされません。

maven ear プラグイン設定? pom.xml 構成?

0 投票する
1 に答える
94 参照

spring - Ear の Spring RestTemplate 依存関係の問題

私が働いている組織には、Spring Boot と RestTemplate を使用して互いに通信し、メインのモノリス (古典的な細い War in Ear) と通信するいくつかのスタンドアロン サービスがあります。

ただし、RestTemplate を Ear 内で実行しようとすると、クラスパスで問題が発生しますが、War 内では実行されません。REST 呼び出しを Web アプリケーションの一部にすることは考慮していないため、そのコードを EAR/lib にパッケージ化されるライブラリに移動しました。これにより、spring-web (4.1.6.RELEASE) も EAR/lib に移動され、その時点で WebApplicationInitializer コードが機能しなくなりました。

WEB-INF/lib ではなく、EAR/lib 内の spring-web でアプリケーションをキックスタートさせる方法はありますか? それとも、RestTemplate を戦争でのみ使用するか、RestTemplate の代替手段を見つけるかのいずれかに諦めるべきでしょうか?

0 投票する
0 に答える
48 参照

jsf - OmniFaces ExtensionlessURL 機能がスキニー WAR ファイルで動作しない

プロジェクトの 1 つで OmniFaces ExtensionlessURL FacesViews 機能を使用していますが、Web アプリケーションがスキニー WAR アーカイブとして EAR アーカイブ内にパッケージ化され、Wildfly コンテナーまたは WebSphere Liberty にデプロイされている場合、この機能が機能しないように見えることがわかりました。プロファイル コンテナー。.xhtml サフィックスのないページにアクセスしようとすると、両方のコンテナーで 404 エラーが発生します。

スキニー WAR アーカイブを含む同じ EAR アーカイブを GlassFish コンテナーまたは WebLogic コンテナーにデプロイすると、ExtensionlessURL 機能が期待どおりに機能し、.xhtml サフィックスなしでページにアクセスできます。

通常の WAR アーカイブを含む EAR アーカイブをデプロイすると (つまり、OmniFaces jar は WAR アーカイブの WEB-INF/lib フォルダーに格納されます)、ExtensionlessURL は WildFly コンテナーと WebSphere Liberty Profile コンテナーで期待どおりに機能します。 GlassFish および WebLogic コンテナー。

私が使用している WildFly のバージョンは 9.0.2 で、WebSphere Liberty Profile のバージョンは 8.5.5.7 です。私が使用している OmniFaces のバージョンは 2.2 です

OmniFaces Extensionless URL 機能を Wildfly および WebSphere Liberty プロファイル コンテナーのスキニー WAR アーカイブで使用できるようにするために、構成内で変更できるものはありますか?それともバグですか?

この問題のトラブルシューティングを行うために、問題を再現するために最低限必要なものを含む自己完結型の例を作成しました。

web.xml ファイルは次のとおりです。

Maven WAR プラグインの構成は次のとおりです。

Maven EAR プラグインの構成は次のとおりです。

Maven EAR プロジェクトには、WAR プロジェクトから依存関係を取り込むための次の依存関係も含まれています。

0 投票する
1 に答える
992 参照

java - lib ディレクトリから提供された jar を除外する方法

後で大きな耳のファイルに含めるために、細い戦争を構築しようとしています。ear ビルドは私の war のプロジェクトとは完全に独立しており、適切なマニフェスト ファイルを使用してスキニー war を提供することを期待しています。

私が直面している問題は、戦争の manifest.mf ファイルを取得して、提供された jar が ear の /libs フォルダーにあり、コンパイル/ランタイム jar が戦争にあることを指定することです。つまり、manifest.mf クラスパス エントリは次のようになります。

commons-lang のスコープは提供され、ear の libs ディレクトリにあることが期待されます。

commons-codec はコンパイル時であり、戦争の一部になることが予想されます。

maven-war-pluginを調べましたが、提供された依存関係だけにclasspathPrefixを提供する方法がわかりません 。

提案してください?


最終的に採用されたソリューション (ヒントとリンクを提供してくれたすべての人に感謝します) ear によって提供された依存関係を提供する必要があり、これはハックに気づきました: fake-application.xml :

次に、この新しいスキニー ウォーをリポジトリにデプロイし、maven デプロイ プラグインを使用して行いました。