WebService CXF学习(入门篇1)CXF由来
WebService介绍
  WebService让一个程序可以透明地调用互联网程序,不用管具体的实现细节。只要WebService公开了服务接口,远程客户端就可以调用服务。WebService是基于http协议的组件服务,WebService是分散式应用程序的发展趋势。

WebService的开源实现
  WebService更多是一种标准,而不是一种具体的技术。不同的平台,不同的语言大都提供WebService的开发实现。在JAVA领域,WebService的框架很多,例如:AXISXFire,CXF等。AXISXFire相对比较成熟,资料相对较多。在这里我们只对CXF进行讲解,其他大家想学习到互联网相关资料学习。

CXF框架由来
  ApacheCXF项目是由ObjectWeb CeltixCodeHaus XFire合并成立。ObjectWeb Celtix是由IONA公司赞助,于2005年成立的开源Java ESB产品,调用webservice服务XFire则是业界知名的SOAP堆栈。
合并后的ApacheCXF融合该两个开源项目的功能精华,提供了实现SOA所需要的核心ESB功能框架,包括SOA服务创建,服务路由,及一系列企业级QoS功能。

ApacheCXF架框的目标
  1.概述
  <>高性能
  <>可扩展
  <>直观易用
  2.支持标准
    <> JAX-WS, JSR-181, SAAJ, JAX-RS
    <> SOAP 1.1, 1.2, WS-I BasicProfile, WS-Security, WS-Addressing, WS-RM, WS-Policy
    <> WSDL 1.1
    <> MTOM
  3.传输方式,绑定,数据绑定,传送数据格式
    <> 绑定: SOAP, REST/HTTP
    <> 数据绑定: JAXB 2.x, Aegis, XMLBeans, SDO
    <> 传送数据格式: XML, JSON, FastInfoset
    <> 传输方式: HTTP, Servlet, JMS
  4.部署灵活
    <> 轻量级: 可以将服务部署到 Tomcat或其支持Spring的容器中
    <> JBI整合: 部署一个服务引擎到JBI容器,例如: ServiceMix, OpenESB or Petals
    <> J2EE集成: 可以将服务部署到J2EE应用服务器上,例如:Geronimo, JOnAS, JBoss, WebLogic, WebSphere
    <> Java 客户端/服务端可以独立性
  5.支持多种编程语言
    <> 完全支持 JAX-WS 2.x 客户端/服务端模式
    <> JAX-WS 2.x synchronous, asynchronous and one-way API's
    <> JAX-WS 2.x Dynamic Invocation Interface (DII) API
    <> 支持 wrapped and non-wrapped 数据格式
    <> XML messaging API
    <> 支持JavaScript ECMAScript 4 XML (E4X)
    <> 支持CORBA
    <> 支持JBIServiceMix
  6.可编程环境
    <> Java to WSDL
    <> WSDL to Java
    <> XSD to WSDL
    <> WSDL to XML
    <> WSDL to SOAP
    <> WSDL to service
理论联系实际,单单只讲理论那就成了纸上谈兵,用一个HelloWorld Demo可来说明事更加直观。那下面咱们就开始进行讲解:
  首先到apache官方网下载apache-cxf-2.2.2,地址:/
  新建一个Java Project,导入cxf常用.jar
Java代码
1. commons-logging-1.1.1.jar   
2. geronimo-activation_1.1_spec-1.0.2.jar (or Sun's Activation jar)   
3. geronimo-annotation_1.0_spec-1.1.1.jar (JSR 250)   
4. geronimo-javamail_1.4_spec-1.6.jar (or Sun's JavaMail jar)   
5. geronimo-servlet_2.5_spec-1.2.jar (or Sun's Servlet jar)   
6. geronimo-ws-metadata_2.0_spec-1.1.2.jar (JSR 181)   
7. geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar)   
8. geronimo-stax-api_1.0_spec-1.0.1.jar (or other stax-api jar)   
9. jaxb-api-2.1.jar   
10. jaxb-impl-2.1.12.jar   
11. jetty-6.1.21.jar   
12. jetty-util-6.1.21.jar   
13. neethi-2.0.4.jar   
14. saaj-api-1.3.jar   
15. saaj-impl-1.3.2.jar   
16. wsdl4j-1.6.2.jar   
17. wstx-asl-3.2.8.jar   
18. XmlSchema-1.4.5.jar   
19. xml-resolver-1.2.jar   
20. cxf-2.2.2.jar 
  commons-logging-1.1.1.jar
  geronimo-activation_1.1_spec-1.0.2.jar (or Sun's Activation jar)
  geronimo-annotation_1.0_spec-1.1.1.jar (JSR 250)
  geronimo-javamail_1.4_spec-1.6.jar (or Sun's JavaMail jar)
  geronimo-servlet_2.5_spec-1.2.jar (or Sun's Servlet jar)
  geronimo-ws-metadata_2.0_spec-1.1.2.jar (JSR 181)
  geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar)
  geronimo-stax-api_1.0_spec-1.0.1.jar (or other stax-api jar)
  jaxb-api-2.1.jar
  jaxb-impl-2.1.12.jar
  jetty-6.1.21.jar
  jetty-util-6.1.21.jar
  neethi-2.0.4.jar
  saaj-api-1.3.jar
  saaj-impl-1.3.2.jar
  wsdl4j-1.6.2.jar
  wstx-asl-3.2.8.jar
  XmlSchema-1.4.5.jar
  xml-resolver-1.2.jar
  cxf-2.2.2.jar

  接下就是HelloWorld Demo开发了
  第一步:新建一个webservice接口
Java代码
1. @WebService 
2. public interface IHelloWorld {   
3.     //@WebParam给参数命名,提高可代码可读性。此项可选   
4. blic String sayHi(@WebParam(name="text") String text);   
5.
  @WebService
  public interface IHelloWorld {
      //@WebParam给参数命名,提高可代码可读性。此项可选
    public String sayHi(@WebParam(name="text") String text);
  }

  通过注解@WebService申明为webservice接口
  第二步,实现WebService接口
Java代码
1.   @WebService 
2.   public class HelloWorldImpl implements IHelloWorld {   
3.  
4. public String sayHi(String name) {   
5.     System.out.println("sayHello is called by " + name);   
6.     return "Hello " + name;   
7. }   
8.  
9.    } 
  @WebService
  public class HelloWorldImpl implements IHelloWorld {
    public String sayHi(String name) {
        System.out.println("sayHello is called by " + name);
        return "Hello " + name;
    }
    }


  第三步,创建服务端
Java代码
1.   public class Server {   
2.  
3. private Server(){   
4.     IHelloWorld helloWorld = new HelloWorldImpl();   
5.     //创建WebService服务工厂   
6.     JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();   
7.     //注册WebService接口   
8.     factory.setServiceClass(IHelloWorld.class);   
9.     //发布接口   
10.     factory.setAddress("localhost:9000/HelloWorld");   
11.     factory.setServiceBean(helloWorld);   
12.     //创建WebService   
13.     ate();   
14. };   
15.  
16. public static void main(String[] args) throws InterruptedException{   
17.        //启动服务端   
18.               new Server();   
19.     System.out.println("Server&");   
20.     //休眠一分钟,便于测试   
21.                Thread.sleep(1000*60);   
22.     System.out.println("Server&");   
23.     it(0);   
24. }   
25.    } 
  public class Server {
    private Server(){
        IHelloWorld helloWorld = new HelloWorldImpl();
        //创建WebService服务工厂

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。