http://www.iteye.com/topic/305642
先建一个客户端拦截器
package cxf; import java.util.List; import javax.xml.namespace.QName; import org.apache.cxf.binding.soap.SoapHeader; import org.apache.cxf.binding.soap.SoapMessage; import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor; import org.apache.cxf.headers.Header; import org.apache.cxf.helpers.DOMUtils; import org.apache.cxf.interceptor.Fault; import org.apache.cxf.phase.Phase; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * * @Title:在发送消息前,封装Soap Header 信息 * * @Description: * * @Copyright: * * @author zz * @version 1.00.000 * */ public class AddSoapHeader extends AbstractSoapInterceptor { private static String nameURI="http://localhost:8080/sayHello"; public AddSoapHeader(){ super(Phase.WRITE); } public void handleMessage(SoapMessage message) throws Fault { String username="名字"; String password="密码"; QName qname=new QName("RequestSOAPHeader"); Document doc=DOMUtils.createDocument(); //自定义节点 Element spId=doc.createElement("tns:username"); spId.setTextContent(username); //自定义节点 Element spPass=doc.createElement("tns:password"); spPass.setTextContent(password); Element root=doc.createElementNS(nameURI, "tns:RequestSOAPHeader"); root.appendChild(spId); root.appendChild(spPass); SoapHeader head=new SoapHeader(qname,root); List<Header> headers=message.getHeaders(); headers.add(head); } }
再建一个客户端拦截器
package cxf; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPHeader; import javax.xml.soap.SOAPMessage; import org.apache.cxf.binding.soap.SoapMessage; import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor; import org.apache.cxf.interceptor.Fault; import org.apache.cxf.phase.AbstractPhaseInterceptor; import org.apache.cxf.phase.Phase; import org.w3c.dom.NodeList; public class ReadSoapHeader extends AbstractPhaseInterceptor<SoapMessage> { private SAAJInInterceptor saa = new SAAJInInterceptor(); public ReadSoapHeader() { super(Phase.PRE_PROTOCOL); getAfter().add(SAAJInInterceptor.class.getName()); } public void handleMessage(SoapMessage message) throws Fault { SOAPMessage mess = message.getContent(SOAPMessage.class); if (mess == null) { saa.handleMessage(message); mess = message.getContent(SOAPMessage.class); } SOAPHeader head = null; try { head = mess.getSOAPHeader(); } catch (SOAPException e) { e.printStackTrace(); } if (head == null) { return; } try { //读取自定义的节点 NodeList nodes = head.getElementsByTagName("tns:username"); NodeList nodepass = head.getElementsByTagName("tns:password"); //获取节点值,简单认证 if (nodes.item(0).getTextContent().equals("名字")) { if (nodepass.item(0).getTextContent().equals("密码")) { // System.out.println("认证成功"); System.out.println("username: "+nodes.item(0).getTextContent()); System.out.println("password: "+nodepass.item(0).getTextContent()); } } else { SOAPException soapExc = new SOAPException("认证错误"); throw new Fault(soapExc); } } catch (Exception e) { SOAPException soapExc = new SOAPException("认证错误"); throw new Fault(soapExc); } } }
客户端代码:
package cxf; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; public class CXFClient { public static void main(String[] args) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setAddress("http://localhost:8080/sayHello"); factory.setServiceClass(SayHello.class); factory.getOutInterceptors().add(new AddSoapHeader()); SayHello sayHello = (SayHello)factory.create(); System.out.println(sayHello.sayHello("哇哈哈")); } }
服务器代码:
package cxf; import org.apache.cxf.endpoint.Server; import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; public class CXFServer { public static void main(String[] args) { JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); factory.setAddress("http://localhost:8080/sayHello"); factory.setServiceClass(SayHelloImpl.class); factory.getInInterceptors().add(new LoggingInInterceptor()); factory.getInInterceptors().add(new ReadSoapHeader()); Server server = factory.create(); server.start(); } }
OK
相关推荐
WebService CXF学习——入门篇 1.CXF由来 2.HelloWorld 3.WSDL描述 WebService CXF学习——进阶篇 1.SOAP讲解 2.JAX-WS讲解 3.对象传递 WebService CXF学习——高级篇(一)(二) 1.整合Spring框架 2.CXF...
实战Web+Service+with+CXF webservice快速入门 webservice快速入门
【CXF入门 -- 第一个简单webService】 Apache CXF 是一款强大的开源服务框架,它用于构建和开发服务,包括Web服务。本篇文章将带你入门CXF,通过创建一个简单的Web服务来理解其基本概念和工作流程。 1. **CXF简介*...
**WebService CXF 学习——入门篇** **一、WebService CXF 由来与目标** Apache CXF 是一个流行的开源框架,它源自 ObjectWeb Celtix 和 CodeHaus XFire 的合并,这两个项目分别由 IONA 公司和业界知名SOAP堆栈...
CXF入门教程(5)--webService异步调用模式文章配套代码,文中涉及的异步调用客户端的代码放在com.neareast.test.cxf.asyClient包下。原文地址:http://blog.csdn.net/neareast/article/details/7726503
第一天: 什么是webservice? 从案例(便民查询网站)分析如何实现? 使用socket实现。... CXF入门程序 Spring+cxf整合(重点) CXF发布rest的webservice。(重点) 综合案例: 实现便民查询网站
【WebService CXF详解与入门】 WebService是一种允许不同系统之间进行通信和交互的标准协议,它基于HTTP协议,使得应用程序可以无视具体实现细节地调用互联网上的服务。这种技术使得分布式应用程序的发展成为可能,...
CXF入门步骤 #### 2.1 创建项目 首先,我们需要一个Maven项目,确保`pom.xml`中包含了CXF的依赖: ```xml <groupId>org.apache.cxf <artifactId>cxf-rt-frontend-jaxws <version>3.3.3 <groupId>org....
CXF入门** 对于初学者,了解CXF的基本概念是至关重要的。CXF基于JAX-WS(Java API for XML Web Services)标准,提供了一套工具和服务,用于创建服务端和客户端的应用程序。CXF的核心组件包括: - **服务接口和...
【标题】:“CXF入门(Hello World)” 【描述】:这篇文章主要介绍如何使用Apache CXF框架进行Web服务开发,通过一个简单的“Hello World”示例来帮助初学者理解CXF的基本用法。 Apache CXF是一个开源的Java框架...
Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且...
这个"CXF入门简单实例(spring整合)"的压缩包文件提供了使用Spring框架与CXF集成的基础教程。让我们深入了解一下CXF和Spring的整合以及如何通过这个实例来创建一个简单的Web服务。 首先,CXF支持多种协议,如SOAP、...
CXF入门教程(4) -- webService异步调用模式文章配套代码,文中涉及的异步调用客户端的代码放在com.neareast.test.cxf.asyClient包下。原文地址:http://blog.csdn.net/neareast/article/details/7726503
WebService入门精选视频教程day3详细解析 在信息技术领域,WebService是一种基于开放标准的,使得不同系统之间能够进行数据交换和功能调用的技术。它通过XML(Extensible Markup Language)、SOAP(Simple Object ...
【CXF入门例子(安全认证)】 Apache CXF 是一个开源的 Java 框架,主要用于构建和开发服务导向架构(SOA)和 RESTful Web 服务。它提供了丰富的功能,包括SOAP、REST、WS-* 标准支持、数据绑定、JAX-RS 和 JAX-WS ...
### CXF入门实例详解:构建Web服务 在深入探讨如何使用Apache CXF框架构建Web服务之前,我们首先简要了解一下CXF的基本概念及其在Web服务领域的重要地位。 #### Apache CXF简介 Apache CXF(Community eXtreme ...
本资源的"Java的webservice入门"视频教程很可能涵盖了以下内容: - Web Service的基本概念和工作原理 - 如何创建和发布一个简单的SOAP或RESTful Web Service - 使用JAX-WS或JAX-RS编写服务端代码 - 客户端如何调用...
作为初学者,了解并掌握CXF Webservice的使用是进入Web服务开发的重要一步。CXF允许开发者使用Java编程语言来实现SOAP(Simple Object Access Protocol)和RESTful(Representational State Transfer)服务,提供了...
在本入门例子中,我们将使用CXF来发布一个RESTful WebService,以管理房间和居住在房间内的人物。 1. **POJO对象定义**: 在RESTful WebService中,数据通常以Java对象(POJO)的形式进行处理。这里的`Person`和`...
【CXF入门使用代码展示】 Apache CXF是一个开源的Java框架,主要用于构建和开发Web服务。它提供了多种方式来创建和消费Web服务,包括基于Java API for RESTful Web Services (JAX-RS) 和 Java API for XML Web ...