博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebService-03-使用CXF开发服务端和客户端
阅读量:5977 次
发布时间:2019-06-20

本文共 2455 字,大约阅读时间需要 8 分钟。

写在前面的话

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

JaxWsServerFactoryBean方式

服务接口

package com.wds.ws.server.cxf;import javax.jws.WebService;/** * 此处必须添加@WebServer注解,若不添加,则发布的服务当中无任何方法 * @author wds * */@WebServicepublic 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方式相同,不在详细列出。

 

转载地址:http://ogiox.baihongyu.com/

你可能感兴趣的文章
采用Servlet Listener方式运行Liquibase
查看>>
TCP-IP 学习(三) TCP
查看>>
对比两个无序整形数组相似度问题算法
查看>>
批量有效地修改package名
查看>>
android或ios app请求参数格式
查看>>
Camera Vision - video surveillance on C#
查看>>
如何理解网络连接中的"3次握手"?
查看>>
使用Dubbo服务出现java.io.IOException: invalid constant type: 18异常解决办法
查看>>
PYKit目录
查看>>
JSON使用总结
查看>>
php-redis中文帮助手册_系统相关_config_eval_evalSha_script...
查看>>
Tomcat Context配置
查看>>
CentOS6.5安装ntopng
查看>>
mysql事务rollback&commit
查看>>
Node.js搭建Web服务器
查看>>
实现Instagram的Material Design概念设计
查看>>
php5.3安装oracle的扩展oci8与pdo_oci
查看>>
发送超长短信的协议格式
查看>>
CentOS 6.x 快速安装L2TP ***
查看>>
mysql主主复制(双主复制)配置步骤
查看>>