后便可在接下来出现的页面中输入测试请求XML。下面是一个示例请求XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<dataStaging xmlns="http://services.irad.acmeworld.com/datastaging">
<inputURIs>
<inputURI>
<uri>http://www.altova.com</uri>
</inputURI>
<inputURI>
<uri>http://www.amazon.com</uri>
</inputURI>
</inputURIs>
</dataStaging>
WebLogic Test Client相当优秀,但是它实际上并不能测试在客户端上使用JAXB和JAX-WS。最后一步将实现这一任务。
使用JAX-WS Web服务客户端进行测试
最后,我们将使用JAX-WS Web服务客户端调用DataStagingService Web服务。最后一部分的代码要比JAX-WS服务端点的代码稍微复杂一些,因此它需要使用JAXB API。
try
{
DataStagingService service = new DataStagingService(
new URL("http://localhost:7031/datastaging/DataStagingService?WSDL"),
new QName("http://services.irad.acmeworld.com/datastaging",
_properties.getProperty("datastaging.service.portName"))
);
Dispatch sourceDispatch = service.createDispatch(
new QName("http://services.irad.acmeworld.com/datastaging",
"DataStagingService"),
Source.class,
Service.Mode.PAYLOAD
);
InputStream inputstream = Thread.currentThread().getContextClassLoader().
getResourceAsStream("SampleDataStagingRequestDocument.xml");
Source responseSource = sourceDispatch.invoke(new StreamSource(inputstream));
javax.xml.transform.TransformerFactory factory =
javax.xml.transform.TransformerFactory.newInstance();
javax.xml.transform.Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(javax.xml.transform.OutputKeys.METHOD, "xml");
javax.xml.transform.stream.StreamResult streamResult =
new javax.xml.transform.stream.StreamResult();
streamResult.setOutputStream(new java.io.ByteArrayOutputStream());
transformer.transform(responseSource, streamResult);
System.out.println((new StringBuffer()).append("response=").
append(streamResult.getOutputStream()).toString());
}
catch(Throwable throwable)
{
throwable.printStackTrace();
System.out.println((new StringBuffer()).append("Unexpected exception: ").
append(throwable.getMessage()).toString());
}
在WEBLOGIC SERVER 10中使用JAX-WS和JAXB(8)
时间:2011-01-27
其中大多数代码专门用于执行XSL转换,并且使用了JDK中的JAXP API类。首先,创建一个DataStagingService服务桩(stub)。该服务桩将接收一个URL对象(指向服务端点的WSDL)和一些与XML相关的内容,用于建立要调用的服务。后者将在检索WSDL之后使用。
注意,DataStagingService服务桩和相关类是由BEA clientgen Ant任务生成的。我并没展示这些代码,不过该Ant任务也拥有一个type="JAXWS"和一个<binding>子元素。
摘录代码的其余部分包括:
创建Dispatch对象,该对象用于调用Web服务操作。Dispatch对象在功能上等同于JAX-RPC中的Call对象(与DII编程模型一起使用)。
通过XML文档创建有效负载。这违背了“为各个元 |