错误键属性不能为空

时间:2012-11-05 13:05:23

标签: jboss jboss5.x jboss-esb

Hi all i'm try to deploy a esb project into jboss server 5.1ga 
But i got this error 

**My Enviroment is 
Jboss 5.1 ga,
Jboss Developer Studio 5.0**
Jboss esb 4.11
Riftsaw 2.3.0




 17:58:49,155 ERROR [AbstractKernelController] Error installing to Parse: name=vfszip:/D:/jboss-5.1.0.GA/server/default/deploy/Save_Event2.esb/ state=Not Installed mode=Manual requiredState=Parse
        org.jboss.deployment.DeploymentException: Key properties cannot be empty
            at org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser.getDependenciesFromDeploymentXml(EsbConfigParser.java:265)
            at org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser.parse(EsbConfigParser.java:170)
            at org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser.parse(EsbConfigParser.java:83)
            at org.jboss.deployers.vfs.spi.deployer.AbstractVFSParsingDeployer.parseAndInit(AbstractVFSParsingDeployer.java:256)
            at org.jboss.deployers.vfs.spi.deployer.AbstractVFSParsingDeployer.parse(AbstractVFSParsingDeployer.java:239)
            at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.createMetaData(AbstractParsingDeployerWithOutput.java:355)
            at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.createMetaData(AbstractParsingDeployerWithOutput.java:322)
            at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.createMetaData(AbstractParsingDeployerWithOutput.java:294)
            at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.deploy(AbstractParsingDeployerWithOutput.java:234)
            at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
            at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
            at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
            at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
            at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
            at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
            at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
            at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
            at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
            at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
            at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
            at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
            at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
            at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
            at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
            at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
            at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:361)
            at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
            at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
            at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
            at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
            at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
            at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
            at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
            at org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:306)
            at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271)
            at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
            at org.jboss.Main.boot(Main.java:221)
            at org.jboss.Main$1.run(Main.java:556)
            at java.lang.Thread.run(Unknown Source)
        Caused by: javax.management.MalformedObjectNameException: Key properties cannot be empty
            at javax.management.ObjectName.construct(Unknown Source)
            at javax.management.ObjectName.<init>(Unknown Source)
            at org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser.getDependenciesFromDeploymentXml(EsbConfigParser.java:247)
            ... 38 more

这是我得到的错误,我试图将bpel结果传递给esb并回到bpes。

---我的deployment.xml -----------------

    <?xml version="1.0"?>
    <jbossesb-deployment>

 <depends>jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_    esb_reply</depends>
      <depends>quickstart_helloworld_Request_esb</depends>
      <depends>quickstart_helloworld_Request_gw</depends>
    </jbossesb-deployment>

- 我的jbm-queue-service.xml -----------

 <?xml version="1.0" encoding="UTF-8"?>
        <server>
            <mbean code="org.jboss.jms.server.destination.QueueService"
                name="jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_esb_reply"
                xmbean-dd="xmdesc/Queue-xmbean.xml">
                <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer
                </depends>
                <depends>jboss.messaging:service=PostOffice</depends>
            </mbean>
            <mbean code="org.jboss.jms.server.destination.QueueService"
                name="jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_esb"
                xmbean-dd="xmdesc/Queue-xmbean.xml">
                <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer
                </depends>
                <depends>jboss.messaging:service=PostOffice</depends>
            </mbean>
            <mbean code="org.jboss.jms.server.destination.QueueService"
                name="jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_gw"
                xmbean-dd="xmdesc/Queue-xmbean.xml">
                <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer
                </depends>
                <depends>jboss.messaging:service=PostOffice</depends>
            </mbean>
        </server>

----我的jboss-esb.xml -----------

 <?xml version = "1.0" encoding = "UTF-8"?>
    <jbossesb
        xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd http://anonsvn.jboss.org/repos/labs/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"
        parameterReloadSecs="5">

        <providers>
            <jms-provider name="JBossMQ" connection-factory="ConnectionFactory">
                <jms-bus busid="quickstartGwChannel">
                    <jms-message-filter dest-type="QUEUE"
                        dest-name="queue/quickstart_helloworld_Request_gw" />
                </jms-bus>
                <jms-bus busid="quickstartEsbChannel">
                    <jms-message-filter dest-type="QUEUE"
                        dest-name="queue/quickstart_helloworld_Request_esb" />
                </jms-bus>
                <jms-bus busid="quickstartEsbReplyChannel">
                    <jms-message-filter dest-type="QUEUE"
                        dest-name="queue/quickstart_helloworld_Request_esb_reply" />
                </jms-bus>

            </jms-provider>
            <jbr-provider name="JBR-Http-1" protocol="http" host="localhost">
                <jbr-bus busid="Http-1" port="8088" />
            </jbr-provider>

        </providers>

        <services>
            <service category="FirstServiceESB" name="SimpleListener"
                description="Hello World">
                <listeners>
                    <jms-listener name="JMS-Gateway" busidref="quickstartGwChannel"
                        is-gateway="true" />
                    <jms-listener name="helloWorld" busidref="quickstartEsbChannel" />
                    <jbr-listener name="Http-Gateway" busidref="Http-1"
                        is-gateway="true" />
                </listeners>
                <actions mep="RequestResponse">
                    <action name="action1"
                        class="MyJMSListenerAction"
                        process="displayMessage" />
                        <!-- 
                    <action name="action2" class="org.jboss.soa.esb.actions.SystemPrintln">
                        <property name="printfull" value="false" />
                    </action>
                    The next action is for Continuous Integration testing 
                    <action name="testStore" class="org.jboss.soa.esb.actions.TestMessageStore" />
                    -->
                </actions>
            </service>
        </services>

    </jbossesb>

任何帮助赞赏。     最好的祝福,     普拉迪普。

1 个答案:

答案 0 :(得分:0)

如果查看错误的堆栈跟踪,可以看到错误是来自EsbConfigParser的MalformedObjectNameException:

org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser.getDependenciesFromDeploymentXml(EsbConfigParser.java:247)

引发错误的方法名称是

  

getDependenciesFromDeploymentXml

所以看起来问题出现在部署xml中。

现在我们可以通过查看类的源代码(https://www.java2s.com/Open-Source/Java/JBoss/jbossesb-4.7/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java.htm)来确认这一点,并看到它正在执行此操作:

    Iterator depends = MetaData.getChildrenByTagName(jboss, "depends");
    if (depends != null)
    {
        while (depends.hasNext())
        {
            Element depend = (Element) depends.next();
            dependencies.add(new ObjectName(MetaData.getElementContent(depend)));
        }
    }

然后,如果我们查看上面的deployment.xml,确实有一个看起来无效的元素:

  <depends>jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_    esb_reply</depends>

“quickstart_helloworld_Request_ esb_reply”在“Request_”和“esb_reply”之间不应有空格。

将其更改为“quickstart_helloworld_Request_esb_reply”。