不使用附件的 SOAP 消息



我正在使用一个带有二进制数据对象的网络服务,该对象是 base 64 编码的。相应的 xsd 元素如下所示:

<xs:element name="Document" maxOccurs="unbounded"
                xmime:expectedContentTypes="application/octet-stream">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="xs:base64Binary">
                <xs:attribute name="id" type="xs:anyURI" use="required">
                    <xs:annotation>
                        <xs:documentation>documentation text...</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>

使用 maven-jaxws-tools-plugin 和 jbossws-cxf-client 生成我的类后(本机客户端导致相同的错误),似乎缺少一些东西。无论我如何尝试启用 MTOM,它都不会发送任何附件,但它将二进制数据保存在主 xml 中。我尝试配置 SOAPBinding,并使用带有和不带阈值的 MTOMFeature 创建了端口。基本上它总是看起来像这样。

<ns4:Document id="Document01">dGhpcyBpcyBzYW1wbGUgZG9jdW1lbnQgbm8uIDE=</ns4:Document>

xsd 文件中是否有错误,是插件有问题还是只是我忘记了什么?

--

使用另一个插件(jaxws-maven-plugin)生成类后,我在控制台中收到了一个有趣的警告。它告诉我 xmine:expectContentType 属性存在于无效元素中。我很确定我看到了几个以完全相同的方式这样做的例子,所以我不知道这是否会导致任何问题。

这并没有改变任何东西,我发现课程很好。

--

在我们的处理程序实现之一中,此方法调用似乎存在问题:

ctx.getMessage();

ctx 是放入 SOAPHandler 实现的 handleMessage 方法中的 SOAPMessageContext 对象。一旦执行此方法,请求中就不会有附件。我很好奇 getter 如何禁用整个请求的附件。有什么想法吗?

我终于设法找到了这种行为的原因。有一个错误不会得到修复,导致它。相应的票可以在这里找到:https://java.net/jira/browse/WSIT-1320

有关

解决方法,您可以转到此博客文章,这是我找到有关此主题的一些信息的地方:http://blog.toshredsyousay.com/post/43379955341/the-trouble-with-soaphandlers-and-mtom#fn:p43379955341-8

相关内容

  • 没有找到相关文章

最新更新