【问题标题】:SOAP message not using attachmentsSOAP 消息不使用附件
【发布时间】:2023-03-13 18:35:01
【问题描述】:

我正在使用一个带有基于 64 位编码的二进制数据对象的 Web 服务。对应的 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>

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

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

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

--

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

这并没有改变什么,我发现这些类都很好。

--

这似乎是我们的一个 Handler 实现中这个方法调用的问题:

ctx.getMessage();

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

【问题讨论】:

    标签: java xml web-services soap mtom


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-10
      • 2017-12-25
      • 2013-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多