2

我正在使用 JBoss 5 和系统属性服务来设置我的应用程序(有战争的耳朵)需要的一些系统属性。其中之一是 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 而不是将其放入部署目录来解决的。它导致在 jboss 启动时加载 SystemProperties mbean。

此解决方案的唯一缺点是您失去了 SystemProperties mbean 的热部署能力。

于 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。我们通过将其声明放入“deployers”-dir 而不是“deploy”-dir 来解决这个问题。在“部署者”文件夹中声明的服务在“部署”中的服务之前部署。例如:

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 回答