こんにちはHabr! WildFlyをMavenと友達にする方法についての短い記事から始めたいと思います。
Wildfly-これは、開発者向けの管理とAPIの両方の分野におけるJBoss AS7 / EAP6のブランド変更と開発です。 Wildflyは、Java SE 7を使用して構築されています。コアJava IDEと完全に統合されています。 記事からの短い引用
バージョン10に関する少しの公式情報
- 実装は、Java EE 7のFullおよびWebプロファイルへの準拠が認定されています。WildFlyコードはLGPLライセンスの下で配布されます。
- WildFlyは、完全にテストおよび認定されたJava EEプラットフォームとして位置付けられている商用製品であるJBoss Enterprise Application Platformとは異なり、主にテクノロジーの進歩に焦点を当てています。 WildFlyは、商用製品JBoss Enterpriseのアップストリームプロジェクトとして機能します。 WildFlyの主な使用分野は、プロトタイプの開発と迅速な実装です。
主なリリース機能
- Java 7のサポートは廃止され、Java 8ランタイムとのより深い統合が可能になりました。 現在のJava 9スナップショットのサポートが追加されました。
- ActiveMQ Artemisをプロトコル互換のJavaメッセージサービスブローカーとして提供し、HornetQを置き換えます。
- CLIを使用したホストコントローラーの起動のサポート。 新しいembed-host-controllerコマンドを使用すると、追加のプロセスを開始したり、ネットワークソケットを開いたりすることなく、domain.xmlおよびhost.xmlファイルの内容を編集できます。
- Undertow.io httpサーバーでのJavaScriptサポート。CDIBeanおよびJPAエンティティBeanにアクセスできるJavaScriptでサーバー側のスクリプトを作成できます。 この機能は、外部バインディングまたはRESTハンドラーの作成に便利に使用されます。 編集したJavaScriptコードはすぐに利用可能になり、アプリケーションを再起動する必要はありません。
- アプリケーションのシングルフェールセーフデプロイメント(「シングルトンデプロイメント」)のサポート。クラスター化されたサーバーのグループが使用される場合、デプロイメントは1つのノードでのみ実行されますが、このノードに障害が発生すると、アプリケーションは自動的に別のノードに転送されます;
- 1つのノードのみで配信を開始しますが、別のノードを使用してメッセージを処理する障害が発生した場合、単一のフォールトトレラントメッセージ配信ブローカー(シングルトンMDB)をサポートします。
- 使用可能なシステムリソースに応じて、SLSBおよびMDBのプールサイズの自動選択。
- jbossweb(AS 7.1)、jacorb(WildFly 8)、hornetq(WildFly 9)などのレガシーサブシステムを移行するためのツール。WildFly10で実行されている同等のものへの古い構成の変換を自動化します。
- Hibernate 5の実装では、バイトコードの品質が大幅に改善され、パフォーマンスの最適化が導入され、APIに改善が追加されました。
Mavenを使用したWildflyでの自動展開について説明し、同じコンテナでUIを起動することについて簡単に説明します。
3.3.9(maven 3.5.0を使用)以上のMavenバージョンを使用する必要があります。使用しない場合、Wildflyプラグインは機能しません。
現在使用しているWildflyのバージョンは10.1.0-Final、プラグインのバージョンは1.2.0.Alpha4です
ビルドするアプリケーションのPom.XMLで、Wildflyサーバーに接続するデータを登録する必要があります
例:
<plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <configuration> <hostname>${wildfly-hostname}</hostname> <port>${wildfly-port}</port> <username>${wildfly-username}</username> <password>${wildfly-password}</password> <name>${wildfly-name}</name> </configuration> </plugin>
また、settings.xmlまたはpom.xmlの設定を1つ上のレベルにすることをお勧めします。 これにより、デプロイにプロファイルを使用できるようになります-ローカルデプロイ、製品へのデプロイ。
settings.xmlのプロファイル領域。
<profile> <id>localhost</id> <properties> <wildfly-hostname>localhost</wildfly-hostname> <wildfly-port>9990</wildfly-port> <wildfly-username>admin</wildfly-username> <wildfly-password>admin</wildfly-password> <wildfly-name>core.war</wildfly-name> </properties> </profile> <profile> <id>dev</id> <properties> <wildfly-hostname>Prod_Server</wildfly-hostname> <wildfly-port>9990</wildfly-port> <wildfly-username>admin</wildfly-username> <wildfly-password>admin</wildfly-password> <wildfly-name>core-prod_vers.war</wildfly-name> </properties> </profile>
すべての設定後、mavenを使用して、コマンドラインから、IDEから、たとえばJenkins(mavenプラグイン)から、
mvn wildfly:deployを使用してwarを
デプロイできます
。mvnwildfly:undeployおよび
mvn wildfly:redeploy forも使用できますそれぞれ削除と再開発。 プロファイル
-Plocalhostを選択すると、localhostのIDを持つプロファイルの設定で開始できます。それに応じて
-Pdevが販売用に起動します(設定内のすべてのデータはデフォルトまたは架空です)。
DeploymentsセクションのWildFlyコンソールで正しく構成されていれば、必要な戦争が発生します。
さらに、WildFlyではUIを実行できます。
WildFlyを構成してUIを起動します。
UI用に選択したディレクトリのWildFLyのルートにプロジェクトを配置します。
この例では、UIディレクトリを使用しました。
/PathToWildfly/standalone/configuration/standalone.xmlファイルで、行(検索を容易にするために、隣接する行を考慮した行)を追加する必要があります。
<location name="/" handler="welcome-content"/> <location name="/UI/" handler="UI"/> <filter-ref name="server-header"/> <filter-ref name="x-powered-by-header"/>
<handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> <file name="UI" path="${jboss.home.dir}/UI/widget/build"/>
その後、WildFLyは自動的に変更を取得し、アプリケーションはlocalhost:8080 / UIで利用可能になります。
現時点では、コマンド
./standalone.sh -b = 0.0.0.0 -bmanagement = 0.0.0.0を使用して起動が実行され、アプリケーションはLinux Oracle上で画面で実行されます。
使用中、2つの問題が特定されました。
- WildFLyの再起動が遅れ、localhostが長時間ドラッグされることがあります:9990-コンソール。
- Maven 3.3.9のJenkinsからredeployタグを使用して実行すると、メモリリークが発生し、アプリケーションは両方のバージョンのwarをアンインストールし、重複を宣誓します。 (常に再現されるとは限りません)
上記に加えて、約2か月間のこの束は問題を解決しませんでした。 この場合、Jenkinsはすべてをルールし、開始し、
mvn wildfly:undeploy mvn wildfly:deploy (再デプロイがうまくいかないため、この戦略を使用します)、組み立てられたUIをUIディレクトリに配信し、更新は夜間に行われ、飛行は正常です。
また、勝利ホストでの起動をテストしましたが、作業の違いに気付かず、すべてがまだ安定しています。