写在前面的话

前面两节说了使用Java提供的包开发服务端和客户端,现在使用CXF来开发,CXF提供了两个类发而服务,一个是ServerFactoryBean,另一个是JaxWsServerFactoryBean,我们将分别使用这两个类发而一个简单的服务,并提供与JaxWsServerFactoryBean类发布的服务的客户端。

JaxWsServerFactoryBean方式

服务接口


package com.wds.ws.server.cxf;

import javax.jws.WebService;

/**
* 此处必须添加@WebServer注解,若不添加,则发布的服务当中无任何方法
* @author wds
*
*/
@WebService
public interface HelloService {
public String sayHello(String name);
}

服务实现


package com.wds.ws.server.cxf;

import java.util.Date;

/**
* 服务实现类
* @author wds
*
*/
public class HelloServiceImpl implements HelloService { @Override
public String sayHello(String name) {
String s = new Date() + " " + name;
System.out.println("Server:" + s);
return s;
} }

发布类


package com.wds.ws.server.cxf;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

/**
* 使用CXF的ServerFactoryBean发布服务
* @author wds
*
*/
public class JaxWsServerFactoryBeanPublish { /**
* @param args
*/
public static void main(String[] args) { //实例化ServerFactoryBean
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); //发布服务的地址
factory.setAddress("http://localhost:567/JaxWsServerFactoryBeanHelloworld"); //提供服务类的类型(接口类型)
factory.setServiceClass(HelloService.class); //提供服务的实例
factory.setServiceBean(new HelloServiceImpl()); //发布服务
factory.create();
} }

客户端


使用以下命令

wsdl2java -p com.wds.client.jaxws http://localhost:567/JaxWsServerFactoryBeanHelloworld?wsdl

关于wsdl2java的命令在WebService-02中也有说过,此处增加了一p参数,此参数说明指定包结构,复制到客户端的工程中,测试类如下:

package com.wds.client.jaxws;

public class JaxWsClientTest {

	/**
* @param args
*/
public static void main(String[] args) {
HelloServiceService factory = new HelloServiceService();
HelloService hs = factory.getHelloServicePort();
System.out.println(hs.sayHello("wds"));
} }

ServerFactoryBean

服务的接口和实现与JaxWsServerFactoryBean无特别大区别,只是无须写@WebService注解,发布类代码如下:


package com.wds.ws.server.cxf;

import org.apache.cxf.frontend.ServerFactoryBean;

/**
* 使用CXF的ServerFactoryBean发布服务
* @author wds
*
*/
public class ServerFactoryBeanPublish { /**
* @param args
*/
public static void main(String[] args) { //实例化ServerFactoryBean
ServerFactoryBean factory = new ServerFactoryBean(); //发布服务的地址
factory.setAddress("http://localhost:5678/ServerFactoryBeanHelloworld"); //提供服务类的类型
factory.setServiceClass(HelloServiceImpl.class); //提供服务的实例
factory.setServiceBean(new HelloServiceImpl()); //发布服务
factory.create();
} }

其与JaxWsServerFactoryBean发布也很类似,只是在提供服务类的类型时,此处指定了实现类。


客户端的编写方式与JaxWsServerFactoryBean方式相同,不在详细列出。

WebService-03-使用CXF开发服务端和客户端的更多相关文章

  1. 使用Apache CXF开发WebServices服务端、客户端

    在前一篇的博客中,我使用Xfire1.x来开发了WebServies的服务端. 但是如果你访问Apache的官网,可以看到xfire已经被合并了. 最新的框架叫做CXF. Apache CXF = C ...

  2. WebService学习总结(四)--基于CXF的服务端开发

    本节将实践目前最流行的第二种web service 发布和调试框架  CXF Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩 ...

  3. app开发中如何利用sessionId来实现服务端与客户端保持回话

    app开发中如何利用sessionId来实现服务端与客户端保持回话 这个问题太过于常见,也过于简单,以至于大部分开发者根本没有关注过这个问题,我根据和我沟通的开发者中,总结出来常用的方法有以下几种: ...

  4. 用beego开发服务端应用

    用beego开发服务端应用 说明 Quick Start 安装 创建应用 编译运行 打包发布 代码生成 开发文档 目录结构说明 使用配置文件 beego默认参数 路由设置 路由的表述方式 直接设置路由 ...

  5. WCF开发的流程-服务端和客户端之间的通讯(内含demo讲解)

    讲解技术之前,恳请博友让我说几句废话.今天是我第一在博客园发布属于自己原创的博文(如有雷同,那是绝对不可能的事,嘿嘿).之前一直是拜读各位博友的大作,受益匪浅的我在这对博友们说声谢谢,谢谢你们的共享! ...

  6. IDEA创建WebService服务端与客户端

    创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 Tools 的 ...

  7. 【.NET6】gRPC服务端和客户端开发案例,以及minimal API服务、gRPC服务和传统webapi服务的访问效率大对决

    前言:随着.Net6的发布,Minimal API成了当下受人追捧的角儿.而这之前,程序之间通信效率的王者也许可以算得上是gRPC了.那么以下咱们先通过开发一个gRPC服务的教程,然后顺势而为,再接着 ...

  8. C# 编写WCF简单的服务端与客户端

    http://www.wxzzz.com/1860.html Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Win ...

  9. python thrift 服务端与客户端使用

    一.简介 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, ...

随机推荐

  1. C# - 使用皮肤

    运行效果: 项目目录结构: 主窗体代码: using System; using System.Collections.Generic; using System.ComponentModel; us ...

  2. openssl生成pem,密钥证书的创建

    使用OpenSSL生成证书 首先得安装OpenSSL软件包openssl,安装了这个软件包之后,我们可以做这些事情: o Creation of RSA, DH and DSA Key Paramet ...

  3. AsyncTask的用法总结

    这几天被AsyncTask虐得不行,在此总结下 首先: AsyncTask的参数介绍 在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占 ...

  4. javascript每日一练(四)——DOM二

    一.DOM的创建,插入,删除 createElement(标签名) appendChild(节点) insertBefore(节点,原有节点) removeChild(节点) <!doctype ...

  5. C#游戏框架uFrame

    C#游戏框架uFrame兼谈游戏架构设计 c#语言规范 阅读目录 1.概览 2.基本概念 3.依赖注入 4.Manager of Managers 5.利用UniRX实现响应式编程 6.研究总结 回到 ...

  6. 基于 SSH 的工具叫 sshfs. sshfs 可以让你在本地直接挂载远程主机的文件系统

    另外一个很赞的基于 SSH 的工具叫 sshfs. sshfs 可以让你在本地直接挂载远程主机的文件系统. $ sshfs -o idmap=user user@hostname:/home/user ...

  7. Windows通过远程桌面访问Ubuntu

    关于Windows通过远程桌面访问Ubuntu 问题及目标 Window环境通过远程桌面访问Ubuntu Ubuntu机器端   1.  安装所需软件包   sudoapt-get install x ...

  8. 基于visual Studio2013解决面试题之0704判断牌是否顺子

     题目

  9. UVA 6480 Zombie Invasion(模拟退火)

    A group of survivors has arrived by helicopter to an isolated island. The island is made up of a lon ...

  10. Android中View绘制优化之三---- 优化View

    本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 译三: 优化视图 关于如何设计自定义View以及响应触摸时间等,请看Android developer : 地 ...