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

webservice cxf 入门视频网站

 
阅读更多

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学习文档

    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快速入门

    实战Web+Service+with+CXF webservice快速入门 webservice快速入门

    CXF入门 -- 第一个简单webService

    【CXF入门 -- 第一个简单webService】 Apache CXF 是一款强大的开源服务框架,它用于构建和开发服务,包括Web服务。本篇文章将带你入门CXF,通过创建一个简单的Web服务来理解其基本概念和工作流程。 1. **CXF简介*...

    WebService CXF学习-入门篇.pdf

    **WebService CXF 学习——入门篇** **一、WebService CXF 由来与目标** Apache CXF 是一个流行的开源框架,它源自 ObjectWeb Celtix 和 CodeHaus XFire 的合并,这两个项目分别由 IONA 公司和业界知名SOAP堆栈...

    CXF入门 webService异步调用模式

    CXF入门教程(5)--webService异步调用模式文章配套代码,文中涉及的异步调用客户端的代码放在com.neareast.test.cxf.asyClient包下。原文地址:http://blog.csdn.net/neareast/article/details/7726503

    Webservice笔记含使用cxf和jaxws两种方式开发webservice【源代码+笔记】

    第一天: 什么是webservice? 从案例(便民查询网站)分析如何实现? 使用socket实现。... CXF入门程序 Spring+cxf整合(重点) CXF发布rest的webservice。(重点) 综合案例: 实现便民查询网站

    WebService_CXF范例.

    【WebService CXF详解与入门】 WebService是一种允许不同系统之间进行通信和交互的标准协议,它基于HTTP协议,使得应用程序可以无视具体实现细节地调用互联网上的服务。这种技术使得分布式应用程序的发展成为可能,...

    WebService (一) CXF 入门 HelloWorld

    CXF入门步骤 #### 2.1 创建项目 首先,我们需要一个Maven项目,确保`pom.xml`中包含了CXF的依赖: ```xml &lt;groupId&gt;org.apache.cxf &lt;artifactId&gt;cxf-rt-frontend-jaxws &lt;version&gt;3.3.3 &lt;groupId&gt;org....

    CXF 一个完整的webService(整合客户端和服务端)

    CXF入门** 对于初学者,了解CXF的基本概念是至关重要的。CXF基于JAX-WS(Java API for XML Web Services)标准,提供了一套工具和服务,用于创建服务端和客户端的应用程序。CXF的核心组件包括: - **服务接口和...

    cxf 入门(hello world)

    【标题】:“CXF入门(Hello World)” 【描述】:这篇文章主要介绍如何使用Apache CXF框架进行Web服务开发,通过一个简单的“Hello World”示例来帮助初学者理解CXF的基本用法。 Apache CXF是一个开源的Java框架...

    CXF WEBSERVICE入门,非常详细实用

    Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且...

    CXF入门简单实例(spring整合)

    这个"CXF入门简单实例(spring整合)"的压缩包文件提供了使用Spring框架与CXF集成的基础教程。让我们深入了解一下CXF和Spring的整合以及如何通过这个实例来创建一个简单的Web服务。 首先,CXF支持多种协议,如SOAP、...

    CXF入门教程(4) -- webService异步调用模式

    CXF入门教程(4) -- webService异步调用模式文章配套代码,文中涉及的异步调用客户端的代码放在com.neareast.test.cxf.asyClient包下。原文地址:http://blog.csdn.net/neareast/article/details/7726503

    WebService入门精选视频教程day3(极详细)

    WebService入门精选视频教程day3详细解析 在信息技术领域,WebService是一种基于开放标准的,使得不同系统之间能够进行数据交换和功能调用的技术。它通过XML(Extensible Markup Language)、SOAP(Simple Object ...

    cxf入门例子(安全认证)

    【CXF入门例子(安全认证)】 Apache CXF 是一个开源的 Java 框架,主要用于构建和开发服务导向架构(SOA)和 RESTful Web 服务。它提供了丰富的功能,包括SOAP、REST、WS-* 标准支持、数据绑定、JAX-RS 和 JAX-WS ...

    cxf入门实例(webservice)

    ### CXF入门实例详解:构建Web服务 在深入探讨如何使用Apache CXF框架构建Web服务之前,我们首先简要了解一下CXF的基本概念及其在Web服务领域的重要地位。 #### Apache CXF简介 Apache CXF(Community eXtreme ...

    Java的webservice入门(视频+代码)

    本资源的"Java的webservice入门"视频教程很可能涵盖了以下内容: - Web Service的基本概念和工作原理 - 如何创建和发布一个简单的SOAP或RESTful Web Service - 使用JAX-WS或JAX-RS编写服务端代码 - 客户端如何调用...

    cxf_webservice入门

    作为初学者,了解并掌握CXF Webservice的使用是进入Web服务开发的重要一步。CXF允许开发者使用Java编程语言来实现SOAP(Simple Object Access Protocol)和RESTful(Representational State Transfer)服务,提供了...

    CXF发布restful WebService的入门例子.pdf

    在本入门例子中,我们将使用CXF来发布一个RESTful WebService,以管理房间和居住在房间内的人物。 1. **POJO对象定义**: 在RESTful WebService中,数据通常以Java对象(POJO)的形式进行处理。这里的`Person`和`...

    cxf入门使用代码展示

    【CXF入门使用代码展示】 Apache CXF是一个开源的Java框架,主要用于构建和开发Web服务。它提供了多种方式来创建和消费Web服务,包括基于Java API for RESTful Web Services (JAX-RS) 和 Java API for XML Web ...

Global site tag (gtag.js) - Google Analytics