使用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

原文地址:https://www.cnblogs.com/guofz/p/8921954.html

时间: 2024-10-29 18:36:10

使用CXF做简单的WebService例子的相关文章

webService框架CXF的简单使用

最近本来已经将上一个项目交活,全身心投入了另外项目的前端的开发工作.可之前的项目经理通知我,之前的项目需要做一个webService的功能,于是稍微做了一下webService,可是忘了通知我现在的项目经理,所以现在的项目经理以为我在做现在项目的前端工作,结果搞得很不好.然而我还是有私心的,因为目前两个项目需要使用的技术是我没有接触过的,而我的一个臭毛病就是对想做的喜欢做的技术会有莫名的兴奋感,每天早上起来的时候想到自己今天要将一个自己不了解的技术应用于工作中,就会很兴奋,恨不得立刻开始工作.总

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

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Networking做一个简单的多人游戏例子-3/3 7. 在网络中控制Player移动 上一篇中,玩家操

利用VS2008发布一个简单的webservice

一个开发好的webservice,怎样发布出去,供其他电脑访问呢? 本文将介绍如何发布一个简单的webservice,其中的内容都是在网上查看别人文章,自己仿照着做了一遍,因此,难免会发生错误,如果发现错误,希望各位能够指出,谢谢!! 1.准备工作 1.1一个C#开发好的webservice实例.参考下面例子: http://www.cnblogs.com/LCCRNblog/p/3716406.html 1.2安装好IIS,安装过程: http://www.cnblogs.com/LCCRNb

一个简单的Webservice的demo,简单模拟服务

前段时间一直在学习WCF,匆匆忙忙的把<WCF全面解析>和<WCF服务编程>看了一遍,好多东西都不是很懂,又听了一下WCF分布式开发的网络教程,算是马马虎虎的明白点了.回顾了一下Webservice,将二者进行比较学习.考虑到以后的发展,当时决定学习WCF,希望自己在不久的将来能将WCF学的稍微精通点吧.这几天又将Webservice看了一遍,回想当时学习Webservice处处碰到坑,由于没人指点,连最基本地点发布都折腾好长时间,只能一点一点的填坑跳坑.这几天闲了,想写一个简单的

webService总结(一)——使用CXF公布和调用webService(不使用Spring)

CXF和Axis2是两个比較流行的webService框架,接下来我会写几篇博客简介怎样使用这两种框架. 首先,先简介一下CXF的使用. CXF公布webService有多种方法.这里我介绍三种: 1.不使用Spring.CXF自己主动公布webService 2.不使用Spring,CXF手动公布webService 3.使用Spring + CXF公布webService 这篇博客以实例介绍第一种方法--不使用Spring,CXF自己主动公布webService. 服务端: 文件夹结构例如以

做简单直接的事情

回顾自己工作四年多的时间,很多时候都是在一个等待的状态,真的没有好好去认真的认识一下我们周围的世界,没有好好了解做人做事的方法和套路.从编程的角度来看,世间万物皆对象,那么更加抽象一层的概念就是万物发展皆套路,而身处局中的我们也是如此,"简单直接"的使用套路远胜过浑浑噩噩的等待和迷茫. 这里所说的套路是什么呢,并不是指一些投机取巧的方法,正好相反,使用这些套路之前,我们要了解我们周围的社会环境是如何运作的,就像在选择一种框架和语言时,我们需要知道软件的运用场景是怎样的,如果只是套用所谓

利用Java编写简单的WebService实例

使用Axis编写WebService比较简单,就我的理解,WebService的实现代码和编写Java代码其实没有什么区别,主要是将哪些Java类发布为WebService.下面是一个从编写测试例子到发布WebService,以及编写测试代码的过程介绍. 本例子的WebService提供了两个方法,分别是sayHello和sayHelloToPerson,第一个只是返回一个"Hello"字符串,没有参数,第二个函数接受一个字符串作为参数,返回"Hello 参数值",

使用CXF框架,发布webservice服务,并使用客户端远程访问webservice

使用CXF框架,发布webservice服务,并使用客户端远程访问webservice  1. CXF介绍 :soa的框架    * cxf 是 Celtrix (ESB框架)和 XFire(webserivice) 合并而成,并且捐给了apache      * CxF的核心是org.apache.cxf.Bus(总线),类似于Spring的 ApplicationContext    * CXF默认是依赖于Spring的    * Apache CXF 发行包中的jar,如果全部放到lib中

Nginx Rewrite的应用-根据访问平台做简单跳转

Nginx Rewrite的应用-根据访问平台做简单跳转 Rewrite模块简介 Rewrite最主要的作用就是对URL进行重写,即重定向.举个简单的例子,我们用电脑打开淘宝显示出的页面与手机打开显示出的页面,或者是IE与Chrome浏览器打开的页面,有着特别大的差别,这就是使用了Rewrite模块,为用户提供最合适的页面. Rewrite的配置 一. 在配置之前请先安装好Nginx.不会安装的同学请看我之前写过的Nginx的编译安装.二. 下面我们来编辑Nginx的主配置文件: [[email