一般webServices发布后需要测试一下,是否可行通,在此我把自己所测试的 调用 webService 的简单范例贴出来供新手参考。如有不足,请多指教。
1:需要借助的包: wss4j-1.5.4.jar cxf-bundle-2.1.3.jar
2:
package con.transnal.ucenter.client;
import java.lang.reflect.Proxy;
import java.util.HashMap;
import java.util.Map;
//import net.sxinfo.ucenter.services.UCenterService;
//此处就为你发布的 webService的 源代码,此处我把它打成 jar 包了.
//一般在开发中,你可以建一个webService Clietn 来引用 webService的wsdl
import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;
import org.apache.cxf.configuration.jsse.TLSClientParameters;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.handler.WSHandlerConstants;
import org.junit.Test;
/**
* 客户端程序
*
* @author RenWeigang
*/
public class UCenterServiceClientTest {
@Test
public void testCreateUser() throws Exception {
UCenterService ucenterService = getUCenterService();
String result = ucenterService.createUser("renweigang", "123456789", "123456@test.com");
System.out.println(result);
}
private UCenterService getUCenterService() {
return getNotSSLUCenterService();
}
private UCenterService getNotSSLUCenterService()
{
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(UCenterService.class);
//此处的地址为对方发布的 webService的地址。
factory.setAddress("http://uc.cun365.com/ucenter/ucenter/services/UCenterService");
System.setProperty("org.apache.cxf.bus.factory", "org.apache.cxf.bus.CXFBusFactory");
UCenterService ucenterService = (UCenterService) factory.create();
ClientProxy proxy = (ClientProxy) Proxy.getInvocationHandler(ucenterService);
Client client = proxy.getClient();
// ③添加流模型和DOM模型转换的Handler
//client.getOutInterceptors().add(new SAAJOutInterceptor());
Map<String,Object> properties = new HashMap<String,Object>();
// ④-1动作
properties.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN + " " + WSHandlerConstants.TIMESTAMP);
// PW_TEXT 明文 ,PW_DIGEST 摘要
// PasswordDigest是通过非保密渠道发送用户名和口令的最佳方法。即使使用XML加密对<wsse:Password>元素进行加密,PasswordText依然可以使用
properties.put(WSHandlerConstants.USER, "services-test");// ④-3指定用户
properties.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
properties.put(WSHandlerConstants.PW_CALLBACK_CLASS, UtPasswordHandler.class.getName());
WSS4JOutInterceptor wss4j = new WSS4JOutInterceptor(properties);
client.getOutInterceptors().add(wss4j);
return ucenterService;
}
}
package net.sxinfo.ucenter.client;
import java.util.HashMap;
import java.util.Map;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import org.apache.ws.security.WSPasswordCallback;
public class UtPasswordHandler implements CallbackHandler {
// ①客户端用户模拟数据库
private static final Map<String,String> pwMockDB = new HashMap<String,String>();
//一般真正开发中,对方的webService指定用户,此处的 services-//test 为用户名,test 为密码。
static{
pwMockDB.put("services-test", "test");
}
public void handle(Callback[] callbacks) {
WSPasswordCallback callback = (WSPasswordCallback) callbacks[0];
String id = callback.getIdentifer();
// ②获取用户对应的密码
callback.setPassword(pwMockDB.get(id));
}
}
分享到:
相关推荐
- 对于客户端调用,可以使用CXF的`JaxWsProxyFactoryBean`创建服务代理对象,然后调用其方法进行服务调用。 4. **项目结构** - `.classpath`和`.project`是Eclipse IDE的项目配置文件。 - `pom.xml`是Maven的...
这个"CXF动态webservice客户端demo"是为了演示如何使用CXF库创建一个动态调用Web服务接口的客户端应用程序。 首先,我们需要了解Web服务的基本概念。Web服务基于SOAP(Simple Object Access Protocol)协议,通过...
2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...
cxf开发webservice客户端和服务器端 cxf(Apache CXF)是一款开源的WebService框架,用于开发webservice客户端和服务器端。它提供了许多有用的功能,如自动生成服务桩、客户调用桩和WSDL文档等,使得开发webservice...
在IT行业中,CXF是一个广泛使用的开源框架,用于开发和实现Web服务,无论是SOAP(简单对象访问协议)还是RESTful风格的服务。本篇文章将详细探讨如何利用CXF框架开发一个Web服务客户端,以及如何进行测试。 一、CXF...
在标题和描述中提到的“cxf生成webservice客户端”是指利用CXF的工具从WSDL文件自动生成Java客户端代码,以便于调用Web服务。 生成Web服务客户端的步骤如下: 1. **获取WSDL文件**:Web服务通常会公开一个WSDL文件...
Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...
用CXF作为客户端调用webService的demo:本人亲测可用,eclipse工程项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。
使用cxf wsdl2java生成webservice客户端命令
CXF可以基于WSDL自动生成Java客户端代码,这使得调用服务变得简单。 2. **配置服务客户端**:通过CXF的客户端API,你可以设置服务地址、认证信息等参数。这通常在Spring配置文件或代码中完成。 3. **调用服务**:...
总结,使用CXF开发WebService客户端是Java开发者常用的一种方式,它简化了客户端的构建过程,提供了丰富的功能和良好的扩展性。通过理解WSDL、生成客户端代码、配置服务地址以及利用CXF的高级特性,可以高效地完成与...
本文档将详细介绍如何使用 Apache CXF 2.2.6 和 Spring WS 1.5.8 构建一个简单的 WebService 客户端。通过本教程,您将能够掌握从创建工程到实际调用 Web 服务的一系列步骤。 #### 二、开发环境搭建 1. **Apache ...
在使用CXF框架进行Web服务客户端调用时,需要依赖一系列的JAR包来确保功能的正常运行。这些JAR包包含了CXF框架的核心组件、XML处理库、数据序列化工具、缓存机制、消息队列通信以及Spring框架的支持。 1. `cxf-core...
在IT行业中,Spring Boot是一个非常流行的微服务框架,它简化了Spring应用的初始化和配置。而Apache CXF则是一个强大的...通过这种方式,你可以构建安全、可靠的Web服务,并在Spring Boot环境中轻松地进行客户端调用。
总结来说,使用Apache CXF开发Webservice客户端涉及从获取WSDL、生成客户端代码、配置服务代理到实际调用服务的多个步骤。理解这些步骤以及CXF的特性,将有助于你高效地创建和维护Web服务客户端。
总之,使用CXF客户端调用Axis服务端涉及多个步骤,包括生成客户端代码、配置客户端、创建服务代理以及进行实际调用。理解这些步骤并正确实现它们是成功通信的关键。在实际开发过程中,可能会遇到各种问题,需要耐心...
在Java开发中,Apache CXF是一个广泛使用的开源框架,它提供了创建和消费Web服务的能力。...对于客户端调用,CXF允许开发者通过简单API直接与Web服务交互,无需关心底层通信细节。 在标题和描述中提到的"cx
在这个“cxf的webservice的客户端代码”主题中,我们将深入探讨如何使用CXF框架来构建一个能够与Web服务交互的客户端。 首先,创建CXF Web服务客户端的核心在于理解服务代理的生成。CXF提供了WSDL2Java工具,可以从...
在IT行业中,Web Service是一种基于网络的、松散耦合的软件组件交互方式,它允许不同的应用...使用CXF开发WebService客户端.wmv"会更深入地展示这一过程,提供实际操作的步骤和示例,帮助你更好地理解和掌握这项技术。