- 浏览: 1413 次
- 性别:
- 来自: 广西
文章分类
最新评论
服务器端验证代码:
Spring业务验证:
applicationContext-xfire.xml
applicationContext-demo-xfire.xml
客户端验证代码:
applicationContext-demo-spring.xml
package com.shengshu.demo.xfire.authentication; import org.apache.log4j.Logger; import org.codehaus.xfire.MessageContext; import org.codehaus.xfire.exchange.InMessage; import org.codehaus.xfire.fault.XFireFault; import org.codehaus.xfire.handler.AbstractHandler; import org.jdom.Namespace; import org.jdom.Element; import com.shengshu.demo.xfire.bean.AuthenticationManagerService; /** * * Jul 4, 2009 * * @author PangShuqiang * @blog http://pangshuqiang.blog.163.com/ * @Email pangshuqiang@163.com (or) pangsirsky@163.com * @QQ 127015919 (or) 285204808 * @version 1.0 * */ public class AuthenticationHandler extends AbstractHandler { private static final Logger log = Logger .getLogger(AuthenticationHandler.class); private AuthenticationManagerService authenticationManagerService; protected static String namespaceValue = ""; protected final static String NAMESPACE = "WebserviceN"; protected final static String _HEADERS = "WebserviceH"; protected final static String USERNAME = "WebserviceU"; protected final static String PASSWORD = "WebserviceP"; public AuthenticationManagerService getAuthenticationManagerService() { return authenticationManagerService; } public void setAuthenticationManagerService( AuthenticationManagerService authenticationManagerService) { this.authenticationManagerService = authenticationManagerService; } public void setNamespaceValue(String arg) { namespaceValue = arg; } public void invoke(MessageContext context) throws Exception { log.info("#AuthenticationHandler is invoked"); InMessage message = context.getInMessage(); final Namespace TOKEN_NS = Namespace.getNamespace(NAMESPACE, namespaceValue); if (message.getHeader() == null) { throw new XFireFault("GetRelation Service Should be Authenticated", XFireFault.SENDER); } Element token = message.getHeader().getChild(_HEADERS, TOKEN_NS); if (token == null) { throw new XFireFault("Request must include authentication token.", XFireFault.SENDER); } String username = token.getChild(USERNAME, TOKEN_NS).getValue(); String password = token.getChild(PASSWORD, TOKEN_NS).getValue(); System.out.println("username=" + username); System.out.println("password=" + password); if (username == null || password == null) throw new XFireFault("Supplied Username and Password Please", XFireFault.SENDER); /** * * Spring 业务验证 * */ if (!authenticationManagerService.authenticate(username, password)) throw new XFireFault("Authentication Fail! Check username/password", XFireFault.SENDER); } }
Spring业务验证:
package com.shengshu.demo.xfire.bean; /** * * Jul 4, 2009 * * @author PangShuqiang * @blog http://pangshuqiang.blog.163.com/ * @Email pangshuqiang@163.com (or) pangsirsky@163.com * @QQ 127015919 (or) 285204808 * @version 1.0 * */ public class AuthenticationManagerService { private String username = ""; private String password = ""; public void setPassword(String password) { this.password = password; } public void setUsername(String username) { this.username = username; } /** * * @param checkUsername * @param chekcPassword * @return */ public boolean authenticate(String checkUsername, String chekcPassword) { if(checkUsername == null || chekcPassword == null) return false; if(username == null || password == null) return false; if (username.equals(checkUsername) && password.equals(chekcPassword)) return true; return false; } }
applicationContext-xfire.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- 引入XFire预配置信息 --> <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" /> <!-- 用户身份验证实例 --> <bean id="authenticationManagerService" class="com.shengshu.demo.xfire.bean.AuthenticationManagerService"> <property name="username"> <value>庞树强</value> </property> <property name="password"> <value>南宁微庞信息技术有限公司</value> </property> </bean> <!-- 使用XFire验证 --> <bean id="authenticationHandler" class="com.shengshu.demo.xfire.authentication.AuthenticationHandler"> <property name="authenticationManagerService"> <ref bean="authenticationManagerService" /> </property> <property name="namespaceValue"> <value>http://service.webservice.plugins.flourishtree</value> </property> </bean> <!-- 使用XFire导出器 --> <bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true"> <!-- 引用xfire.xml中定义的工厂 --> <property name="serviceFactory" ref="xfire.serviceFactory" /> <!-- 引用xfire.xml中的xfire实例 --> <property name="xfire" ref="xfire" /> </bean> <bean id="baseWebServiceMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" scope="prototype" lazy-init="false" abstract="true"> </bean> </beans>
applicationContext-demo-xfire.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- 定义所有访问 WEB 服务的 url --> <bean parent="baseWebServiceMapping"> <property name="urlMap"> <map> <entry key="/demoService"> <ref bean="demo"/> </entry> <entry key="/demoServiceMF"> <ref bean="demoMF"/> </entry> <entry key="/demoCommonService"> <ref bean="demoCommon"/> </entry> </map> </property> </bean> <!-- Declare a parent bean with all properties common to both services --> <bean id="demo" parent="baseWebService"> <!-- 业务服务bean --> <property name="serviceBean"> <ref bean="demoImpl"/> </property> <!-- 业务服务bean的窄接口类 --> <property name="serviceClass"> <value>com.shengshu.demo.xfire.service.IDemo</value> </property> <!-- 需要验证 --> [b]<property name="inHandlers"> <list> <ref bean="authenticationHandler" /> </list> </property>[/b] </bean> <!-- 不需要验证 --> <bean id="demoMF" parent="baseWebService"> <!-- 业务服务bean --> <property name="serviceBean"> <ref bean="demoImpl"/> </property> <!-- 业务服务bean的窄接口类 --> <property name="serviceClass"> <value>com.shengshu.demo.xfire.service.IDemoMF</value> </property> </bean> <!-- 字符串和整数 --> <bean id="demoCommon" parent="baseWebService"> <!-- 业务服务bean --> <property name="serviceBean"> <ref bean="demoCommonImpl"/> </property> <!-- 业务服务bean的窄接口类 --> <property name="serviceClass"> <value>com.shengshu.demo.xfire.service.IDemoCommon</value> </property> </bean> </beans>
客户端验证代码:
package com.shengshu.demo.xfire.authentication; import org.apache.log4j.Logger; import org.codehaus.xfire.MessageContext; import org.codehaus.xfire.handler.AbstractHandler; import org.jdom.Element; import org.jdom.Namespace; /** * * Jul 4, 2009 * * @author PangShuqiang * @blog http://pangshuqiang.blog.163.com/ * @Email pangshuqiang@163.com (or) pangsirsky@163.com * @QQ 127015919 (or) 285204808 * @version 1.0 * */ public class ClientAuthHandler extends AbstractHandler { private static final Logger log = Logger.getLogger(ClientAuthHandler.class); //客户端自己配置用户名密码或者更安全的KeyStore方式 private String username = ""; private String password = ""; protected static String namespaceValue = ""; protected final static String _HEADER = "header"; protected final static String NAMESPACE = "WebserviceN"; protected final static String _HEADERS = "WebserviceH"; protected final static String USERNAME = "WebserviceU"; protected final static String PASSWORD = "WebserviceP"; public ClientAuthHandler() { } public ClientAuthHandler(String username, String password) { this.username = username; this.password = password; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } public void setNamespaceValue(String arg) { namespaceValue = arg; } public void invoke(MessageContext context) throws Exception { /******************************************* * Soap Header方式 * 从Soap Header中获取用户名密码 *******************************************/ final Namespace ns = Namespace.getNamespace(NAMESPACE, namespaceValue); Element el = new Element(_HEADER, ns); Element auth = new Element(_HEADERS, ns); Element username_el = new Element(USERNAME, ns); username_el.addContent(username); Element password_el = new Element(PASSWORD, ns); password_el.addContent(password); auth.addContent(username_el); auth.addContent(password_el); el.addContent(auth); context.getCurrentMessage().setHeader(el); log.info("ClientAuthHandler done!"); } }
applicationContext-demo-spring.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- 需要验证 --> <bean id="demoService" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean"> <property name="serviceClass"> <value>com.shengshu.demo.xfire.service.IDemo</value> </property> <property name="wsdlDocumentUrl"> <value>http://192.168.1.2:8080/x/demoService?WSDL</value> </property> [b]<property name="outHandlers"> <ref bean="clientAuthHandler" /> </property>[/b] </bean> <!-- 不需要验证 --> <bean id="demoServiceMF" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean"> <property name="serviceClass"> <value>com.shengshu.demo.xfire.service.IDemo</value> </property> <property name="wsdlDocumentUrl"> <value>http://192.168.1.2:8080/x/demoServiceMF?WSDL</value> </property> </bean> </beans>
相关推荐
本文将详细介绍如何使用XFire根据WSDL文件生成客户端代码,以便快速地与Web服务进行交互。 首先,我们需要了解WSDL文件的结构。一个WSDL文件通常包含以下关键元素: 1. **服务(Service)**:定义服务的位置,即...
这个压缩包文件包含的是XFire的源代码示例,这对于理解其工作原理、学习如何开发类似系统或者进行二次开发非常有帮助。让我们深入探讨一下XFire的核心概念、功能以及如何通过源代码学习。 1. **核心概念**: - **...
在提供的压缩包文件"xfire+spring"中,可能包含了相关的示例代码、配置文件或者教程文档,帮助开发者理解并实践这一整合过程。通过学习这些资源,你可以深入理解如何将这两个强大的工具结合起来,构建出既高效又安全...
本篇将深入探讨XFire Web服务的调用代码及其相关知识点。 一、Web服务基础 Web服务基于开放标准,如SOAP(Simple Object Access Protocol)、WSDL(Web Services Description Language)和UDDI(Universal ...
5. 实践编写客户端和服务端代码,进行身份验证测试,确保通信安全。 通过以上知识的学习和实践,开发者能够有效地在Java环境下利用XFire和JAX实现WebService的身份验证,从而保护服务的安全,防止未授权访问。同时...
Xfire客户端代码是实现与Xfire服务器通信的代码库,它可能包含了多种语言的实现,如Java、C#或Python等。这些代码通常会包含以下关键组件: 1. **服务代理类**:这是客户端与Web服务交互的核心部分,它封装了服务的...
本文将详细介绍如何在Spring框架中集成XFire并实现基于WS-Security的安全策略,包括验证、签名和加密。首先,我们需要创建一个Web工程`xfireDemo`,并添加必要的依赖库。这些库包括Spring的核心模块,AOP支持,日志...
总结,XFire客户端生成是Java开发Web服务客户端的一种高效方式,通过自动化的代码生成,开发者可以快速地接入并调用Web服务,大大减少了手动编写客户端代码的工作量。在实际开发中,结合Spring等框架,可以构建出...
4. **自动代码生成**:xfire提供了代码生成工具,可以自动生成服务接口和客户端代码,提高了开发效率。 二、xfire在数据同步中的作用 1. **数据交换接口**:xfire可以被用来定义和实现数据同步的Web服务接口,使得...
在“WebService之XFire开发文档和代码”压缩包中,包含了详细的开发文档,帮助开发者了解如何使用XFire创建、部署和测试WebService。同时,还提供了一些代码示例,可以帮助开发者快速上手实践。通过学习这些文档和...
1. **简洁性**:XFire的配置非常简单,不需要复杂的部署描述符。 2. **灵活性**:支持多种绑定方式,包括RPC/encoded、RPC/literal和Document/literal。 3. **性能**:XFire通过优化XML解析和序列化过程来提高性能。...
xfire1.2.6 源代码 源文件 源程序。供调试、研究用。
Xfire API 是一款专为游戏社区设计的接口,它允许开发者构建与Xfire服务交互的应用程序,从而增强玩家的游戏体验并提供社交功能。Xfire API 主要围绕Web服务概念,这意味着它通过网络提供一系列功能,使得第三方...
xfire是一个早期流行的开源Web服务框架,主要用于构建SOAP(简单对象访问协议)和RESTful(Representational State Transfer)服务。这个框架使得Java开发者能够轻松地创建、部署和消费Web服务。xfire依赖于一系列的...
将这两者结合可以利用 Spring 的强大功能来管理和配置 XFire,同时保持代码的简洁和模块化。 ### Spring 集成 XFire 的优势 1. **依赖注入(Dependency Injection)**:Spring 的核心特性之一,通过依赖注入可以...
《xfire创建服务端客户端源码详解》 Xfire,作为一个历史悠久的开源项目,曾经在游戏服务器通信领域占据着重要地位。它提供了丰富的API和工具,使得开发者能够轻松地构建服务端与客户端之间的通信框架。本文将深入...
xfire是一款历史悠久的在线游戏平台,它在2004年由GameSpy Industries开发并发布,主要功能是为玩家提供即时通讯、好友列表、游戏内聊天和游戏统计等功能,旨在增强玩家的游戏体验。xfire 1.26是该平台的一个特定...
它不仅仅是一个简单的聊天工具,而是一个集成了语音聊天和文字聊天的平台。在1.2.6版本中,用户可以创建和加入多个聊天室,进行多人会话。此外,Xfire还支持一对一的私人对话,确保了用户之间的隐私交流。同时,语音...
在Eclipse中,可以使用Xfire插件或手动编写代码来实现这个过程。 3. **配置HTTPS连接**:为了使用HTTPS,需要配置Xfire客户端以支持SSL。这通常涉及到设置SSLSocketFactory,指定信任的证书,以及处理可能出现的...
综上所述,"webservice Soap和XFire2种方式代码列子"的压缩包可能包含使用SOAP协议和XFire框架创建Web服务的示例代码。通过学习这些代码,开发者可以更好地理解如何在Java环境中构建和消费SOAP服务,以及XFire在其中...