`
rayln
  • 浏览: 433843 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

简单CXF方式的webService客户端调用范例(转载)

阅读更多
一般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;
	}
}

&nbsp;<pre name="code" class="java">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));

	}
}</pre>
&nbsp;

分享到:
评论

相关推荐

    springboot整合CXF发布webservice和客户端调用

    - 对于客户端调用,可以使用CXF的`JaxWsProxyFactoryBean`创建服务代理对象,然后调用其方法进行服务调用。 4. **项目结构** - `.classpath`和`.project`是Eclipse IDE的项目配置文件。 - `pom.xml`是Maven的...

    CXF动态webservice客户端demo

    这个"CXF动态webservice客户端demo"是为了演示如何使用CXF库创建一个动态调用Web服务接口的客户端应用程序。 首先,我们需要了解Web服务的基本概念。Web服务基于SOAP(Simple Object Access Protocol)协议,通过...

    Java cxf开发webservice,分别有客户端和服务端

    2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...

    cxf开发webservice客户端和服务器端文档

    cxf开发webservice客户端和服务器端 cxf(Apache CXF)是一款开源的WebService框架,用于开发webservice客户端和服务器端。它提供了许多有用的功能,如自动生成服务桩、客户调用桩和WSDL文档等,使得开发webservice...

    cxf 开发webservice客户端

    在IT行业中,CXF是一个广泛使用的开源框架,用于开发和实现Web服务,无论是SOAP(简单对象访问协议)还是RESTful风格的服务。本篇文章将详细探讨如何利用CXF框架开发一个Web服务客户端,以及如何进行测试。 一、CXF...

    cxf生成webservice客户端

    在标题和描述中提到的“cxf生成webservice客户端”是指利用CXF的工具从WSDL文件自动生成Java客户端代码,以便于调用Web服务。 生成Web服务客户端的步骤如下: 1. **获取WSDL文件**:Web服务通常会公开一个WSDL文件...

    Java webservice cxf客户端调用demo和服务端

    Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...

    CXF作为客户端调用webService的demo

    用CXF作为客户端调用webService的demo:本人亲测可用,eclipse工程项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。

    使用cxf wsdl2java生成webservice客户端

    使用cxf wsdl2java生成webservice客户端命令

    使用CXF和camel-cxf调用webservice

    CXF可以基于WSDL自动生成Java客户端代码,这使得调用服务变得简单。 2. **配置服务客户端**:通过CXF的客户端API,你可以设置服务地址、认证信息等参数。这通常在Spring配置文件或代码中完成。 3. **调用服务**:...

    WebService开发客户端 cxf方式

    总结,使用CXF开发WebService客户端是Java开发者常用的一种方式,它简化了客户端的构建过程,提供了丰富的功能和良好的扩展性。通过理解WSDL、生成客户端代码、配置服务地址以及利用CXF的高级特性,可以高效地完成与...

    webservice的cxf框架客户端调用所需jar包

    在使用CXF框架进行Web服务客户端调用时,需要依赖一系列的JAR包来确保功能的正常运行。这些JAR包包含了CXF框架的核心组件、XML处理库、数据序列化工具、缓存机制、消息队列通信以及Spring框架的支持。 1. `cxf-core...

    CXF开发webservice客户端

    本文档将详细介绍如何使用 Apache CXF 2.2.6 和 Spring WS 1.5.8 构建一个简单的 WebService 客户端。通过本教程,您将能够掌握从创建工程到实际调用 Web 服务的一系列步骤。 #### 二、开发环境搭建 1. **Apache ...

    Springboot整合CXF发布Web service和客户端调用(用户和密码验证)

    在IT行业中,Spring Boot是一个非常流行的微服务框架,它简化了Spring应用的初始化和配置。而Apache CXF则是一个强大的...通过这种方式,你可以构建安全、可靠的Web服务,并在Spring Boot环境中轻松地进行客户端调用。

    cxf开发webservice客户端

    总结来说,使用Apache CXF开发Webservice客户端涉及从获取WSDL、生成客户端代码、配置服务代理到实际调用服务的多个步骤。理解这些步骤以及CXF的特性,将有助于你高效地创建和维护Web服务客户端。

    cxf客户端调用axis服务端流程

    总之,使用CXF客户端调用Axis服务端涉及多个步骤,包括生成客户端代码、配置客户端、创建服务代理以及进行实际调用。理解这些步骤并正确实现它们是成功通信的关键。在实际开发过程中,可能会遇到各种问题,需要耐心...

    cxf客户端调用webservice所需jar包

    在Java开发中,Apache CXF是一个广泛使用的开源框架,它提供了创建和消费Web服务的能力。...对于客户端调用,CXF允许开发者通过简单API直接与Web服务交互,无需关心底层通信细节。 在标题和描述中提到的"cx

    cxf的webservice的客户端代码

    在这个“cxf的webservice的客户端代码”主题中,我们将深入探讨如何使用CXF框架来构建一个能够与Web服务交互的客户端。 首先,创建CXF Web服务客户端的核心在于理解服务代理的生成。CXF提供了WSDL2Java工具,可以从...

    03.使用CXF开发WebService客户端

    在IT行业中,Web Service是一种基于网络的、松散耦合的软件组件交互方式,它允许不同的应用...使用CXF开发WebService客户端.wmv"会更深入地展示这一过程,提供实际操作的步骤和示例,帮助你更好地理解和掌握这项技术。

Global site tag (gtag.js) - Google Analytics