Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用MTOM从web服务解组jaxb时出错_Java_Jaxb_Eclipselink_Jax Ws_Mtom - Fatal编程技术网

Java 使用MTOM从web服务解组jaxb时出错

Java 使用MTOM从web服务解组jaxb时出错,java,jaxb,eclipselink,jax-ws,mtom,Java,Jaxb,Eclipselink,Jax Ws,Mtom,我有一个使用基于模式的负载的jax-ws-web服务。添加MTOM附件类型: <xs:element name="Attachment" type="xs:base64Binary" xmime:expectedContentTypes="application/octet-stream" minOccurs="0" maxOccurs="1" > </xs:element> 使用soapUI发送请求 HTTP标头:

我有一个使用基于模式的负载的jax-ws-web服务。添加MTOM附件类型:

<xs:element name="Attachment" type="xs:base64Binary"
            xmime:expectedContentTypes="application/octet-stream" 
            minOccurs="0" maxOccurs="1" >
</xs:element>
使用soapUI发送请求

HTTP标头:

 Accept-Encoding: gzip,deflate
 Content-Type: multipart/related; type=application/xop+xml; start=<rootpart@soapui.org>; start-info=text/xml; boundary=----=_Part_96_20541990.1485816424570
 SOAPAction: http://hsn.us.banner.hsntech.com/Level1Request
 MIME-Version: 1.0
 Content-Length: 47624
  [1]: https://i.stack.imgur.com/BEbZS.jpg
接受编码:gzip,deflate
内容类型:多部分/相关;类型=应用程序/xop+xml;开始=;开始信息=文本/xml;边界=---------第96部分20541990.1485816424570
SOAPAction:http://hsn.us.banner.hsntech.com/Level1Request
MIME版本:1.0
内容长度:47624
[1]: https://i.stack.imgur.com/BEbZS.jpg
然后查看HTTP部分和编码文件部分:

------=_Part_96_20541990.1485816424570"
Content-Transfer-Encoding: binary"
Content-ID: <test1.jpg>"
Content-Disposition: attachment; name="test1.jpg"; filename="test1.jpg""
[0xff][0xd8][0xff][0xe0][0x0][0x10]JFIF[0x0][0x1][0x1][0x1][0x0]`[0x0]`[0x0][0x0][0xff][0xdb][0x0]C[0x0][\n]"... etc...
----=\u部分\u 96\u 20541990.1485816424570“
内容传输编码:二进制“
内容ID:“
内容处置:附件;name=“test1.jpg”;filename=“test1.jpg”
[0xff][0xd8][0xff][0xe0][0x0][0x10]JFIF[0x0][0x1][0x1][0x0][0x0][0x0][0xff][0xdb][0x0]C[0x0][\n]”等。。。
但不断出现这样的错误:

[Exception [EclipseLink-25004] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.XMLMarshalException&#xd;
Exception Description: An error occurred unmarshalling the document&#xd;
Internal Exception: java.lang.IllegalArgumentException: MjAxNi0wMS0wNVQwOTowMDowMA==]</faultstring></ns0:Fault></S:Body></S:Envelope>
[Exception[EclipseLink-25004](Eclipse持久性服务-2.5.2.v20140319-9ad6abd):org.Eclipse.Persistence.exceptions.xmlmarshallexception
;
异常描述:对文档
;
内部异常:java.lang.IllegalArgumentException:MjAxNi0wMS0wNVQwOTowMDowMA=]

有什么建议吗?

错误消息基本上表明值MjAxNi0wMS0wNVQwOTowMDowMA==是非法的。如果您检查它,它是一个
base64
编码日期:

2016-01-05T09:00:00
我不知道您试图解组的对象中是否有其他字段。但如果有,解组进程无法处理base64编码值。您应该检查是否需要某个适配器

一句话:您可能应该有一个base64解码器,或者检查原始服务,因为解码的
字符串
实际上不是一些二进制数据


(如果插入所有使用的代码,我可以深入查看。)

所有wsdl、注释、http头和http部分似乎都正确。可能是MOXY错误。我建议尝试使用标准JAXB上下文。我们正在使用getValueByXPath()的MOXY功能moxy提供的用于使用xpath从jaxb对象提取值的函数。我不认为标准jaxb提供了这种功能。它是二进制数据。问题是,它不应该在线包含在jaxb中,而是可以通过作为对象定义一部分的DataHandler对象进行extactable。抱歉,但这并不能让我理解太多进一步。谢谢。请尝试将
数据处理程序
更改为
对象
,并检查在调试会话中设置了什么。对于我来说,仍然不清楚为什么您认为文件处理是问题所在,而错误显示了一些base64编码的日期。
2016-01-05T09:00:00