1

jboss7とjboss-as-maven-pluginを使用してwarファイルを自動デプロイしています。contextRootがアプリケーション名に設定されたweb.xmlがあります。プラグインでは、fileNameを${project.build.finalName}。${project.packaging}に構成しました。正常にデプロイされますが、問題は、リリース番号を変更したときにwarファイル名が変更された場合です。

たとえば、次のバージョンをリリースする準備ができると、戦争はmyproject-v1.0.1.warからmyproject-v1.0.2.warに変わります。問題は、mavenjbossプラグインが実行されてwarファイルをデプロイしようとするときです。注強制をtrueに設定しているため、古いアプリケーションをアンデプロイして新しいアプリケーションをデプロイする必要があります。

問題は、アプリケーションが現在デプロイされているかどうかを判断するときに、webContextではなくwarファイル名をキーオフしているように見えることです。そのため、古いバージョンがまだ実行されているため、新しいバージョンはデプロイに失敗します。以前のバージョンを手動でアンデプロイしてから、再デポリする必要があります。古いアプリの強制的なアンデプロイはwar名に基づいているようで、バージョン番号が変更されたため、デプロイされたとは見なされず、古いバージョンが実行されたままになります。webContextがすでに使用されているため、失敗します。

プラグインの構成を汎用に変更しようとしましたが、これは機能します(ランタイム名と名前にはこの名前が表示され、warファイル名は表示されなくなります)。しかし、唯一の問題は、jbossの何かに影響を与えているようであり、デプロイされたwebContextが無効であり、アプリケーションにアクセスできないことを示しています。webContextがweb.xmlに設定されているので、これは奇妙なことですが、プラグインの構成が何らかの形でそれを壊しているようです。

4

4 に答える 4

0

name定義できる構成属性があります。これにより、デプロイメント名が上書きされます。設定されていない場合は、ファイルの名前が使用されます。

<project>
    ...
    <build>
        ...
        <plugins>
            ...
            <plugin>
                <groupId>org.jboss.as.plugins</groupId>
                <artifactId>jboss-as-maven-plugin</artifactId>
                <version>7.3.Final</version>
                <configuration>
                    <name>your-app</name>
                </configuration>
            </plugin>
            ...
        </plugins>
        ...
    </build>
...
</project>
于 2013-01-09T18:46:10.813 に答える
0

この記事はあなたの質問に答えているようです。 https://community.jboss.org/wiki/HowdoIoverridethewebcontextroot

私は自分のプロジェクトで試してみましたが、うまくいきました!基本的に、jboss-web.xml を作成します (これで、プロジェクトは特定のものになりました。これで、一度書き込みを行うと、どこにでもデプロイできます)。jboss-web.xml を次のようにします...

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>  
    <context-root>/rmbMavenCounter</context-root>  
</jboss-web>  

jboss-as-plugin の pom.xml から設定を削除します。私のプラグインは今のようになります

<build>
    <plugins>
                    .....
        <plugin>
            <groupId>org.jboss.as.plugins</groupId>
            <artifactId>jboss-as-maven-plugin</artifactId>
            <version>7.4.Final</version>
        </plugin>
    </plugins>
</build>

jboss 管理コンソールにスナップショット名でデプロイされますが、テキスト文字列を使用してアプリケーションにアクセスできます。たとえば、次のリンクを使用して上記のアプリケーションにアクセスしました。

http://localhost:8080/rmbMavenCounter/

これが私のjboss Webサーバーコンソールからの展開です...

08:12:42,413 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-16) JBAS015876: Starting deployment of "mavenCounter2-0.0.1-SNAPSHOT.war"
08:12:42,606 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-4) Initializing Mojarra 2.1.5 (SNAPSHOT 20111202) for context '/rmbMavenCounter'
08:12:42,663 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-4) Monitoring jndi:/default-host/rmbMavenCounter/WEB-INF/faces-config.xml for modifications
08:12:42,665 INFO  [org.jboss.web] (MSC service thread 1-4) JBAS018210: Registering web context: /rmbMavenCounter
08:12:42,678 INFO  [org.jboss.as.server] (management-handler-threads - 30) JBAS018559: Deployed "mavenCounter2-0.0.1-SNAPSHOT.war"
于 2013-10-21T13:20:17.410 に答える
0

そのため、しばらくこれを試してみたところ、config を使用するとデプロイされるのに webContext が設定されていない理由がわかりませんでした。しかし、同じ WAR を手動でデプロイすると、webContext が設定されました。

最後に。私たちがやったことは、戦争の名前を一般的な名前に変更することでした. したがって、myapp_v_1_0_1.war ではなく、myapp.war にしました。コンソールを見るだけではどのバージョンがデプロイされているかがわからないため、これは苦痛です。バージョン番号を表示するアプリケーションをヒットする必要があります。しかし、これを行うことで、古いアプリのアンデプロイに関する問題は解決しましたが、コンソールを介してデプロイされたバージョンを簡単に判断できないという新しい問題が発生しました。

于 2013-01-10T16:11:50.170 に答える