WebService-03-使用CXF开发服务端和客户端
写在前面的话
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发布也很类似,只是在提供服务类的类型时,此处指定了实现类。
WebService-03-使用CXF开发服务端和客户端的更多相关文章
- 使用Apache CXF开发WebServices服务端、客户端
在前一篇的博客中,我使用Xfire1.x来开发了WebServies的服务端. 但是如果你访问Apache的官网,可以看到xfire已经被合并了. 最新的框架叫做CXF. Apache CXF = C ...
- WebService学习总结(四)--基于CXF的服务端开发
本节将实践目前最流行的第二种web service 发布和调试框架 CXF Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩 ...
- app开发中如何利用sessionId来实现服务端与客户端保持回话
app开发中如何利用sessionId来实现服务端与客户端保持回话 这个问题太过于常见,也过于简单,以至于大部分开发者根本没有关注过这个问题,我根据和我沟通的开发者中,总结出来常用的方法有以下几种: ...
- 用beego开发服务端应用
用beego开发服务端应用 说明 Quick Start 安装 创建应用 编译运行 打包发布 代码生成 开发文档 目录结构说明 使用配置文件 beego默认参数 路由设置 路由的表述方式 直接设置路由 ...
- WCF开发的流程-服务端和客户端之间的通讯(内含demo讲解)
讲解技术之前,恳请博友让我说几句废话.今天是我第一在博客园发布属于自己原创的博文(如有雷同,那是绝对不可能的事,嘿嘿).之前一直是拜读各位博友的大作,受益匪浅的我在这对博友们说声谢谢,谢谢你们的共享! ...
- IDEA创建WebService服务端与客户端
创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 Tools 的 ...
- 【.NET6】gRPC服务端和客户端开发案例,以及minimal API服务、gRPC服务和传统webapi服务的访问效率大对决
前言:随着.Net6的发布,Minimal API成了当下受人追捧的角儿.而这之前,程序之间通信效率的王者也许可以算得上是gRPC了.那么以下咱们先通过开发一个gRPC服务的教程,然后顺势而为,再接着 ...
- C# 编写WCF简单的服务端与客户端
http://www.wxzzz.com/1860.html Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Win ...
- python thrift 服务端与客户端使用
一.简介 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, ...
随机推荐
- Java 自定义日志写入
/** * 将信息写入到日志 * @param content * @return * @throws IOException */ public static boolean writeLog(St ...
- Excel 公式(细节若干)
查找与引用: 1.如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用 MATCH 函数而不是 LOOKUP 函数. 2.VLOOKUP的第一个参数允许使用通配符“*”来表示包含的意思,把*放在字 ...
- WCF技术剖析之六:为什么在基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效
原文:WCF技术剖析之六:为什么在基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效 本篇文章来源于几天前一个朋友向我咨询的问题.问题是这样的,他说他采用ASP.NET应用 ...
- NoSQL架构实践
经常有朋友遇到困惑,看到NoSQL的介绍,觉得很好,但是却不知道如何正式用到自己的项目中.很大的原因就是思维固定在MySQL中了,他们问得最多的问题就是用了NoSQL,我如何做关系查询.那么接下来,我 ...
- CSU1664: 防水堤坝
Description 在太平洋的一个小岛上,岛民想要建立一个环岛的堤坝,我们能够将小岛简化为一个二维平面,你须要使用K条边(这些边要么是水平或者垂直长度为1的边,要么是45度倾斜的长度为√2的边)围 ...
- javascript 中 事件流和事件冒泡
一.事件流 是描述页面接受事件的顺序,IE 使用的是时间冒泡流;而Netscape的事件采用的是事件捕获流.1.事件冒泡JS 和 HTML是通过事件的方式实现交互.事件冒泡 开始元素,将事件逐级传递, ...
- cocos2d-x 精灵移动
在HelloWorldScene.h中声明 class HelloWorld : public cocos2d::CCLayer { public : ...... CCPoin ...
- ubuntu 安装maven提示出错 The program 'mvn' can be found in the following packages
问题: I am trying to install apache maven 3 in Ubuntu 12.04 lts. What I did was open the terminal then ...
- Windows下用Mingw编译Boost.Regex库
下载Boost库,解压. 定位到regex库文件夹下. GCC所对应的MAKEFILE为gcc.mak 进入命令提示符下,输入make -f gcc.mak 这是如果直接按回车执行的话,会出现错误: ...
- 查看内存数据的函数(ByteToHex和ByteToBin,最终都变成String)
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...