`
laodaobazi
  • 浏览: 276925 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

xfire

 
阅读更多

webservice 调用前需要验证头信息的简单实现:

 

xfire服务端目录结构:



 服务端接口代码:

package com.demo.xfire.service;

public interface FriendService {
	String findFriendGroups(String personId);
}

 服务端接口实现代码:

package com.demo.xfire.service.impl;

import com.demo.xfire.service.FriendService;

public class FriendServiceImpl implements FriendService {

	public String  findFriendGroups(String personId) {
		if (!personId.equals("")){
			return personId;
		}
		throw new RuntimeException("Can't find person");
	}

}

 服务端校验头信息的实现类:

package com.demo.xfire.service;

import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.XFireRuntimeException;
import org.jdom.Element;
import org.jdom.Namespace;

public class XfireAuthenticationHandler extends
		org.codehaus.xfire.handler.AbstractHandler {
	private static final String USERNAME = "libiao";
	private static final String PASSWORD = "neusoft";
	private static final String NS = "http://trends.bfsu.edu.cn/friendService";

	public void invoke(MessageContext ctx) throws Exception {
		// Check if header exists

		Element header = ctx.getInMessage().getHeader();
		if (header == null) {
			throw new XFireRuntimeException("Missing SOAP Header");
		}
		// Does it have version tag
		Element name = header.getChild("USERNAME", Namespace.getNamespace(NS));
		Element pass = header.getChild("PASSWORD", Namespace.getNamespace(NS));
		if (name.getValue().equals(USERNAME) && pass.getValue().equals(PASSWORD)) {
			System.out.println("验证通过");
		} else {
			System.out.println("验证未通过");
			throw new XFireRuntimeException("Authentication Failure");
		}
		ctx.setProperty("USERNAME", USERNAME);
		ctx.setProperty("PASSWORD", PASSWORD);
	}
	
}

 服务端创建services.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans>
	<service xmlns="http://xfire.codehaus.org/config/1.0">
		<name>FriendService</name>
		<namespace>http://localhost:8881/dcp/webservice/FriendService
		</namespace>
		<serviceClass>com.demo.xfire.service.FriendService
		</serviceClass>
		<implementationClass>com.demo.xfire.service.impl.FriendServiceImpl
		</implementationClass>
		<inHandlers>
			<handler handlerClass="com.demo.xfire.service.XfireAuthenticationHandler"></handler>
		</inHandlers>
	</service>
</beans>

 修正web.xml文件:

<!--  提供webservice 服务 -->
	<servlet>  
        <servlet-name>xfire</servlet-name>  
        <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>xfire</servlet-name>  
        <url-pattern>/webservice/*</url-pattern>  
    </servlet-mapping> 

 

以上为服务器端代码,下面为客户端代码。

xifire客户端目录结构:



 

客户端接口类:

package com.demo.xfire.client;
public interface FriendService {
	String findFriendGroups(String personId);
}

 客户端调用webservice类:

package com.demo.xfire.client;

import java.lang.reflect.Proxy;

import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxy;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class FriendServieTest {

	public static void main(String[] args) {
		try {
			//方式一
			org.codehaus.xfire.service.Service service = new ObjectServiceFactory().create(FriendService.class);
			FriendService friend = (FriendService) new XFireProxyFactory().create(service, "http://localhost:8881/xfire/webservice/FriendService");
			XFireProxy proxy = (XFireProxy) Proxy.getInvocationHandler(friend);
			Client client = proxy.getClient();
	        client.addOutHandler(new ClientHeaderHandler());
	        String str = friend.findFriendGroups("2011001");
	        System.out.println(str);
	        client.close();
			
	        //方式二
	        ApplicationContext appContext = new ClassPathXmlApplicationContext(new String[]{});
//			org.springframework.core.io.Resource resource = new ClassPathResource("/wsdl.xml");
	        org.springframework.core.io.Resource resource = appContext.getResource("url:http://localhost:8881/xfire/webservice/FriendService?wsdl");
			Client client1 = new Client(resource.getInputStream(), null); //根据WSDL创建客户实例  
			client1.addOutHandler(new ClientHeaderHandler());  
			Object[] objArray = new Object[1];  
			objArray[0] = "123456";  
			//调用特定的Web Service方法  
			Object[] results = client1.invoke("findFriendGroups", objArray); 
			System.out.println(results[0]);
			client1.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}

 在发送请求中添加头信息的类:

package com.demo.xfire.client;

import org.jdom.Element;

public class ClientHeaderHandler extends org.codehaus.xfire.handler.AbstractHandler{

	private static final String USERNAME = "libiao";
	private static final String PASSWORD = "neusoft";
	private static final String NS = "http://trends.bfsu.edu.cn/friendService";

	public void invoke(org.codehaus.xfire.MessageContext ctx) throws Exception {
		Element header = ctx.getOutMessage().getOrCreateHeader();
		header.addContent(new Element("USERNAME", NS).addContent(USERNAME));
		header.addContent(new Element("PASSWORD", NS).addContent(PASSWORD));
	}
	
}

 以上为全部代码,代码也一并上传了。

 

  • 大小: 23.9 KB
  • 大小: 15.3 KB
分享到:
评论

相关推荐

    xfire-all-1.2.6 xfire所需的全部包

    《Xfire全方位解析:1.2.6版本的全面探讨》 Xfire,这款曾经在游戏社区中广受欢迎的即时通讯软件,以其独特的游戏整合功能和社交特性,为玩家提供了便捷的游戏内通信和社区交流平台。本文将深入探讨Xfire 1.2.6这一...

    Xfire的client.zip_Xfire客户端代码_webservice

    在本案例中,"Xfire的client.zip"是一个包含了Xfire客户端代码的压缩包,主要用于调用Web服务。 Xfire客户端代码是实现与Xfire服务器通信的代码库,它可能包含了多种语言的实现,如Java、C#或Python等。这些代码...

    xfire依赖jar包

    xfire是一个早期流行的开源Web服务框架,主要用于构建SOAP(简单对象访问协议)和RESTful(Representational State Transfer)服务。这个框架使得Java开发者能够轻松地创建、部署和消费Web服务。xfire依赖于一系列的...

    XFire创建的WebService

    【XFire创建的WebService】是基于Java平台的开源框架,用于构建和消费Web服务。它在Web服务领域提供了一个轻量级、高性能的选择,尤其适合快速开发。在本例中,我们将探讨如何使用XFire来创建一个简单的WebService...

    整理xfire和spring的集成 web service 面向服务编程 java

    【整合XFire与Spring进行Web Service开发】 XFire是一个基于Java的SOAP Web Service框架,而Spring是一个广泛应用的轻量级框架,它提供了依赖注入、面向切面编程等特性。将两者集成可以方便地构建和消费Web Service...

    xfire所需jar包

    XFire,全称为XML Fire,是一款历史悠久的开源Java框架,主要用作服务导向架构(SOA)中的Web服务实现工具。它允许开发者快速构建、部署和管理基于HTTP的服务,支持SOAP和RESTful通信协议。在Java开发中,XFire通过...

    xfire myeclipse10包

    【xfire myeclipse10包】是一款专为MyEclipse10集成开发环境设计的XFire插件安装包。XFire是一款强大的Java Web服务框架,它提供了对Web服务的全面支持,包括创建、部署和消费Web服务的能力。在MyEclipse这样的集成...

    java使用XFire调用webService接口

    "Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...

    Spring2.0和XFire1.2.6整合案例

    在IT行业中,集成框架是开发复杂应用程序的关键,Spring和XFire就是两个重要的工具。Spring作为一个强大的Java企业级应用开发框架,提供了丰富的功能,包括依赖注入、面向切面编程(AOP)以及各种服务管理。而XFire...

    cxf和xfire的jar包冲突解决

    在Java开发中,有时我们可能需要整合不同的框架或者库,比如Apache CXF和XFire,这两个都是用于构建Web服务的框架。然而,由于它们都包含了处理XML Schema(XmlSchema)的相关组件,可能会出现jar包冲突的问题,导致...

    xfire相关jar包

    进行WebService开发中所用到的xfire所有相关包如:xfire-jsr181-api-1.0-M1.jar、xfire-jaxws-1.2.6.jar、xfire-java5-1.2.6.jar、xfire-core-1.2.6.jar、xfire-annotations-1.2.6.jar、xfire-aegis-1.2.6.jar、...

    xfire+spring+安全认证

    "xfire+spring+安全认证"的主题聚焦于如何利用XFire和Spring框架来实现安全的Web服务。XFire是一个用于创建、消费和部署SOAP Web服务的Java库,而Spring框架则是一个广泛使用的全功能应用开发框架,提供了包括安全性...

    xfire与cxf包冲突解决方案

    1、以下四个类调用了XmlSchema-1.1.jar包 因与cxf包xmlschema-core-*.jar... xfire-all-1.2.6-incomplete.jar 替换 xfire-all-1.2.6.jar 3、XmlSchema-1.1.jar 可以与 xmlschema-core-*.jar 共存避开同路径同名类冲突

    Xfire调用webservice无法传递参数问题

    Xfire是一款曾经流行的开源Java框架,用于构建和消费Web服务。在本文中,我们将深入探讨Xfire调用Web服务时遇到的参数传递问题以及解决策略。 首先,让我们了解Web服务的基本概念。Web服务基于SOAP(Simple Object ...

    xfire与cxf包冲突解决方法

    1、以下四个类调用了XmlSchema-1.1.jar包 因与cxf包xmlschema-core-*.jar... xfire-all-1.2.6-incomplete.jar 替换 xfire-all-1.2.6.jar 3、XmlSchema-1.1.jar 可以与 xmlschema-core-*.jar 共存避开同路径同名类冲突

    xfire根据WSDL生成客户端代码

    XFire(现已被Apache CXF项目合并)是一个Java框架,它支持SOAP(Simple Object Access Protocol)和WS-*规范,帮助开发者构建和消费Web服务。 本文将详细介绍如何使用XFire根据WSDL文件生成客户端代码,以便快速地...

    spring 集成xfire 比较好的一种方式

    Spring 和 XFire 的集成是构建基于 SOAP 的 Web 服务的一种高效方法。XFire 是一个 Java 框架,专门用于创建和消费 Web 服务,而 Spring 框架则提供了全面的企业级应用开发支持。将这两者结合可以利用 Spring 的强大...

    xfire客户端jar包

    xfire客户端jar包是用于构建Web服务客户端的一个关键组件,它是Apache CXF项目早期的版本。Apache CXF是一个流行的开源框架,它支持多种Web服务标准,包括SOAP、RESTful API和WS-*规范。xfire-jar包包含了实现这些...

    eclipse开发webservice的xfire插件

    本文将深入探讨使用Eclipse开发Web服务时的xfire插件,以及如何利用它来提升开发效率。 XFire是一款轻量级、高性能的Java Web服务框架,它允许开发者快速创建和部署SOAP Web服务。XFire与Eclipse的整合,通过提供...

Global site tag (gtag.js) - Google Analytics