我正在使用基于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是SOAPMessageContext对象,它放在SOAPHandler实现的handleMessage方法中。执行此方法后,请求中将不会有任何附件。我很好奇getter如何禁用整个请求的附件。有什么想法吗?
答案 0 :(得分:1)
我终于设法找到了这种行为的原因。有一个错误无法修复导致它。可在此处找到相应的故障单:https://java.net/jira/browse/WSIT-1320
对于解决方法,您可以访问此博客文章,在那里我找到了有关此主题的一些信息: http://blog.toshredsyousay.com/post/43379955341/the-trouble-with-soaphandlers-and-mtom#fn:p43379955341-8