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)); } }
以上为全部代码,代码也一并上传了。
相关推荐
《Xfire全方位解析:1.2.6版本的全面探讨》 Xfire,这款曾经在游戏社区中广受欢迎的即时通讯软件,以其独特的游戏整合功能和社交特性,为玩家提供了便捷的游戏内通信和社区交流平台。本文将深入探讨Xfire 1.2.6这一...
在本案例中,"Xfire的client.zip"是一个包含了Xfire客户端代码的压缩包,主要用于调用Web服务。 Xfire客户端代码是实现与Xfire服务器通信的代码库,它可能包含了多种语言的实现,如Java、C#或Python等。这些代码...
xfire是一个早期流行的开源Web服务框架,主要用于构建SOAP(简单对象访问协议)和RESTful(Representational State Transfer)服务。这个框架使得Java开发者能够轻松地创建、部署和消费Web服务。xfire依赖于一系列的...
【XFire创建的WebService】是基于Java平台的开源框架,用于构建和消费Web服务。它在Web服务领域提供了一个轻量级、高性能的选择,尤其适合快速开发。在本例中,我们将探讨如何使用XFire来创建一个简单的WebService...
【整合XFire与Spring进行Web Service开发】 XFire是一个基于Java的SOAP Web Service框架,而Spring是一个广泛应用的轻量级框架,它提供了依赖注入、面向切面编程等特性。将两者集成可以方便地构建和消费Web Service...
XFire,全称为XML Fire,是一款历史悠久的开源Java框架,主要用作服务导向架构(SOA)中的Web服务实现工具。它允许开发者快速构建、部署和管理基于HTTP的服务,支持SOAP和RESTful通信协议。在Java开发中,XFire通过...
【xfire myeclipse10包】是一款专为MyEclipse10集成开发环境设计的XFire插件安装包。XFire是一款强大的Java Web服务框架,它提供了对Web服务的全面支持,包括创建、部署和消费Web服务的能力。在MyEclipse这样的集成...
"Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...
在IT行业中,集成框架是开发复杂应用程序的关键,Spring和XFire就是两个重要的工具。Spring作为一个强大的Java企业级应用开发框架,提供了丰富的功能,包括依赖注入、面向切面编程(AOP)以及各种服务管理。而XFire...
在Java开发中,有时我们可能需要整合不同的框架或者库,比如Apache CXF和XFire,这两个都是用于构建Web服务的框架。然而,由于它们都包含了处理XML Schema(XmlSchema)的相关组件,可能会出现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框架来实现安全的Web服务。XFire是一个用于创建、消费和部署SOAP Web服务的Java库,而Spring框架则是一个广泛使用的全功能应用开发框架,提供了包括安全性...
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是一款曾经流行的开源Java框架,用于构建和消费Web服务。在本文中,我们将深入探讨Xfire调用Web服务时遇到的参数传递问题以及解决策略。 首先,让我们了解Web服务的基本概念。Web服务基于SOAP(Simple Object ...
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(现已被Apache CXF项目合并)是一个Java框架,它支持SOAP(Simple Object Access Protocol)和WS-*规范,帮助开发者构建和消费Web服务。 本文将详细介绍如何使用XFire根据WSDL文件生成客户端代码,以便快速地...
Spring 和 XFire 的集成是构建基于 SOAP 的 Web 服务的一种高效方法。XFire 是一个 Java 框架,专门用于创建和消费 Web 服务,而 Spring 框架则提供了全面的企业级应用开发支持。将这两者结合可以利用 Spring 的强大...
xfire客户端jar包是用于构建Web服务客户端的一个关键组件,它是Apache CXF项目早期的版本。Apache CXF是一个流行的开源框架,它支持多种Web服务标准,包括SOAP、RESTful API和WS-*规范。xfire-jar包包含了实现这些...
本文将深入探讨使用Eclipse开发Web服务时的xfire插件,以及如何利用它来提升开发效率。 XFire是一款轻量级、高性能的Java Web服务框架,它允许开发者快速创建和部署SOAP Web服务。XFire与Eclipse的整合,通过提供...