使用CXF做简单的WebService例子
使用Maven搭建项目测试简单的CXF实例
Server:
pom.xml:
<!-- begin CXF Server -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<!-- 如果CXF不集成到Web服务器中,必须添加该引用 -->
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.1.1</version>
</dependency>
<!-- End CXF Server -->
定义WebServer访问接口: ICXFService
package com.cxf; import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService; @WebService(name = "cxfService", targetNamespace = "http://localhost/services/testCXF")
public interface ICXFService { @WebMethod
String test1(@WebParam(name = "name")String name);
}
定义接口的具体实现:CXFServiceImpl
package com.cxf.impl; import javax.jws.WebService; import com.cxf.ICXFService; @WebService(endpointInterface = "com.cxf.ICXFService",
portName = "HelloCXF",
serviceName = "HelloCXFService",
targetNamespace = "http://localhost/services/testCXF")
public class CXFServiceImpl implements ICXFService { @Override
public String test1(String name) {
return "Hello " + name;
} }
测试服务:
package com.cxf;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import com.cxf.impl.CXFServiceImpl;
public class CXFServiceRun {
    public static void main(String[] args) {
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        factory.setServiceClass(ICXFService.class);
        factory.setAddress("http://localhost:8888/services/hello");
        factory.setServiceBean(new CXFServiceImpl());
        factory.create();
    }
}
访问: http://localhost:8888/services/hello?wsdl

Client:
创建CXF的客户端maven工程
添加 CXF 必须的 jar :
<!-- begin CXF Client -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.1</version>
</dependency>
<!-- End CXF Client -->
下载 apache 的 CXF 安装包 本次使用的是 apache-cxf-3.1.15 解压,配置环境变量就可以使用。

配置环境变量:

配置完成之后再 命令窗口 下执行 wsdl2java -help 出现如下信息表示配置成功:

执行:wsdl2java -encoding UTF-8 -d C:\Users\丰志\Desktop\cxfServer\src\main\java -p com.cxf.generate http://localhost:8888/services/hello?wsdl
-d 后面跟生成java代码的目录, -p后面跟生成代码的包名称,最后跟wsdl的链接地址(或wsdl文件路径 + 文件名称)

生成的代码目录文件:

然后将CXF生成的代码粘贴到客户端项目中(也可以直接将代码生成到eclipse中的webService的客户端工程中)
编写客户端测试:TestClient
package com.cxf.client; import java.net.MalformedURLException;
import java.net.URL; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import com.cxf.generate.CxfService;
import com.cxf.generate.ICXFServiceService; public class TestClient { public static void main(String[] args) {
//jaxws调用
// URL不是必须的,除非服务的地址有改变
// URL wsdlUrl = null;
// try {
// wsdlUrl = new URL("http://localhost:8888/services/hello?wsdl");
// } catch (MalformedURLException e) {
// e.printStackTrace();
// }
// ICXFServiceService factory = new ICXFServiceService(wsdlUrl);
//// ICXFServiceService factory = new ICXFServiceService();
// CxfService cxfService = factory.getCxfServicePort();
// String name = cxfService.test1("lisi");
// System.out.println(name); // CXF 调用
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(CxfService.class);
factory.setAddress("http://localhost:8888/services/hello");
CxfService cxfService = factory.create(CxfService.class);
String name = cxfService.test1("lisi");
System.out.println(name);
} }
两种实现方式都可以
运行成功:

源码:https://files.cnblogs.com/files/guofz/FirstCXF.rar
参考:https://blog.csdn.net/accountwcx/article/details/47082487
使用CXF做简单的WebService例子的更多相关文章
- 使用 CXF 做 webservice 简单例子(转载)
		使用 CXF 做 webservice 简单例子 Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这 ... 
- webService框架CXF的简单使用
		最近本来已经将上一个项目交活,全身心投入了另外项目的前端的开发工作.可之前的项目经理通知我,之前的项目需要做一个webService的功能,于是稍微做了一下webService,可是忘了通知我现在的项 ... 
- 使用Multiplayer Networking做一个简单的多人游戏例子-3/3(Unity3D开发之二十七)
		使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Netw ... 
- 使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)
		猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 ... 
- 使用Multiplayer Networking做一个简单的多人游戏例子-1/3(Unity3D开发之二十五)
		猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51006463 ... 
- (转)Web Service入门简介(一个简单的WebService示例)
		Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ... 
- 利用VS2008发布一个简单的webservice
		一个开发好的webservice,怎样发布出去,供其他电脑访问呢? 本文将介绍如何发布一个简单的webservice,其中的内容都是在网上查看别人文章,自己仿照着做了一遍,因此,难免会发生错误,如果发 ... 
- Spring Boot SOAP Webservice例子
		前言 本文将学习如何利用Spring boot快速创建SOAP webservice服务: 虽然目前REST和微服务越来越流行,但是SOAP在某些情况下,仍然有它的用武之地: 在本篇 spring b ... 
- Web Service入门简介(一个简单的WebService示例)
		Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ... 
随机推荐
- hdu1087 Super Jumping! Jumping! Jumping!---基础DP---递增子序列最大和
			题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1087 题目大意: 求递增子序列最大和 思路: 直接dp就可以求解,dp[i]表示以第i位结尾的递增子 ... 
- JavaScript树(一)  简介
			树的相关术语 一个树结构包含一系列存在父子关系的节点. 每个节点都有一个父节点 (除了顶部的第一个节点)以及零个或多个子节点: 位于树顶部的节点叫作根节点(11) .它没有父节点.树中的每个元素都叫作 ... 
- [LeetCode] Candy Crush 糖果消消乐
			This question is about implementing a basic elimination algorithm for Candy Crush. Given a 2D intege ... 
- 机器学习技法:10 Random Forest
			Roadmap Random Forest Algorithm Out-Of-Bag Estimate Feature Selection Random Forest in Action Summar ... 
- TOMCAT下的JNDI的配置
			一.第一种配置局部JNDI 1.在tomcat的conf目录下的server.xml的<host>标签内,添加: <Context path="/TestMvcMode&q ... 
- 规约模式(Specification Pattern)
			一.引言 最近在看一个项目的源码时(DDD),对里面的一些设计思想和设计思路有了一些疑问.当看到(Repository层)中使用了 spec.SatisfiedBy() 时,感觉有点懵.于是在项目中搜 ... 
- [HNOI 2001]矩阵乘积
			Description Input Output Sample Input 1 2 3 4 2 3 1 1 3 1 4 5 2 2 1 3 1 2 1 2 2 2 1 1 3 1 2 3 2 4 1 ... 
- POJ 3590 The shuffle Problem
			Any case of shuffling of n cards can be described with a permutation of 1 to n. Thus there are total ... 
- [HAOI2009]逆序对数列
			题目描述 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数.那么逆序对数为k的这样 ... 
- C++Primer学习——函数
			编译器能以任意顺序对形参进行求值 函数的返回类型不能是数组类型和函数类型. 函数开始时为形参分配内存,一旦函数结束,形参也就被销毁了. 如果弄成静态局部变量,那么回到程序终止结束时才被销毁. void ... 
