我有一个我需要遵守的规范,当使用MTOM / XOP提供和使用Web服务时,这会产生一些非常不寻常的需求(出于历史原因):
总而言之,Content-Type HTTP Header必须像这样编码:
start-info和action必须编码为Content-Type的单独参数:
start-info="application/soap+xml";action="urn:ihe:iti:2007:RetrieveDocumentSet"
Content-Type: multipart/related;start="...";type="application/xop+xml";boundary="...";start-info="application/soap+xml;action=\"urn:ihe:iti:2007:RetrieveDocumentSet\""
这同样适用于使用Web服务消息发送的MIME边界。
包含Java7和Java8的JAX-WS实现似乎处理不同,即:Java7按照我需要遵守的规范进行编码,而Java8根据MTOM / XOP规范进行编码。我不能回到Java8,因为我使用的其他库需要Java8有没有办法修改JAX-WS的行为,或者在到达其他系统之前拦截和更改标头/ MIME边界?
答案 0 :(得分:2)
同时,我们找到了答案:可以在应用程序中使用自定义TubeFactory
。然后,这可以返回带有修改后的HttpTransportPipe
实现的标准Codec
,该实现会修改getStaticContentType(Packet)
方法中的Content-Type标头。