我有一个带有 MTOM 的 WSDL,我们可以正确处理它:有可用的文档。这就是我们最终的结果。除了我们看到它工作之外,没有对其进行太多测试。
byte[] document = ... ;
DataSource dataSource = new ByteArrayDataSource(document, "application/octet-stream");
DataHandler dataHandler = new DataHandler(dataSource);
response.setDocument(dataHandler);
现在基础设施人员将我们的 XSD 更改为使用 XOP,因为请求中的附件是可以的,而不是我们实际用例的响应中的附件。所以他们改变了我们的 XSD 并添加了一个xop.xsd
.
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
xmlns:tns='http://www.w3.org/2004/08/xop/include'
targetNamespace='http://www.w3.org/2004/08/xop/include' >
<xs:element name='Include' type='tns:Include' />
<xs:complexType name='Include' >
<xs:sequence>
<xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' />
</xs:sequence>
<xs:attribute name='href' type='xs:anyURI' use='required' />
<xs:anyAttribute namespace='##other' />
</xs:complexType>
</xs:schema>
有了这个新结构,该方法setDocument
现在定义如下setDocument(Include)
:
生成的Include
类基本如下:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Include", namespace = "http://www.w3.org/2004/08/xop/include", propOrder = {
"any"
})
public class Include
implements org.jvnet.jaxb2_commons.lang.ToString
{
@XmlAnyElement(lax = true)
protected List<Object> any;
@XmlAttribute(name = "href", required = true)
@XmlSchemaType(name = "anyURI")
protected String href;
@XmlAnyAttribute
private Map<QName, String> otherAttributes = new HashMap<QName, String>();
public List<Object> getAny() {
if (any == null) {
any = new ArrayList<Object>();
}
return this.any;
}
public String getHref() {
return href;
}
public void setHref(String value) {
this.href = value;
}
public Map<QName, String> getOtherAttributes() {
return otherAttributes;
}
// Other irrelevant methods for ToString.
}
我的问题是:如何以及在哪里添加该Include
对象中的文档?(文档是第一个代码片段中看到的字节数组)