文档章节

webService

肥猫钓鱼
 肥猫钓鱼
发布于 2014/11/06 10:09
字数 1120
阅读 73
收藏 1

一、CXF介绍

    Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。Apache CXF已经是一个正式的Apache顶级项目。CXF支持多种协议,如:SOAP、XML/HTTP、RESTful HTTP 、 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 、 JBI。CXF可以与Spring进行无缝集成。

CXF 框架是一种基于 Servlet 技术的 SOA 应用开发框架,要正常运行基于 CXF 应用框架开发的企业应用,除了 CXF 框架本身之外,还需要 JDK 和 Servlet 容器的支持。

CXF 下载地址:http://cxf.apache.org/download.html,选择“File”列中的zip格式下载。解压后可以看到一些文件夹: └─apache-cxf-2.5.0

    ├─bin           各种工具
    ├─docs        API文档
    ├─etc          各种配置文件
    ├─lib           开发所需jar包
    ├─licenses  说明
    ├─modules  jar包

    └─samples  使用例子

samples文件夹中给提供了在各种环境下使用的例子,个人感觉只需参照样例即可。

二、使用CXF+Spring编写并发布WebService

    首先,新建一个Web项目,名字叫cxftest,将下载的压缩包中lib文件夹下的jar包全部拷贝到项目的WEB-INF/lib中,在web.xml中配置如下:

[html] view plaincopy

<servlet>  
    <servlet-name>CXFServlet</servlet-name>  
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>  
  </servlet>  
  <servlet-mapping>  
    <servlet-name>CXFServlet</servlet-name>  
    <url-pattern>/services/*</url-pattern>  
  </servlet-mapping>  

    然后,在项目src目录下新建包:com.test,在新建的包中创建TestService.java,代码如下:

[java] view plaincopy

package com.test;  
  
import javax.jws.WebService;  
  
@WebService  
public interface TestService {  
      
    public String sayHi(String name);  
  
}  

    接着,在创建TestServiceImpl.java,代码如下:

[java] view plaincopy

package com.test;  
  
import javax.jws.WebService;  
  
@WebService(endpointInterface="com.test.TestService")  
public class TestServiceImpl implements TestService {  
      
    public String sayHi(String name) {  
          
        return name+", welcome to here!";  
    }  
}  

CXF中采用注解的方式声明哪些类作为WebService进行发布,

@WebService:声明webservice接口;

@WebService(endpointInterface="com.test.TestService"):声明这个类是TestService接口的实现类。 其次,在WEB-INF下新建cxf-servlet.xml文件,代码如下:

[html] view plaincopy

<?xml version="1.0" encoding="UTF-8"?>  
  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:jaxws="http://cxf.apache.org/jaxws"  
    xsi:schemaLocation="  
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">  
          
    <import resource="classpath:META-INF/cxf/cxf.xml" />  
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
  
  <jaxws:server id="testService" serviceClass="com.test.TestService" address="/testService">  
    <jaxws:serviceBean>  
        <bean class="com.test.TestServiceImpl" />  
    </jaxws:serviceBean>  
  </jaxws:server>  
</beans>  

id:自定义,serviceClass:接口类的完整包名,address:此接口的访问路径,jaxws:serviceBean/标签用于配置接口的实现类

    然后,在web.xml中配置启动时加载cxf-servlet.xml,并配置Spring的监听器,代码如下:

[html] view plaincopy

<context-param>  
    <param-name>contextConfigLocation</param-name>  
    <param-value>/WEB-INF/cxf-servlet.xml</param-value>  
  </context-param>  
    
  <listener>  
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  </listener>  

web.xml文件的完整内容如下:

[html] view plaincopy

<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="2.5"   
    xmlns="http://java.sun.com/xml/ns/javaee"   
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
    
  <context-param>  
    <param-name>contextConfigLocation</param-name>  
    <param-value>/WEB-INF/cxf-servlet.xml</param-value>  
  </context-param>  
    
  <listener>  
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  </listener>  
    
  <servlet>  
    <servlet-name>CXFServlet</servlet-name>  
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>  
  </servlet>  
  <servlet-mapping>  
    <servlet-name>CXFServlet</servlet-name>  
    <url-pattern>/services/*</url-pattern>  
  </servlet-mapping>  
    
</web-app>  

    最后,发布到tomcat中并启动,在浏览器中输入http://localhost:8080/cxftest/services/testService?wsdl,发布成功!

三、测试发布的WebService,生成客户端代码调用WebService

    在浏览器中输入http://localhost:8080/cxftest/services/testService/sayHi?arg0=andy,返回内容正常,调用成功!这里要注意一点,在浏览器中测试接口时,参数名一定要和WSDL文档中的参数名一致,否则会出错。

    生成客户端代码,这里使用CXF自带的wsdl2java.bat工具生成客户端代码:wsdl2java.bat在bin文件夹中,在cmd窗口中进入到wsdl2java.bat所在目录下,

使用如下命令生成客户端代码:wsdl2java -d src -all http://localhost:8080/cxftest/services/testService?wsdl

    -d:表示将转化后的代码放到哪里,如果不带此参数,则默认放到wsdl2java.bat所在目录下;

    -all:以什么样的方式生成客户端代码,还有其他可选参数,这里不加阐述了,可以直接使用wsdl2java名来查看其他参数。

生成的客户端文件:ObjectFactory.java、package-info.java、SayHi.java、SayHiResponse.java、TestService.java、TestServiceImpl.java、

        TestServiceService.java、TestService_TestServicePort_Client.java、TestService_TestServicePort_Server.java

TestService_TestServicePort_Client.java和TestService_TestServicePort_Server.java可以不要,前者是调用接口的例子,后者是发布接口的例子。

新建一个InvokeService.java,代码如下:

[java] view plaincopy

import com.test.TestService;  
import com.test.TestServiceService;  
  
public class InvokeService {  
  
    public static void main(String[] args) {  
          
        TestService s = new TestServiceService().getTestServicePort();  
        System.out.println(s.sayHi("andy"));  
  
    }  
}  

输出值:andy, welcome to here! ,调用成功!

本文转载自:http://blog.csdn.net/cuihuaming198809/article/details/8243361

共有 人打赏支持
肥猫钓鱼
粉丝 1
博文 52
码字总数 9287
作品 0
深圳
程序员
互联网 免费的WebService接口

股票行情数据 WEB 服务(支持香港、深圳、上海基金、债券和股票;支持多股票同时查询) Endpoint: http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmx 复制 Endpoint Disco: ht...

庞陆阳
2016/10/28
7
0
WebService学习总结(三)--使用JDK开发WebService

一、WebService的开发手段   使用Java开发WebService时可以使用以下两种开发手段     1、 使用JDK开发(1.6及以上版本)     2、使用CXF框架开发(工作中) 二、使用JDK开发WebServic...

JAVA_NINA
2016/05/02
135
1
Android调用WebService

WebService是一种基于SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台、不同语言、不同技术整合到一块。在 Android SDK中并没有提供调用WebService的库,因此,需要使用第三方...

风中海岸
2014/07/02
0
0
Spring 3 整合Apache CXF WebService

在CXF2版本中,集合Spring3发布CXF WebService就更加简单了。因为Spring 3提供了annotation注解,而CXF2发布WebService已经不像之前版本的配置那样(参考老版本发布WebService系列文章:htt...

ibm_hoojo
2012/07/13
0
0
综合技术 --webservice理解

目前,几乎所有的应用程序都需要与运行在其它异构平台上的应用程序进行数据交换,这就需要一个接口来满足两个不同的平台。webservice能满足客户端和服务器之间通过http进行通信,无论这两个程...

求是科技
2015/04/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

awk命令用法介绍

10月18日任务 9.6/9.7 awk 1.awk(上)(下) 1.awk 分段操作功能 指定分隔符,并把第一段打印出来,不会改动文件内容 将所有内容打印出来 awk 没有指定分隔符号,则会默认用空格或者空白字符...

hhpuppy
51分钟前
2
0
Spring Cloud Eureka Server高可用之:在线扩容

本文共 1591字,阅读大约需要 6分钟 ! 概述 业务微服务化以后,我们要求服务高可用,于是我们可以部署多个相同的服务实例,并引入负载均衡机制。而微服务注册中心作为微服务化系统的重要单元...

CodeSheep
今天
2
0
内网esxi主机上安装CoreOS虚拟机

CoreOS是一个为专门运行容器而设计的轻量级linux发行版,旨在通过轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复杂度。它没有包管理工具,运行容器化应用以提供服务;默...

hiwill
今天
1
0
20181018 上课截图

![](https://oscimg.oschina.net/oscnet/49f66c08ab8c59a21a3b98889d961672f30.jpg) ![](https://oscimg.oschina.net/oscnet/a61bc2d618b403650dbd4bf68a671fabecb.jpg)......

小丑鱼00
今天
3
0
WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部