1.spring配置文件方式测试
<!-- 客户端密码配置Bean定义 -->
<bean id="passwordCallback" class="com.creditease.core.ws.client.ClientValidateCallback">
<property name="userMap">
<map>
<entry key="abc" value="abc" />
</map>
</property>
</bean>
<jaxws:client id="testService" serviceClass="com.creditease.core.ws.client.UserService"
address="http://localhost:8080/project/services/testService">
<jaxws:outInterceptors>
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
<property name="properties">
<map>
<entry key="action" value="UsernameToken" />
<entry key="user" value="admin" />
<entry key="passwordType" value="PasswordText" />
<entry key="passwordCallbackRef" value-ref="passwordCallback" />
</map>
</property>
</bean>
</jaxws:outInterceptors>
</jaxws:client>
用户名密码验证类
public class ClientValidateCallback implements CallbackHandler {
private Map<String, String> userMap = null;
public void setUserMap(Map<String, String> userMap) {
this.userMap = userMap;
}
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
int usage = pc.getUsage();
if (!userMap.containsKey(pc.getIdentifier()))
throw new WSSecurityException("user not exists ");
String pass = userMap.get(pc.getIdentifier());
if (usage == WSPasswordCallback.USERNAME_TOKEN && pass != null) {
pc.setPassword(pass);
return;
}
}
}
}
@Autowired
private TestService testService;
2.客户端java代码测试
JaxWsProxyFactoryBean userClient = new JaxWsProxyFactoryBean();
userClient.setServiceClass(UserService.class);
userClient.setAddress("http://localhost:8080/project/services/testService");
// 设置用户名密码
Map<String, Object> outProps = new HashMap<String, Object>();
outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
outProps.put(WSHandlerConstants.USER, "abc");
outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, ClientPasswordCallback.class.getName());
WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
userClient.getOutInterceptors().add(wssOut);
userClient.getOutInterceptors().add(new SAAJOutInterceptor());
TestService testService = (TestService) userClient.create();
// 超时设置
Client proxy = ClientProxy.getClient(testService);
HTTPConduit conduit = (HTTPConduit) proxy.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(360000);
httpClientPolicy.setAllowChunking( false );
httpClientPolicy.setReceiveTimeout(320000);
conduit.setClient(httpClientPolicy);
用户名密码验证类
public class ClientPasswordCallback implements CallbackHandler {
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
pc.setIdentifier("admin");
pc.setPassword("admin");
}
}
分享到:
相关推荐
【标题】:“CXF Webservice 文件分块上传” 在IT领域,CXF是一个广泛使用的开源框架,用于构建和部署Web服务。它支持多种Web服务规范,包括SOAP、RESTful等。"文件分块上传"是一种处理大文件的技术,通常用于优化...
- 官方文档:Apache CXF和SpringBoot的官方文档提供了详细的配置和使用指南。 - 社区论坛:Stack Overflow和其他技术社区有很多关于SpringBoot+CXF整合的问题和解答,可以作为参考。 6. **调试与测试** - 使用`...
"cxf超时设置"这个主题是关于如何在使用CXF框架时,对网络通信的超时时间进行配置,以优化服务的稳定性和性能。 首先,理解超时的概念至关重要。在计算机网络中,超时是指等待某个操作完成的时间限制。当这个时间...
在文件列表中的"WebServiceClient"可能是一个示例项目,包含了创建和运行CXF Web服务客户端的源代码和配置文件。通过分析这个项目,你可以更好地理解如何在实际开发中应用上述概念。 总之,CXF为Java开发者提供了一...
使用cxf wsdl2java生成webservice客户端命令
7. **配置和优化**:CXF支持多种配置,例如设置超时、安全认证、日志等,这可以通过Spring配置文件或编程式方式进行。 在"DynamicClientDemo"项目中,你可以看到如何将这些步骤整合到实际应用中,包括如何初始化...
在标题和描述中提到的“cxf生成webservice客户端”是指利用CXF的工具从WSDL文件自动生成Java客户端代码,以便于调用Web服务。 生成Web服务客户端的步骤如下: 1. **获取WSDL文件**:Web服务通常会公开一个WSDL文件...
- 在Spring配置文件中,定义一个`jaxws:client` bean,指定服务地址、服务接口和代理类,配置连接超时、重试策略等参数。 3. **XML请求与响应处理** 在Spring+CXF的环境中,XML请求通常是通过Java对象转换得到的...
- 可以通过调整CXF客户端的配置,例如设置连接超时、重试策略等,来优化性能和稳定性。 总之,使用Apache CXF,Java开发者可以方便地调用C#编写的Web服务,实现跨语言的通信。这个过程涉及到了WSDL解析、Java代理...
标题中的“webservice cfx客户端配置所需的jar包”指的是一组必要的库文件,这些文件对于创建和运行CXF Web服务客户端至关重要。CXF客户端允许程序与通过SOAP或RESTful协议暴露的Web服务进行交互。这些jar包包含了...
在 `web.xml` 文件中,你需要配置 CXF 的 Servlet,以便服务器能够识别并处理 CXF 请求。这里定义了一个名为 `cxf` 的 Servlet,用于启动 CXF 终端点,并将 `/services/*` 作为 CXF 的 URL 模式,这意味着所有以 `/...
在CXF中,`org.apache.cxf.endpoint.Client`类是客户端API的核心,它负责管理服务的调用,包括创建和配置客户端,执行请求,处理响应等。 `org.apache.cxf.endpoint.Client`类位于CXF的`cxf-api.jar`中,这是CXF...
在.NET开发环境中,WebService远程调试是一项重要...如果你需要在其他编程语言如Python、Java或使用特定库如CXF、Suds等调用或实现WebService,也可以参考相关的技术文档和示例代码,以了解如何在不同环境中进行操作。
在Java编程中,调用Web服务接口是一种常见的任务,尤其是当需要实现跨平台...在实际开发中,可能还需要处理认证、超时和其他网络相关的问题。理解并熟练掌握这些步骤,对于构建可扩展、可维护的分布式系统至关重要。
3. **实例化客户端代理**:在Java代码中,我们需要创建代理类的实例,并可能设置一些配置,比如连接超时、HTTP头等。 4. **调用服务**:通过代理对象,我们就可以调用WebService的方法,传入参数并获取返回值。例如...
- 可以通过Maven或者手动添加依赖的方式引入WebService相关的库文件,例如Apache CXF、Apache Axis2等。 3. **编写WebService接口和服务实现类**: - 创建一个Java接口,定义所需的方法。 - 实现该接口,编写...
3. 配置CXF客户端:在Spring的配置文件中,通过`<jaxws:client>`标签配置CXF客户端。这里可以指定服务地址、服务接口、以及任何其他必要的属性,如服务端点地址、QName、缓存策略等。 4. 使用Spring的bean注入:...
在实际开发中,你可能还需要处理异常、设置连接超时、配置SSL等细节。同时,对于大型项目,可能会使用Spring等框架来更优雅地管理Web Service客户端。 总的来说,Java调用Web Service服务是一个相对简单的过程,...
此外,可以通过调整Jetty服务器的配置来优化性能,例如增加线程池大小、设置超时时间等。 在提供的压缩包`cxfdemo`中,可能包含了实现上述步骤的示例代码,你可以参考这些代码来快速理解和实践Apache CXF创建独立...
3. "java 调用webservice的各种方法总结 - 比较详细且简单的.mht":这个文件应该汇总了多种Java调用Web服务的方法,比如使用JAX-WS、Apache CXF或Axis2等库,可能包括代码示例和优缺点分析。 4. "java调用...