在 JBoss AS 7 之前的版本中使用 SAR 时,你需要一个 extends 了 org.jboss.system.ServiceMBeanSupport
并 implements org.jboss.system.ServiceMBean
的类。但在 JBoss AS 7 中,这两者都不存在了。
在 JBoss AS 7 中实现一个 MBean 你只需要一个实现了自定义接口的类。jboss-service.xml
中的配置和过去相同,但是必须制定 XML Schema,否则会有如下的异常:
<!-- lang: shell -->
23:10:52,007 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.deployment.unit."ServerMonitorService.sar".PARSE: org.jboss.msc.service.StartException in service jboss.deployment.unit."ServerMonitorService.sar".PARSE: Failed to process phase PARSE of deployment "ServerMonitorService.sar"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_21]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_21]
at java.lang.Thread.run(Thread.java:619) [:1.6.0_21]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: Failed to parse service xml ["/home/userone/jboss-as-7.0.1.Final/standalone/deployments/ServerMonitorService.sar/META-INF/jboss-service.xml"] at org.jboss.as.service.ServiceDeploymentParsingProcessor.deploy(ServiceDeploymentParsingProcessor.java:94) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115) ... 5 more Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[3,1] Message: Unexpected element 'server' at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:98) at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:59) at org.jboss.as.service.ServiceDeploymentParsingProcessor.deploy(ServiceDeploymentParsingProcessor.java:87)
JBoss AS 7 中 jboss-service.xml
配置示例:
<!-- lang: xml -->
<?xml version="1.0" encoding="UTF-8"?>
<server xmlns="urn:jboss:service:7.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:jboss:service:7.0 jboss-service_7_0.xsd">
<mbean code="custom.mbean.MyServerMonitor" name="service.server.monitor:service=MyMonitor">
<attribute name="Frequency">5000</attribute>
</mbean>
</server>