gpt4 book ai didi

java - 如何使用 apache cxf 创建 Web 服务客户端?

转载 作者:行者123 更新时间:2023-12-01 10:16:48 26 4
gpt4 key购买 nike

我已经关注了这个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");

最佳答案

以下来源有几个工作示例:

https://github.com/apache/cxf/blob/master/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/caching/CachingTest.java#L107

    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);

关于java - 如何使用 apache cxf 创建 Web 服务客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35848880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com