使用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例子的更多相关文章

  1. 使用 CXF 做 webservice 简单例子(转载)

    使用 CXF 做 webservice 简单例子     Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这 ...

  2. webService框架CXF的简单使用

    最近本来已经将上一个项目交活,全身心投入了另外项目的前端的开发工作.可之前的项目经理通知我,之前的项目需要做一个webService的功能,于是稍微做了一下webService,可是忘了通知我现在的项 ...

  3. 使用Multiplayer Networking做一个简单的多人游戏例子-3/3(Unity3D开发之二十七)

    使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Netw ...

  4. 使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 ...

  5. 使用Multiplayer Networking做一个简单的多人游戏例子-1/3(Unity3D开发之二十五)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51006463 ...

  6. (转)Web Service入门简介(一个简单的WebService示例)

    Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...

  7. 利用VS2008发布一个简单的webservice

    一个开发好的webservice,怎样发布出去,供其他电脑访问呢? 本文将介绍如何发布一个简单的webservice,其中的内容都是在网上查看别人文章,自己仿照着做了一遍,因此,难免会发生错误,如果发 ...

  8. Spring Boot SOAP Webservice例子

    前言 本文将学习如何利用Spring boot快速创建SOAP webservice服务: 虽然目前REST和微服务越来越流行,但是SOAP在某些情况下,仍然有它的用武之地: 在本篇 spring b ...

  9. Web Service入门简介(一个简单的WebService示例)

    Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...

随机推荐

  1. Linux实战案例(3)创建和删除用户

    建用户: adduser phpq                            //新建phpq用户passwd phpq                            //给php ...

  2. Java设计模式(七)Decorate装饰器模式

    一.场景描述 (一)问题 系统中最初使用Crystal Report(水晶报表)工具生成报表,并将报表发送给客户端查看,此时定义一CrystalReport工具类即可完成水晶报表的生成工作. 后续报表 ...

  3. spring cloud eureka显示ip

    eureka.instance.preferIpAddress=trueeureka.instance.instance-id=${spring.cloud.client.ipAddress}:${s ...

  4. Linux-centos-7.2-64bit 安装配置mysql

    2018-04-12 安装在/usr/local/下,配置文件在/etc/my.ini 1.下载mysql安装包到 /usr/local/software cd /usr/local/software ...

  5. Spring(四):Spring整合Hibernate,之后整合Struts2

    背景: 上一篇文章<Spring(三):Spring整合Hibernate>已经介绍使用spring-framework-4.3.8.RELEASE与hibernate-release-5 ...

  6. $rootscope说明

    scope是AngularJS中的作用域(其实就是存储数据的地方),很类似JavaScript的原型链 .搜索的时候,优先找自己的scope,如果没有找到就沿着作用域链向上搜索,直至到达根作用域roo ...

  7. 区块链3.0:拥抱EOS

    EOS是当下最火的区块链技术,被社会广泛看好为下一代区块链3.0.不同于以太坊的学习,EOS的主语言是C++,本文作为EOS研究的首篇文章,重点介绍EOS的创新点,它的周边生态,各种概念原理的解释,以 ...

  8. EF CodeFirst方式 Fluent Api配置

    一.One-to-One Relationship[一对一关系] 两个表之间,只能由一个记录在另外一个表中.每一个主键的值,只能关联到另外一张表的一条或者零条记录.请记住,这个一对一的关系不是非常的普 ...

  9. Git + Maven + Jenkins 实现分布式部署

    一.安装 和 准备工作 我们选择了用 Tomcat 服务器下 war 包的安装方式.Jenkins 的下载地址:http://mirrors.jenkins-ci.org/,打开链接后,表格有war列 ...

  10. 关于手机APP开发的一些常见误解

    移动应用不适用于小型企业和创业公司 如果你想要开发一款移动APP,那么在前期开发一种偏见的态度并不是一个好主意.如果你认为移动APP只有跨国公司和大企业创业者才会去开发,那么你可能错过了成功的捷径.而 ...