我正在使用JBoss 5和系统属性服务来设置我的app(ear with war)需要的一些系统属性。其中一个是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中设置道具。
答案 0 :(得分:3)
您的SystemProperties mbean在哪里定义?我遇到了与JBoss 4.2类似的问题,我的问题通过将mbean定义放入conf / jboss-service.xml而不是将其放入deploy目录来解决。这导致SystemProperties mbean在jboss启动时加载。
此解决方案的唯一缺点是您失去了SystemProperties mbean的热部署能力。
答案 1 :(得分: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来解决这个问题。在“deployers”文件夹中声明的服务在“deploy”中的服务之前部署。 E.g:
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