1.步骤一览

关于CXF的介绍请移步官网百科,这里仅供初次使用者入门。

2.步骤详情

2.1.环境准备

apache-cxf-3.0.0.zip下载

jdk1.7.0_51

Eclipse4.3.0

Tomcat v7.0 Server

2.2.创建服务端

2.2.1.新建Dynamic web project如下

默认的eclipse编译输出目录:build\classes,这里就不作修改了,如下:

生成web.xml选项还是选上吧,免的自己还要创建文件,默认生成的主要就是welcome-file-list,其实也没太多用处

2.2.2.引入cxf相应jar文件

将下载的apache-cxf-3.0.0.zip解压,目录结构如下

将lib文件夹下的所有文件拷贝到工程中(有些非核心jar是不需要的,根据实际工程删减),项目结构如下:

2.2.3.创建服务接口

ICxfTest内容如下:

package com.ibugs.service;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService; @WebService
public interface ICxfTest { @WebMethod
String hi(@WebParam(name="name") String name);
}

与一般接口不同,在ICxfTest接口中引入了三个注解:@WebService,@WebMethod,@WebParam

@WebService 标记在接口上表示此接口为WebService服务

@WebMethod 表示为WebService方法

@WebParam 则表示参数重命名

这样一个WebService接口就定义好了

2.2.4.接口实现

代码和一般实现没什么区别,如下

package com.ibugs.service;

public class CxfTest implements ICxfTest {

    @Override
public String hi(String name) { return "hi " + (name != null? name : "Everyone" );
} }

2.2.5.配置servlet

修改web.xml文件,增加servlet

<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>/webservice/*</url-pattern>
</servlet-mapping>

2.2.6.cxf-servlet.xml

解压目录\apache-cxf-3.0.0\samples\wsdl_first\src\main\webapp\WEB-INF中复制文件cxf-servlet.xml到/CxfService/WebContent/WEB-INF

修改代码:

<?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" xmlns:soap="http://cxf.apache.org/bindings/soap" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<bean id="Hi" class="com.ibugs.service.CxfTest"/>
<jaxws:endpoint id="hi" implementor="#Hi" address="/hi"/>
</beans>

主要是配置jaxws:endpoint,<jaxws:endpoint>定义了一个webservice,implementor是webservice的处理类,值定义在<bean>中指定的id,具体实现在class属性中配置;address是访问路径

2.2.7.tomcat发布

发布过程与一般web工程没有任何区别,访问路径localhost:8080/CxfService/webservice

点击相应的链接:

至此服务端部署完成

2.3.客户端

2.3.1.生成存根stub

CXF提供 了wsdl2java.bat工具,在解压目录\apache-cxf-3.0.0\bin下,为了使用方便可以将其加入到计算机环境变量Path中

相应的参数如上,这里将生成的代码放到D:\stub目录下,最后一个参数则是服务端提供的超链接

可以用参数-p自己定义包名,默认和服务器所在包名相同,生成的代码D:\stub\com\ibugs\service如下:

2.3.2.客户端项目

新建项目:com.ibugs.service包下放自动生成文件,

调用webservice,新建ClientTest类代码如下:

package com.ibugs.client;

import com.ibugs.service.CxfTestService;
import com.ibugs.service.ICxfTest; public class ClientTest {
static CxfTestService cxfTestService = new CxfTestService();
static ICxfTest cxfTestPort = cxfTestService.getCxfTestPort(); public static void main(String[] args){
System.out.println(cxfTestPort.hi("ibugs"));
}
}

其中cxfTestService为客户端下webservice服务的一个view,而cxfTestPort为其中的一个Proxy。调用的时候通过代理cxfTestPort就可以调用webService的方法cxfTestPort.hi("ibugs")了。这里大家也可以通过Spring依赖注入的方式创建对象就不在此展开了

Apache CXF Webservice入门的更多相关文章

  1. Spring 3 整合Apache CXF WebService[转]

    http://www.cnblogs.com/hoojo/archive/2012/07/13/2590593.html 在CXF2版本中,整合Spring3发布CXF WebService就更加简单 ...

  2. JAVAEE——BOS物流项目07:WebService入门、apache CXF入门、基于CXF发布CRM服务

    1 学习计划 1.WebService入门 n 什么是WebService n 调用网络上的WebService服务 n SOAP和WSDL概念 n 基于JDK1.7发布一个简单的WebService ...

  3. Apache CXF实现WebService入门教程(附完整源码)

    Apache CXF实现WebService非常简单实用,只需要几步就可以实现一个简单的web service. 首先我们需要新建一个maven项目,在pom中添加依赖和jetty作为测试的web s ...

  4. Apache CXF入门

    CXF简介 Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了.CXF 继承了 Celtix 和 XFire 两大 ...

  5. webservice入门实例,CXF方式

    1.下载CXF,及先关jar包. CXF 下载地址:http://cxf.apache.org/download.html,选择"File"列中的zip格式下载.解压后可以看到一些 ...

  6. Apache CXF实现WebService发布和调用

    第一种方法:不用导入cxf jars 服务端: 1. 新建Web工程 2.新建接口和实现类.测试类 目录结构图如下: 接口代码: package com.cxf.spring.service; imp ...

  7. 分布式架构探索 - 2. WebService RPC框架之Apache CXF

    Apache CXF是一个开源的WebService RPC框架. 例子: 1. 新建一个maven web项目, 添加pom 如下: <?xml version="1.0" ...

  8. 使用apache cxf实现webservice服务

    1.在idea中使用maven新建web工程并引入spring mvc,具体可以参考https://www.cnblogs.com/laoxia/p/9311442.html; 2.在工程POM文件中 ...

  9. 使用CXF发布的WebService报错:org.apache.cxf.interceptor.Fault: The given SOAPAction does not match an operation

    场景:JAVA语言使用CXF搭建WebService发布报错 错误信息:org.apache.cxf.interceptor.Fault: The given SOAPAction does not ...

随机推荐

  1. Delphi下使用Oracle Access控件组下TOraSession控件链接

    Delphi下使用Oracle Access控件组下TOraSession控件链接数据库,使用  orsn1.Options.Direct:=true;  orsn1.Server:=IP:Port: ...

  2. unity3d - new 不出的单例

    可能习惯了写单例的朋友,或者常规的单例模式 会这样做 private static Single instance; public static Single Instance(){ if (inst ...

  3. .NET Remoting原理及应用实例:

    Remoting:(本文摘自百度百科) 简介:        什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方 式.从微软的产品角度来看,可以说Remoting就是DCOM的一种升 ...

  4. JAVA通过HTTP访问:Post+Get方式(转)

    public class TestGetPost { /** * 向指定URL发送GET方法的请求 * @param url 发送请求的URL * @param param 请求参数,请求参数应该是n ...

  5. 第二章 第二个spring-boot程序(转载)

    本编博客转发自:http://www.cnblogs.com/java-zhao/p/5336369.html 上一节的代码是spring-boot的入门程序,也是官方文档上的一个程序.这一节会引入s ...

  6. UIWebView加载页面

    在页面中 加载了一个webView 当点击该webView的页面 需要获取webView中的url. 在push出来的另一个页面中,重新初始化一个webView加载 下面这个方法 在webView加载 ...

  7. who is the middle

    Description FJ is surveying his herd to find the most average cow. He wants to know how much milk th ...

  8. weborm 简单控件

    Label - 显示文字,编译后是spanLiteral - 显示文字,编译后没有形成元素 只是文字 一般用来输出 js代码内容 TextBox - 文本框 TextMode -普通文本框 singl ...

  9. js 根据年月获取当月有多少天_js获取农历日期_及Js其它常用有用函数

    //根据年月获取当月有多少天 function getDaysInMonth(year, month) { debugger; //parseInt(number,type)这个函数后面如果不跟第2个 ...

  10. 斯坦福第十三课:聚类(Clustering)

    13.1  无监督学习:简介 13.2 K-均值算法 13.3  优化目标 13.4  随机初始化 13.5  选择聚类数 13.1  无监督学习:简介 在这个视频中,我将开始介绍聚类算法.这将是一个 ...