SOA:CXF下基于已发布WSDL获取远程服务

huafenged 贡献于2011-07-06

作者 zhaoyl  创建于2008-05-07 02:11:00   修改者zhaoyl  修改于2008-05-08 01:35:00字数4355

文档摘要:
关键词:

SOA:CXF下基于已发布WSDL获取远程服务 赵永亮 2018-10-23 7:19:44 新手教程 阅读本文前提: 假设您已经阅读了我另外一篇不成熟的文章<< eclipse3.3+CXF2.1配置 webservice开发环境>> 地址:http://zhaoyl.javaeye.com/admin/blogs/183779 本文目标: 1、进一步熟悉使用soa tools 2、使用soa tool发布已经生成的wsdl,向外界提供远程服务 3、使用wsdl first project方式 ,根据服务提供商发布的wsdl,调用远程服务 4、code first 和wsdl first 区别及code first带来的问题 后续文章目标: 1、spring下使用cxf发布服务(服务端)并调用服务接口(客户端) 2、wsdl first 并介绍wsdl编写规则 声 明: 本文为我手写而成,未抄袭其他人之作品等。如确实有雷同,请告知 文中若有错误之处,请来信告知 如您转载,请保留作者信息,致谢 联系方式: QQ:252574345 MSN:lele_love_lomboz@hotmail.com 第一部分 发布服务并使用客户端调用 一.上篇文章续 1、项目目录如下 可以看到,我们已经生成了wsdl。此时,只是定义业务接口暴露给外界,而并未提供接口的实现,即:服务将要提供的功能还没有实现。 Demo.wsdl SOA:CXF下基于已发布WSDL获取远程服务 赵永亮 2018-10-23 7:19:44 从上面的 部分可以看出,服务发布地址为http://localhost:9090/HelloPort",端口为默认的9090,在实际项目中,需要更改。这里将其改为89,即: http://localhost:89/HelloPort 二.如何实现业务接口并发布服务 1、右键项目名称demoàJAX-WS Toolsàgenerate server 自动会生成HelloImpl.java HelloServer.java 1) HelloImpl.java为”暴露”的接口实现类,对外提供的服务功能在该类完成,因为自动生成的代码比较简单并且没有返回任何信息,修改其代码如下: package org.zhaoyl.webservice; import javax.jws.WebService; @WebService(endpointInterface = "org.zhaoyl.webservice.Hello", serviceName = "HelloService") public class HelloImpl implements Hello { public static final String RETURN_STR="hello,beijing2008"; public String sayHello() { return RETURN_STR; } SOA:CXF下基于已发布WSDL获取远程服务 赵永亮 2018-10-23 7:19:44 } 2)服务发布类 package org.zhaoyl.webservice; import javax.xml.ws.Endpoint; public class HelloServer{ protected HelloServer() throws Exception { System.out.println("Starting Server"); Object implementor = new org.zhaoyl.webservice.HelloImpl(); String address = "http://localhost:9090/HelloPort"; Endpoint.publish(address, implementor); } public static void main(String args[]) throws Exception { new HelloServer(); System.out.println("Server ready..."); Thread.sleep(5 * 60 * 1000); System.out.println("Server exiting"); System.exit(0); } } 上面红色部分,修改9090端口为89 String address = "http://localhost:89/HelloPort"; 3)运行HelloServer.java 在控制台中会打印 Server ready...... 此时,在浏览器中输入服务发布地址: http://localhost:89/HelloPort?wsdl 将看到wsdl内容,表示服务成功发布并启动 三、客户端访问 我们的业务往往是根据用户提供的wsdl文件,获取客户暴露的远程接口,从而调用远程主机上的服务 假设用户提供的wsdl为:demo.wsdl 该wsdl就是我们刚才生成的wsdl 下面我们使用soa tool 自动生成客户端,并访问webservice接口提供的业务功能 SOA:CXF下基于已发布WSDL获取远程服务 赵永亮 2018-10-23 7:19:44 1、 新建wsdl first工程 在这里,是为了说明真实项目(至少我们现在的环境是这样的)中客户提供的wsdl的用法,正如前面所说,我们在项目中,客户提供的基本上都是 wsdl或者其发布地址连接,因此我们需要依靠wsdl去实现我们的业务功能 New àotheràsoa toolsàJAX-WS WSDL project 输入项目名称Client 选择cxf,nextà SOA:CXF下基于已发布WSDL获取远程服务 赵永亮 2018-10-23 7:19:44 Browseà SOA:CXF下基于已发布WSDL获取远程服务 赵永亮 2018-10-23 7:19:44 选择demo.wsdl Nextà SOA:CXF下基于已发布WSDL获取远程服务 赵永亮 2018-10-23 7:19:44 Finish SOA:CXF下基于已发布WSDL获取远程服务 赵永亮 2018-10-23 7:19:44 自动生成以上项目和代码 2、 启动远程接口服务 运行demo工程的HelloServer.java Server ready…… 3、 运行客户端程序 运行Client工程的Hello_HelloPort_Client.java 控制台输出: Invoking sayHello... sayHello.result= hello,beijing2008 客户端成功调用已发布的服务,并返回信息

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档