配置service.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
<service xmlns="http://xfire.codehaus.org/config/1.0" >
<name>recive</name>
<namespace>http://localhost:8080/pserver</namespace>
<serviceClass>com.rhkj.photo.webservice.IReciveXML</serviceClass>
<implementationClass>com.rhkj.photo.webservice.ReciveXMLImpl</implementationClass>

<properties>
<property key="mtom-enabled" value="true"></property>
</properties>
</service>
</beans>
客户端的部分代码
IReciveXML srvc = (IReciveXML) factory.create(srvcModel,helloWorldURL);
     Client client = Client.getInstance(srvc);
    
     client.setProperty("mtom-enabled", "true");  
        
其他配置无问题,不设置mtom的时候可以正常访问,设置了之后出现以下异常
org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Unexpected element: {http://www.w3.org/2004/08/xop/include}Include
org.codehaus.xfire.fault.XFireFault: Unexpected element: {http://www.w3.org/2004/08/xop/include}Include
at org.codehaus.xfire.fault.Soap11FaultSerializer.readMessage(Soap11FaultSerializer.java:31)
at org.codehaus.xfire.fault.SoapFaultSerializer.readMessage(SoapFaultSerializer.java:28)
at org.codehaus.xfire.soap.handler.ReadHeadersHandler.checkForFault(ReadHeadersHandler.java:111)
at org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:67)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Client.onReceive(Client.java:406)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
at $Proxy0.recivePhoto(Unknown Source)
at com.rhkj.photo.webservice.CallService.main(CallService.java:34)有高手知道是因为什么原因吗?如何解决?

解决方案 »

  1.   

    http://localhost:8080/YYY/services/XX?wsdl,看有显示不。
    axis2,xfire建议都使用Myeclipse等工具生成,不容易出错。
      

  2.   

    显示,没有问题。功能都已经具备,
    为什么使用mtom设置呢?是因为传输的图片有大小限制,无法完成完整传输。
    类似的报错在网上查了一大堆,说的都比较简单,就是设置了服务器端和客户端的mtom-enable=true就行。
    我也设置了,但就是报错,郁闷。
      

  3.   

       <properties>
                <property key="mtom-enabled" value="true"></property>
            </properties>
    设置这个是 没设置过
      

  4.   

    晕,你的配置写错了吧,老兄:
    <properties>
        <property key="mtom-enabled" value="true"></property>
    </properties>应该修改为:
    <properties>
        <property key="mtom-enabled">true</property>
    </properties>前面一个配置会导致服务端读取到的“mtom-enabled”参数始终为空,而不是“true”。
      

  5.   


    我之前也配置成这样了,报错了。不过,有点不同的是,我的是没有下列一句引入的:
    <import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>