使用 CXF 的 SOAP 处理程序附件

Attachment with SOAP Handler using CXF

我正在尝试使用 Apache CXF 附加一个带有 SOAP 处理程序的文件,但它不起作用。

我的例子在这里

https://github.com/emag-notes/cxf-soaphandler-demo

在这个例子中,我使用 SAAJ API 来附加一个文件。

https://github.com/emag-notes/cxf-soaphandler-demo/blob/master/server/src/main/java/cxf/soaphandler/AttachmentHandler.java#L49-L54

但是,SOAP 消息响应只是一个 SOAP 信封,而不是多部分(不是 包括我附加的文件)。

我错过了什么吗?此代码适用于 Apache Axis2。

虽然我知道使用 MTOM 是最好的选择,但我现在想使用我现有的代码 AMAP(我正在从 Axis2 迁移)。

虽然代码看起来不错,但我相信您需要启用 MTOM,即使您没有使用 MTOM 的全部功能。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:soap="http://cxf.apache.org/bindings/soap"
       xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

  <jaxws:server id="Downloader" serviceClass="cxf.soaphandler.Downloader" address="downloader">
    <jaxws:serviceBean>
      <bean class="cxf.soaphandler.Downloader">
      </bean>
    </jaxws:serviceBean>
    <jaxws:binding>
        <soap:soapBinding mtomEnabled="true" />
    </jaxws:binding>
  </jaxws:server>

</beans>