我已按照此tutorial创建了一个客户端。 此有效代码是否向同一服务器上部署的其他Web服务发出请求? 找不到任何相关文档或示例:(
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(ChangeStudentDetails.class);
factory.setAddress("http://localhost:8080/CXFTutorial/ChangeStudent?wsdl");
factory.getInInterceptors().add(new LoggingInInterceptor());
factory.getOutInterceptors().add(new LoggingOutInterceptor());
ChangeStudentDetails studenClient = (ChangeStudentDetails) factory.create();
studenClient.setName("Rockey");
// Is this valid code ?
factory.setAddress("http://localhost:8080/CXFTutorial/ChangeTeacher?wsdl");
ChangeTeacherDetails teacherClient = (ChangeTeacherDetails) factory.create();
Teacher teacher = teacherClient.setName("Leonardo");
答案 0 :(得分:1)
以下来源有几个工作示例:
SpringBusFactory bf = new SpringBusFactory();
URL busFile = CachingTest.class.getResource("cxf-client.xml");
Bus bus = bf.createBus(busFile.toString());
SpringBusFactory.setDefaultBus(bus);
SpringBusFactory.setThreadDefaultBus(bus);
URL wsdl = CachingTest.class.getResource("DoubleIt.wsdl");
Service service = Service.create(wsdl, SERVICE_QNAME);
QName portQName = new QName(NAMESPACE, "DoubleItTransportSAML1Port");
DoubleItPortType port =
service.getPort(portQName, DoubleItPortType.class);
((BindingProvider)port).getRequestContext().put("thread.local.request.context", "true");
updateAddressPort(port, PORT);
// Make a successful invocation
doubleIt(port, 25);
// Change the STSClient so that it can no longer find the STS
BindingProvider p = (BindingProvider)port;
clearSTSClient(p, bus);
// This should succeed as the token is cached
doubleIt(port, 30);
// This should fail as the cached token is manually removed
Client client = ClientProxy.getClient(port);
Endpoint ep = client.getEndpoint();
ep.remove(SecurityConstants.TOKEN_ID);
ep.remove(SecurityConstants.TOKEN);
try {
doubleIt(port, 35);
fail("Expected failure on clearing the cache");
} catch (SOAPFaultException ex) {
// Expected
}
((java.io.Closeable)port).close();
bus.shutdown(true);
答案 1 :(得分:0)
这可能是相关的:
public void useWebClient() {
System.out.println("Using WebClient to get the book with id 123");
WebClient client = WebClient.create("http://localhost:" + port + "/services/bookstore/");
Book book = client.post(new Book("HTTP"), Book.class);
System.out.println(book.getId() + ":" + book.getName());
}
public void useJMSClient() throws Exception {
System.out.println("Getting the book with id 123 over JMS");
getBookOverJMS();
System.out.println("Adding a new book over JMS");
addGetBookOverJMS(new Book("JMS Transport"));
System.out.println("Adding a new book over JMS Oneway");
addGetOnewayBookOverJMS();
System.out.println("Adding a new book over HTTP Oneway, "
+ " and getting it back over JMS");
addOnewayOverHttpGetOverJMS();
}
完整源代码: