一、 说明 采用CXF框架开发webservice。 所用软件及版本如下。

 操作系统:Window XP SP3。

 JDK:JDK1.6.0_07,http://www.oracle.com/technetwork/java/javase/downloads/index.html

 Tomcat:apache-tomcat-6.0.14.exe,http://tomcat.apache.org/

 IDE:eclipse-jee-juno-SR1-win32.zip,http://www.eclipse.org/downloads/

 CXF:apache-cxf-2.6.10.zip,http://cxf.apache.org/download.html

二、 JDK配置 安装JDK1.6.0,配置环境变量。

JAVA_HOME:C:\Program Files\Java\jre1.6.0_07。

Path:C:\Program Files\Java\jre1.6.0_07\bin。

CLASSPATH:C:\Program Files\Java\jre1.6.0_07\lib。

因本地只安装了JRE,故配置信息按JRE目录来设置。

三、 Tomcat配置 安装Tomcat,运行apache-tomcat-6.0.14.exe。  端口号:8080 用户名:admin 密码:111111
安装完成后,启动tomcat。 访问:http://localhost:8080/。出现如下界面则部署成功。

四、 CXF服务端 1、下载apache-cxf-2.6.10.zip包,解压后数据如下。

2、新建Dynamic Web Project。 File—New—Project。

工程名:MyService。

Target runtime要与安装的Tomcat一致,若不一致点击“New Runtime”设置。 比如我本地安装的Tomcat为v6.0。

Tomcat installation directory选择Tomcat安装目录。

Default output folder设置为:WebContent/WEB-INF/classes。

3、导入CXF库文件。 CXF库配置。

选中apache-cxf-2.6.10包下的lib目录,导入所有的jar文件。 本机目录为F: \Java开发\apache-cxf-2.6.10\lib。

添加完成后,会出现CXF名称库目录。

4、创建接口IcxfWB。 工程右键—New—Interface,添加代码:

  1. package com.yxj;
  2. import javax.jws.WebService;
  3. import javax.jws.WebParam;
  4. import javax.jws.WebMethod;
  5. @WebService
  6. public interface IcxfWB {
  7. @WebMethod
  8. String sayHello(@WebParam(name="name") String name);
  9. }

说明:
@WebService:标记表示该接口是一个WebService服务。
@WebMethod:标记表示WebService中的方法。
@WebParam(name="paramName")表示方法中的参数,name属性限制了参数的名称,若没有指定该属性,参数将会被重命名。

5、创建服务实现类CxfWBImpl。

  1. package com.yxj;
  2. public class CxfWBImpl implements IcxfWB {
  3. public String sayHello(String name) {
  4. return "Hello "+name;
  5. }
  6. }

6、编辑WebContent/WEB-INF下web.xml文件。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  3. <display-name>MyService</display-name>
  4. <context-param>
  5. <param-name>contextConfigLocation</param-name>
  6. <param-value>WEB-INF/service-beans.xml</param-value>
  7. </context-param>
  8. <listener>
  9. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  10. </listener>
  11. <servlet>
  12. <servlet-name>CXFServlet</servlet-name>
  13. <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  14. </servlet>
  15. <servlet-mapping>
  16. <servlet-name>CXFServlet</servlet-name>
  17. <url-pattern>/*</url-pattern>
  18. </servlet-mapping>
  19. <welcome-file-list>
  20. <welcome-file>index.html</welcome-file>
  21. <welcome-file>index.htm</welcome-file>
  22. <welcome-file>index.jsp</welcome-file>
  23. <welcome-file>default.html</welcome-file>
  24. <welcome-file>default.htm</welcome-file>
  25. <welcome-file>default.jsp</welcome-file>
  26. </welcome-file-list>
  27. </web-app>

7、在WebContent/WEB-INF下创建刚才指定的service-beans.xml文件。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:jaxws="http://cxf.apache.org/jaxws"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
  9. <import resource="classpath:META-INF/cxf/cxf.xml"/>
  10. <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
  11. <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
  12. <bean id="SayHello" class="com.yxj.CxfWBImpl" />
  13. <jaxws:endpoint id="sayHello" implementor="#SayHello" address="/sayHello"/>
  14. </beans>

五、 WebService部署
1、 打包工程
右键工程—Export—WAR file,指定输出路径。

2、 将war文件移动至apache-tomcat\webapps下。 本地操作是,复制F:\MyService.war到目录D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps。
3、 复制CFX文件到tomcat下。 复制F:\常用软件\Java开发\apache-cxf-2.6.10\lib目录下文件到 F:\JavaRoot\workspace\MyService\WebContent\WEB-INF\lib。
4、 重启Tomcat。 5、 浏览器访问http://localhost:8080/MyService。

六、 CXF客户端

1、生成Stub CXF提供了一个名为“wsdl2java.bat”的工具,该工具可以通过WSDL为特定的服务创建 stub。

本地目录,F:\常用软件\Java开发\apache-cxf-2.6.10\bin\下wadl2java工具。

命令wsdl2java –p 生成代码的包名 –d 生成代码的路径 wsdl地址。

本地命令如下。 wsdl2java -p com.yxj.client -d F:\clientsrc http://localhost:8080/MyService/sayHello?wsdl

生成结果文件在F:\clientsrc,生成文件如图。

2、新建Java Project。

3、将第一步中生成的F:\clientsrc文件夹下的所有java文件移至工程src下,刷新工程。

4、添加CXF包。

使用创建Service时配置好的CXF库。

6、 新建包含有main方法的Class,代码如下。

  1. package com.yxj.client;
  2. import org.springframework.context.support.ClassPathXmlApplicationContext;
  3. import com.yxj.client.IcxfWB;
  4. public class ClientCall {
  5. /**
  6. * @param args
  7. */
  8. public static void main(String[] args) {
  9. // TODO Auto-generated method stub
  10. ClassPathXmlApplicationContext context
  11. = new ClassPathXmlApplicationContext(new String[] {"com/yxj/client/client-beans.xml"});
  12. IcxfWB client = (IcxfWB)context.getBean("sayHello2");
  13. String response = client.sayHello("World");
  14. System.out.println("Response: " + response);
  15. System.exit(0);
  16. }
  17. }

7、 在类ClientCall同级目录,即com/yxj/client下新建client-beans.xml配置文件。
文件内容如下。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:jaxws="http://cxf.apache.org/jaxws"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
  8. <jaxws:client id="sayHello2" serviceClass="com.yxj.client.IcxfWB" address="http://localhost:8080/MyService/sayHello?wsdl"/>
  9. </beans>

该方式访问ws服务是利用spring的依赖注入法,其中id是spring IOC容器唯一标识符,在代码中也是通过id获得服务对象的(context.getBean("sayHello2"));serviceClass是Webservices服务接口;address是服务的wsdl地址。

8、 运行客户端,控制台输出。

  1. Hello World

OK,至此大功告成!

Eclipse+CXF框架开发Web服务实战的更多相关文章

  1. WebService系列二:使用JDK和CXF框架开发WebService

    一.使用JDK开发WebService 服务端程序创建: 1.新建一个JDK开发webservice的服务端maven项目JDKWebServiceServer 2. 定义一个接口,使用@WebSer ...

  2. 如何快速搭建一个基于ServiceStack框架的web服务

    ServiceStack是一个高性能的.NET Web Service 平台,能够简化开发高性能的REST (支持JSON,XML,JSV,HTML,MsgPack,ProtoBuf,CSV等消息格式 ...

  3. 利用JAX-WS 开发web服务

    近日在学习Rogers Candenhead的第六版的<Java 入门经典>第22章.利用JAX-WS 开发web服务,简略总结而言主要包括以下几个步骤: 1.定义服务端点接口类: 主要就 ...

  4. eclipse集成jetty开发web项目(不采用maven方式)

    以前开发过程部署项目都是采用tomcat,偶然发现jetty,所以试了下,挺方便的,直切主题. 1.下载jetty,楼主使用的jetty8,地址http://download.eclipse.org/ ...

  5. SSM框架开发web项目系列(二) MyBatis真正的力量

    前言 上篇SSM框架环境搭建篇,演示了我们进行web开发必不可少的一些配置和准备工作,如果这方面还有疑问的地方,可以先参考上一篇“SSM框架开发web项目系列(一) 环境搭建篇”.本文主要介绍MyBa ...

  6. SSM框架开发web项目系列(三) MyBatis之resultMap及关联映射

    前言 在上篇MyBatis基础篇中我们独立使用MyBatis构建了一个简单的数据库访问程序,可以实现单表的基本增删改查等操作,通过该实例我们可以初步了解MyBatis操作数据库需要的一些组成部分(配置 ...

  7. SSM框架开发web项目系列(五) Spring集成MyBatis

    前言 在前面的MyBatis部分内容中,我们已经可以独立的基于MyBatis构建一个数据库访问层应用,但是在实际的项目开发中,我们的程序不会这么简单,层次也更加复杂,除了这里说到的持久层,还有业务逻辑 ...

  8. Delphi XE5通过WebService开发Web服务端和手机客户端

    Delphi XE5通过WebService开发Web服务端和手机客户端介绍 我们开发一个三层的android程序 建立一个webservices  stand-alone vcl applicati ...

  9. WEBSERVICE之CXF框架开发webservice

    之前学习了使用jdk开发webservice服务,现在开始学习使用框架(cxf)开发webservice. 1.准备工作 A.使用cxf开发webservice服务,需要用到apache-cxf-3. ...

随机推荐

  1. Redis+Twemproxy分片存储实现

    from unsplash 为提高Redis存储能力的提升,以及对外提供服务可用性提升,有时候有必要针对Redis进行集群式搭建,比较常用的有Twemproxy分片存储以及官方提供的Cluster方式 ...

  2. redux、react-redux、redux-thunk、redux-saga使用及dva对比

    一.redux使用 Redux的核心概念其实很简单:将需要修改的state都存入到store里,发起一个action用来描述发生了什么,用reducers描述action如何改变state tree ...

  3. 《C Primer Plus(第6版)中文版》勘误

    搬运自己2016年11月28日发布于SegmentFault的文章.链接:https://segmentfault.com/a/1190000007626460 本勘误由本人整理并发布,仅针对下方列出 ...

  4. win10修改桌面图标之间的距离

    操作方法01首先用Win+R组合键打开运行界面,在界面的输入框中输入regedit命令,打开注册表. 02在打开的注册表界面中我们找到HKEY_Current_User下的Control Panel文 ...

  5. 个人永久性免费-Excel催化剂功能第34波-提取中国身份证信息、农历日期转换相关功能

    这两天又被刷朋友圈,又来了一个自主研发红芯浏览器,国产啊国产,这是谁的梦.就算国产了,自主了,无底线的夸大吹嘘无道德,企业如是,国家如是,大清已亡!再牛B的技术落在天天删敏感信息.无法治.无安全感可言 ...

  6. CentOS下搭建Git服务器(基于SSH协议)

    1,安装Git所需依赖包      # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel      # ...

  7. Git对象

    上一节了解了 Git 的一个重要的概念:暂存区. 暂存区是一个介于工作区和版本库的中间状态,当执行commit时,实际上是将暂存区的内容提交大版本库中,而执行add则是将本次变更添加到暂存区. 上一节 ...

  8. Minikube安装成功Kubernetes,一次过!

    介绍 Minikube 是 K8S 官方为了开发者能在个人电脑上运行 K8S 而提供的一套工具.实现上是通过 Go 语言编写,通过调用虚拟化管理程序,创建出一个运行在虚拟机内的单节点集群. 注:从这里 ...

  9. MyBatis 中 @Param 注解的四种使用场景,最后一种经常被人忽略!

    有一些小伙伴觉得 MyBatis 只有方法中存在多个参数的时候,才需要添加 @Param 注解,其实这个理解是不准确的.即使 MyBatis 方法只有一个参数,也可能会用到 @Param 注解. 但是 ...

  10. Java SE API 8

    百度云: 链接:http://pan.baidu.com/s/1pLMwiKz 密码:ep5f 官网网址:http://www.oracle.com/technetwork/java/javase/d ...