`
zhangwei_david
  • 浏览: 474756 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

CXF WebService (一)

 
阅读更多

  CXF是一个开源的WebService框架,首先通过一个简单的示例学习CXF的使用

   @WebService 注解有多个属性,通过对这些属性的赋值去学习各个属性的作用。

     name: 指定服务接口的名称。此属性映射到wsdl:portType元素的属性名称,默认值是实现类的类名。

     targetNamespace 指定服务的命名空间,如果该属性未指定则命名空间来自包名。

    serviceName :值发布的服务名称,次属性映射到wsdl:service元素的名称。默认值是实现类的名称实现类的名称+Service

    portName:指定服务发布点的名称。此属性映射到wsdl:port

    wsdlLocation:指定WSDL协议保存的URI。该属性默认值为服务部署的URI

    endpointInterface: 指定实现类中服务接口的全名。

 

/**
 * CXF 第一个示例
 * @author zhangwei
 * @version $Id: HelloWord.java, v 0.1 2014年9月27日 上午8:28:08 zhangwei Exp $
 */
public interface HelloWord {
    /**
     * 示例方法,打印“Hello,Word”
     */
    public void sayHello();
}
/**
 *@SOAPBinding(style = SOAPBinding.Style.RPC)
 * @author zhangwei_david
 * @version $Id: HelloWordImpl.java, v 0.1 2014年9月27日 上午8:32:20 zhangwei_david Exp $
 */

@WebService
public class HelloWordImpl implements HelloWord {

    /**
     * @see com.cathy.demo.cxf.HelloWord#sayHello()
     */
    @WebMethod
    public void sayHello() {
        LoggerUtils.info("Hello,Word");
    }

}

 

/**
 *
 * @author zhangwei_david
 * @version $Id: SimpleServer.java, v 0.1 2014年9月27日 上午8:36:45 zhangwei_david Exp $
 */
public class SimpleServer {

    public SimpleServer() {
        init();
    }

    private void init() {
        LoggerUtils.info("启动服务。。。");
        HelloWord helloWord = new HelloWordImpl();
        String address = "http://localhost:9000/HelloWord";
        Endpoint.publish(address, helloWord);
    }

    public static void main(String[] args) throws Exception {
        new SimpleServer();
        LoggerUtils.info("服务就绪。。。。");
        TimeUnit.MINUTES.sleep(10);
        LoggerUtils.info("关闭服务。。。。");
        System.exit(0);
    }

}

 

 

浏览器中输入:http://localhost:9000/HelloWord?wsdl

 

<?xml version="1.0" encoding="UTF-8"?>

-<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.cxf.demo.cathy.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" targetNamespace="http://impl.cxf.demo.cathy.com/" name="HelloWordImplService">


-<wsdl:types>


-<xs:schema xmlns:tns="http://impl.cxf.demo.cathy.com/" targetNamespace="http://impl.cxf.demo.cathy.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" elementFormDefault="unqualified">

<xs:element name="sayHello" type="tns:sayHello"/>

<xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/>


-<xs:complexType name="sayHello">

<xs:sequence/>

</xs:complexType>


-<xs:complexType name="sayHelloResponse">

<xs:sequence/>

</xs:complexType>

</xs:schema>

</wsdl:types>


-<wsdl:message name="sayHelloResponse">

<wsdl:part name="parameters" element="tns:sayHelloResponse"> </wsdl:part>

</wsdl:message>


-<wsdl:message name="sayHello">

<wsdl:part name="parameters" element="tns:sayHello"> </wsdl:part>

</wsdl:message>


-<wsdl:portType name="HelloWordImpl">


-<wsdl:operation name="sayHello">

<wsdl:input name="sayHello" message="tns:sayHello"> </wsdl:input>

<wsdl:output name="sayHelloResponse" message="tns:sayHelloResponse"> </wsdl:output>

</wsdl:operation>

</wsdl:portType>


-<wsdl:binding name="HelloWordImplServiceSoapBinding" type="tns:HelloWordImpl">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>


-<wsdl:operation name="sayHello">

<soap:operation style="document" soapAction=""/>


-<wsdl:input name="sayHello">

<soap:body use="literal"/>

</wsdl:input>


-<wsdl:output name="sayHelloResponse">

<soap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>


-<wsdl:service name="HelloWordImplService">


-<wsdl:port name="HelloWordImplPort" binding="tns:HelloWordImplServiceSoapBinding">

<soap:address location="http://localhost:9000/HelloWord"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

  

 

将实现类修改为:

/**
 *
 * @author zhangwei_david
 * @version $Id: HelloWordImpl.java, v 0.1 2014年9月27日 上午8:32:20 zhangwei_david Exp $
 */
@WebService(name = "HelloWord", portName = "HelloPort", serviceName = "HelloWordService", targetNamespace = "http://com.cathy.demo")
public class HelloWordImpl implements HelloWord {

    /**
     * @see com.cathy.demo.cxf.HelloWord#sayHello()
     */
    @WebMethod
    public void sayHello() {
        LoggerUtils.info("Hello,Word");
    }

}

 

 

<?xml version="1.0" encoding="UTF-8"?>

-<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://com.cathy.demo" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" targetNamespace="http://com.cathy.demo" name="HelloWordService">


-<wsdl:types>


-<xs:schema xmlns:tns="http://com.cathy.demo" targetNamespace="http://com.cathy.demo" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" elementFormDefault="unqualified">

<xs:element name="sayHello" type="tns:sayHello"/>

<xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/>


-<xs:complexType name="sayHello">

<xs:sequence/>

</xs:complexType>


-<xs:complexType name="sayHelloResponse">

<xs:sequence/>

</xs:complexType>

</xs:schema>

</wsdl:types>


-<wsdl:message name="sayHelloResponse">

<wsdl:part name="parameters" element="tns:sayHelloResponse"> </wsdl:part>

</wsdl:message>


-<wsdl:message name="sayHello">

<wsdl:part name="parameters" element="tns:sayHello"> </wsdl:part>

</wsdl:message>


-<wsdl:portType name="HelloWord">


-<wsdl:operation name="sayHello">

<wsdl:input name="sayHello" message="tns:sayHello"> </wsdl:input>

<wsdl:output name="sayHelloResponse" message="tns:sayHelloResponse"> </wsdl:output>

</wsdl:operation>

</wsdl:portType>


-<wsdl:binding name="HelloWordServiceSoapBinding" type="tns:HelloWord">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>


-<wsdl:operation name="sayHello">

<soap:operation style="document" soapAction=""/>


-<wsdl:input name="sayHello">

<soap:body use="literal"/>

</wsdl:input>


-<wsdl:output name="sayHelloResponse">

<soap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>


-<wsdl:service name="HelloWordService">


-<wsdl:port name="HelloPort" binding="tns:HelloWordServiceSoapBinding">

<soap:address location="http://localhost:9000/HelloWord"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

 

可以发现上面的SOAP的方式都一直地document 如果想改为RPC又该如何呢?

 

**
 *
 * @author zhangwei_david
 * @version $Id: HelloWordImpl.java, v 0.1 2014年9月27日 上午8:32:20 zhangwei_david Exp $
 */
@SOAPBinding(style = SOAPBinding.Style.RPC)
@WebService
public class HelloWordImpl implements HelloWord {

    /**
     * @see com.cathy.demo.cxf.HelloWord#sayHello()
     */
    @WebMethod
    public void sayHello() {
        LoggerUtils.info("Hello,Word");
    }

}

 

 

 

结果可以看到WSDL是:

 

 

<?xml version="1.0" encoding="UTF-8"?>

-<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.cxf.demo.cathy.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" targetNamespace="http://impl.cxf.demo.cathy.com/" name="HelloWordImplService">

<wsdl:message name="sayHelloResponse"> </wsdl:message>

<wsdl:message name="sayHello"> </wsdl:message>


-<wsdl:portType name="HelloWordImpl">


-<wsdl:operation name="sayHello">

<wsdl:input name="sayHello" message="tns:sayHello"> </wsdl:input>

<wsdl:output name="sayHelloResponse" message="tns:sayHelloResponse"> </wsdl:output>

</wsdl:operation>

</wsdl:portType>


-<wsdl:binding name="HelloWordImplServiceSoapBinding" type="tns:HelloWordImpl">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>


-<wsdl:operation name="sayHello">

<soap:operation style="rpc" soapAction=""/>


-<wsdl:input name="sayHello">

<soap:body namespace="http://impl.cxf.demo.cathy.com/" use="literal"/>

</wsdl:input>


-<wsdl:output name="sayHelloResponse">

<soap:body namespace="http://impl.cxf.demo.cathy.com/" use="literal"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>


-<wsdl:service name="HelloWordImplService">


-<wsdl:port name="HelloWordImplPort" binding="tns:HelloWordImplServiceSoapBinding">

<soap:address location="http://localhost:9000/HelloWord"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

 

 

1
0
分享到:
评论

相关推荐

    CXF webservice+mybatis

    【标题】"CXF Webservice+Mybatis" 深度解析 在现代软件开发中,集成不同的技术栈以构建高效、可维护的系统是常见的做法。本篇将深入探讨如何利用Apache CXF作为Web服务框架,与Mybatis作为持久层框架进行整合,...

    cxf WebService jar包(1)

    cxf WebService jar包

    cxf webservice demo

    此"CXF Webservice Demo"是一个实例,展示了如何使用CXF来创建和消费Web服务。CXF允许开发者通过SOAP(简单对象访问协议)和RESTful(Representational State Transfer)接口进行通信,支持多种协议和绑定,如HTTP、...

    mybatis+spring+cxf Webservice框架

    【标题】"mybatis+spring+cxf Webservice框架"是一个集成性的开发框架,它结合了三个主流的技术组件:MyBatis、Spring和Apache CXF,用于构建高效、灵活且易于维护的Web服务。MyBatis是一个优秀的持久层框架,Spring...

    CXF webservice Demo

    【CXF Webservice Demo】是基于Apache CXF框架的一个示例项目,用于演示如何使用CXF来创建和消费Web服务。Apache CXF是一个开源的Java框架,它允许开发者构建和集成Web服务,支持多种Web服务标准,如SOAP、RESTful ...

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

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

    CXF webservice 验证码接口

    使用jdk1.6、cxf2.3和tomcat开发的一个关于验证码的webservice接口,主要实现对手机验证码的验证。

    CXF webService 工具类

    CXF(CXF: Composite eXtensible Framework)是一个开源的Java框架,它主要用于构建和开发Web服务。CXF使得开发者能够轻松地创建和部署高质量、高性能的SOAP和RESTful Web服务。CXF工具类是CXF框架的一部分,提供了...

    maven项目 cxf webservice

    【标题】"maven项目 cxf webservice"指的是使用Maven构建的一个项目,该项目集成了Apache CXF框架来开发Web服务。Apache CXF是一个开源的Java框架,它允许开发者创建和消费各种Web服务,包括SOAP和RESTful服务。...

    C#动态调用CXF WEBSERVICE框架的共通类

    C#动态调用CXF WEBSERVICE框架共通类。

    webService(基于cxf)的完整例子

    例如,可以使用`@WebService`注解标记一个Java类为Web服务接口,并使用`@Path`注解来定义RESTful服务的URL路径。 4. **CXF服务部署**:CXF提供多种部署方式,包括独立服务器、Tomcat等应用服务器,以及Spring容器。...

    CXF webservice 示例工程(集成spring)

    本示例工程是基于CXF框架构建的一个Webservice应用,该应用集成了Spring框架,以实现更高效的服务管理和依赖注入。CXF是一个开源的Web服务框架,它允许开发者创建和部署SOAP和RESTful服务,同时也支持WS-*标准,如...

    CXF WebService 所需要的最少的jar包

    CXF(CXF: Composite eXtensible Framework)是一个开源的Java框架,它主要用于构建和部署Web服务。CXF使得开发者能够轻松地创建服务端和客户端应用,支持多种Web服务标准,如SOAP、RESTful、WS-*等。在这个主题中,...

    使用cxf webservice时容易出现的异常

    使用cxf webservice时容易出现的异常

    CXF WebService整合Spring代码(包含服务,客户端两个工程 和 文档)

    CXF WebService整合Spring代码(包含服务,客户端两个工程 和 文档) 需要视频的话,留邮箱

    CXF webservice初学笔记

    【CXF Webservice初学笔记】 在IT行业中,Web服务是一种允许不同系统之间进行通信和交换数据的方法。Apache CXF是一个流行的开源框架,用于构建和部署Web服务。本笔记将探讨CXF Webservice的基础知识,包括其核心...

    spring+CXF实现WebService(http+https)

    Spring框架是Java企业级应用开发的首选,而CXF是一个强大的开源服务框架,支持创建和消费Web服务。本教程将深入探讨如何利用Spring和CXF来实现基于HTTP和HTTPS的Web服务,并且将涉及到HTTPS的证书配置。 1. **...

    Java cxf开发webservice,分别有客户端和服务端

    2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...

    CXF WebService实例

    在Java中,创建一个CXF WebService的"HelloWorld"示例通常涉及以下步骤: 1. 定义服务接口:使用Java语言定义一个简单的接口,例如`GreetingService`,其中包含一个返回"Hello, World!"的`sayHello()`方法。 2. 实现...

    CXF WebService带有拦截器

    总结起来,"CXF WebService带有拦截器"的实践是Web服务开发中的一个重要方面,它允许我们在不侵入核心业务逻辑的情况下,增加诸如权限控制这样的安全特性。通过"AuthFilter_Service"和"AuthFilter_Client",我们可以...

Global site tag (gtag.js) - Google Analytics