2012-07-20 107 views
0

开始MuleServer当我收到以下错误 -骡子CXF代理服务问题

11:07:44.523 [主]错误org.mule.MuleServer -


消息:组件“在定义中搜索时未找到{http://xyz.com/services/mvi}ProxyService”。检查端点中的名称空间属性是否丢失或具有无效值。可能的服务匹配:“[]”。 [{http://xyz.com/services/mvi}MVIService] 类型:org.mule.api.lifecycle.InitialisationException 代码:MULE_ERROR-71999 的JavaDoc:http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/lifecycle/InitialisationException.html 对象:org.mule的定义所有服务.module.cxf.config.FlowConfiguringMessageProcessor @ 4c372a96

我不确定为什么Mule正在寻找ProxyService,而我已经将MVIServiceProxy定义为组件类。我CXF代理客户端配置是 -

<flow name="mviProxyService"> 
    <http:inbound-endpoint address="http://localhost:61005/mvi/service" exchange-pattern="request-response"> 
     <cxf:proxy-service wsdlLocation="classpath:mvi.wsdl" namespace="http://xyz.com/services/mvi" /> 
    </http:inbound-endpoint> 

    <component> 
     <prototype-object class="com.xyz.services.mvi.MVIServiceProxy"> 
      <property key="requestDispatchUrl" value="jms://mviq.121.order?connector=jmsConnector" /> 
      <property key="responsePollUrl" value="jms://mviq.async.service.reply?connector=jmsConnector" /> 
      <property key="serviceTimeout" value="90000" /> 
     </prototype-object> 
    </component> 
    <request-reply timeout="60000"> 
     <jms:outbound-endpoint queue="mviq.121.order" /> 
     <jms:inbound-endpoint queue="mviq.async.service.reply" exchange-pattern="one-way" /> 
    </request-reply> 
</flow> 

===========修改流===============

<flow name="mviProxyService"> 
    <http:inbound-endpoint address="http://localhost:61005/mvi/service" exchange-pattern="request-response"> 
     <cxf:proxy-service wsdlLocation="classpath:mvi.wsdl" namespace="http://xyz.com/services/mvi" /> 
    </http:inbound-endpoint> 

    <component class="com.xyz.services.mvi.MVIServiceProxy" /> 
    <request-reply timeout="60000"> 
     <jms:outbound-endpoint queue="mviq.121.order" /> 
     <jms:inbound-endpoint queue="mviq.async.service.reply" exchange-pattern="one-way" /> 
    </request-reply> 
</flow> 
+0

你介意展示全流程吗? CXF部分不可见。另外为什么使用'prototype-object'?你真的想要为每个调用创建一个组件对象吗? – 2012-07-20 15:51:34

+0

附注/问题:我注意到你在组件中注入了JMS端点URL。为什么?组件是否执行调度然后读取响应?然后请求 - 答复也会做到这一点? – 2012-07-21 23:02:41

+0

谢谢!我已经删除了原型对象和JMS端点URL,但仍然有相同的错误。但是,当我删除对WSDL的引用时,该错误消失。所以,如果我从mule config中取出[wsdlLocation =“classpath:mvi.wsdl”],它可以正常工作。可能是代理类需要具有由wsdl公开的方法。不确定。我对实现Callable接口有所了解,并且实现onCall方法将向组件的onCall()方法发送有效内容,在那里我可以使用XML进行任何操作。我错过了什么吗?为什么wsdl会造成问题? – user1493140 2012-07-24 19:06:22

回答

1

您需要指定cxf:proxy-service上的service属性。这是您在WSDL中找到的值,wsdl:service元素的name属性。您的组件不需要执行org.mule.api.lifecycle.Callable。只需要一个接受javax.xml.stream.XMLStreamReader参数的公共方法,您就可以访问XML有效负载。

+0

谢谢大卫。它现在有效! – user1493140 2012-07-24 21:26:12