zoukankan      html  css  js  c++  java
  • webservice学习随笔(二):通过cxf实现webservice

    一:基本概念(可跳过)

     Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构。它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 Spring 的轻量级容器中,以及部署在更高级的服务器上,例如 Jboss、IBM® WebSphere® 或 BEA WebLogic。

           该框架提供了以下功能:

    • Web 服务标准支持:CXF 支持以下 Web 服务标准:
      • Java API for XML Web Services (JAX-WS)
      • SOAP
      • Web 服务描述语言(Web Services Description Language ,WSDL)
      • 消息传输优化机制(Message Transmission Optimization Mechanism,MTOM)
      • WS-Basic Profile
      • WS-Addressing
      • WS-Policy
      • WS-ReliableMessaging
      • WS-Security
    • 前端建模:CXF 提供了前端建模的概念,允许您使用不同的前端 API 来创建 Web 服务。API 允许您使用简单的工厂 Bean 并通过 JAX-WAS 实现来创建 Web 服务。它还允许您创建动态 Web 服务客户端。
    • 工具支持:CXF 提供了用于在 Java Bean、Web 服务和 WSDL 之间进行转换的不同工具。它提供了对 Maven 和 Ant 集成的支持,并无缝地支持 Spring 集成。
    • RESTful 服务支持:CXF 支持代表性状态传输(Representational State Transfer,RESTful )服务的概念,并支持 Java 平台的 JAX-RS 实现。(本系列的第 2 部分将提供有关 RESTful 服务的更多信息。)
    • 对不同传输和绑定的支持:CXF 支持不同种类的传输,从 XML 到逗号分隔值 (CSV)。除了支持 SOAP 和 HTTP 协议绑定之外,它还支持 Java Architecture for XML Binding (JAXB) 和 AEGIS 数据绑定。
    • 对非 XML 绑定的支持:CXF 支持非 XML 绑定,例如 JavaScript Object Notation (JSON) 和 Common Object Request Broker Architecture (CORBA)。它还支持 Java 业务集成(Java Business Integration,JBI)体系架构和服务组件体系架构(Service Component Architecture,SCA)。
    • code first 或者 xml first  : 支持使用code first 或者 xml first 的方式来创建web服务。

    二、代码实例

      需要的包(百度云盘自提):

    链接:https://pan.baidu.com/s/1gEYxyhvn_wY0kEK7qZHB_w 
    提取码:7h7q 
    复制这段内容后打开百度网盘手机App,操作更方便哦

      代码和上一节基本一致,稍微做一点调整:webservice学习随笔(一):简单的webservice实例

      首相,创建java项目,并导入jar包

      创建接口WebServiceI、实现WebServiceImpl、发布主程序WebServicePublish、客户端CXFClient;

      

    package service;
    
    import javax.jws.WebParam;
    import javax.jws.WebService;
    
    @WebService
    public interface WebServiceI {
    
        public String sayHello(@WebParam(name="name")String name);
    }
    package service;
    import javax.jws.WebService;
    
    @WebService(endpointInterface="service.WebServiceI",serviceName="WebServiceI")
    public class WebServiceImpl implements WebServiceI {
    
        public String sayHello(String name) {
            String returnStr = name + ",你好";
            return returnStr;
        }
    
    }
    package service;
    
    import javax.xml.ws.Endpoint;
    
    public class WebServicePublish {
    
        public static void main(String[] args) {
            String address="http://localhost:8989/WS_Server/WebService";
            Endpoint.publish(address,new WebServiceImpl());
            System.out.println("发布成功....");
        }
    }
    package service;
    
    
    import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
    
    public class CXFClient {
        public static void main(String[] args) {
             JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();
             svr.setServiceClass(WebServiceI.class);
             svr.setAddress("http://localhost:8989/WS_Server/WebService");
             WebServiceI ws = (WebServiceI) svr.create();
             System.out.println("调用webservice服务的结果是:"+ws.sayHello("李四"));
        }
    }

    本次我们发现最大的改变是在接口、实现上添加了注解@WebService,客户端的代码稍微变化大一点。

    测试结果一样,启动服务端主程序后,控制台显示发布成功

    执行客户端主程序后:

    本次CXF实现webservice成功

  • 相关阅读:
    Tips/Tricks#4:不同页面之间传递值
    NHibernate之旅(2):第一个NHibernate程序
    Silverlight 2 (beta1)数据操作(7)——调用FlickR REST APIs来查询图片
    NHibernate之旅(5):探索Insert, Update, Delete操作
    Tips/Tricks#3:利用JavaScript选择GridView行
    PyCharm 设置菜单字体大小
    Python 多重继承
    Python 全局变量 global
    调整微信(浏览器)的音量
    PyQt5实现从主窗口打开子窗口的方法
  • 原文地址:https://www.cnblogs.com/livensummer/p/10870387.html
Copyright © 2011-2022 走看看