【发布时间】: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