2

私はJBoss5とシステムプロパティサービスを使用して、アプリ(war with war)に必要ないくつかのシステムプロパティを設定しています。これらの1つは、jboss-web.xmlで参照される仮想ホストの名前です。

<jboss-web>
  <context-root>/</context-root>
  <virtual-host>${my.host.system.prop}</virtual-host>
  ...
  <depends>jboss:type=Service,name=SystemProperties</depends>
</jboss-web> 

SystemPropertiesサービスへの依存関係に注意してください。

ただし、サーバーの起動時に、システムプロパティが設定される前にアプリが読み込まれます。耳に触れて再配置すると、耳が整理されます。興味深いことに、ログから、アプリがデプロイされる前にSystemPropertiesサービスが実際に読み込まれることがわかります。

誰かアイデアはありますか?手伝うことができれば、JAVA_OPTSで小道具を設定することに頼りたくありません。

4

2 に答える 2

3

SystemProperties mbeanはどこで定義しますか?JBoss 4.2でも同様の問題が発生しましたが、デプロイディレクトリに配置する代わりにmbean定義をconf/jboss-service.xmlに配置することで問題を解決しました。これにより、SystemPropertiesmbeanがjboss起動時にロードされます。

このソリューションの唯一の欠点は、SystemPropertiesmbeanのホットデプロイメント機能が失われることです。

于 2011-06-10T13:58:35.780 に答える
0

Systempropertiesを独自のSystempropertiesServiceとして、たとえばファイル「myapp-properties-service.xml」としてデプロイします。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE server>
<server>
<mbean code="org.jboss.varia.property.SystemPropertiesService"
    name="jboss:type=Service,name=myAppSystemProperties">

            <!-- relative path of server profile, 
                 comma separated list of propertyfiles-->
    <attribute name="URLList">
        ./conf/props/myapp-system.properties,./conf/props/myapp-otherstuff.properties
    </attribute>
</mbean>

ここで、アプリケーションが有効になる前に、myAppSystemPropertiesServiceが有効になっていることを確認してください。この問題は、宣言を「deploy」-dirではなく「deployers」-dirに配置することで解決しました。「deployers」フォルダで宣言されたサービスは、「deploy」のサービスよりも先にデプロイされます。例えば:

jboss-5.1.0.GA/server/default/deployers/myapp-properties-service.xml
jboss-5.1.0.GA/server/default/props/myapp-system.properties
jboss-5.1.0.GA/server/default/props/myapp-otherstuff.properties
于 2012-04-05T12:11:50.987 に答える