加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webservice-XFire开发一个简单的web服务

发布时间:2020-12-17 01:28:46 所属栏目:安全 来源:网络整理
导读:在这一节,你将了解到如何将一个普通的 java 文件转换为一个 web 服务, services.xml 文件是如何定义的,如何发布这个 web 服务、如何获得这个服务的 WSDL 、如何创建 Client 代码、如何测试这个 web 服务。 首先打开 Eclipse ,创建一个普通的 java 工程,

在这一节,你将了解到如何将一个普通的 java 文件转换为一个 web 服务, services.xml 文件是如何定义的,如何发布这个 web 服务、如何获得这个服务的 WSDL 、如何创建 Client 代码、如何测试这个 web 服务。
首先打开 Eclipse ,创建一个普通的 java 工程,将 xfire 所需的 jar 和 xfire 的 jar 加入到工程所需的类库引用中。创建一个简单的 java 文件,这个 java 文件简单到只提供一个 add 方法。

package com.kuaff.xfire.samples;
public class MathService
{
public long add( int p1,int p2)
{
return p1 + p2;
}
}

在 src 目录下创建 META-INF/xfire 目录,然后在 META-INF/xfire 目录下创建 services.xml 文件,文件内容为:
<beans xmlns=”http://xfire.codehaus.org/config/1.0″>
<service>
<name>MathService</name>
<namespace>http://www.kuaff.com/xfire/samples/MathService</namespace>
<serviceClass>com.kuaff.xfire.samples.MathService</serviceClass>
</service>
</beans>
这个文档定义了你要发布的 web 服务,这个定义了一个名为 MathService 的服务,服务类为 com.kuaff.xfire.samples.MathService 。
这样我们的一个简单的 web 服务就开发完成了,下面就要把它发布出去。
将工程 bin 目录下的所有的文件复制到第一节中配置的 tomcat/webapps/xfire/WEB-INF/classes 文件夹下,启动 tomcat ,你就可以检查这个 web 服务是否发布成功了。
打开浏览器,在浏览器地址栏中输入 http://localhost:8080/xfire/services/ ,正常情况下应该浏览器应该显示类似下面的页面。

Available Services:

  • MessageHistoryService [wsdl]

注意:请在浏览器中输入 http://localhost:8080/xfire/services/ 而不是 http://localhost:8080/xfire/services ,虽然两者显示的页面相同,但是点击页面上的链接,后者的链接会出错,因为后者后面少加了一个“ / ”。点击 [wsdl] 链接,可以查看这个 web 服务的 wsdl 文档。

如果在你的机器上的显示如上面所示,则说明你的这个 web 服务发布成功,可以正常提供基于 http 的 web 服务。

下面一个问题就是如何开发一个 Client ,来消费(使用)这个 web 服务。

XFire 、 Axis 、 asp.net 以及其它的一些商业产品都提供了根据 wsdl 文档创建客户端代码的工具。这里采用 Xfire 提供的 wsgen 工具来创建客户端的访问代码。

Wsgen 是 xfire 提供的一个 ant task , task 的申明如下:

<taskdef name= “wsgen” classname= “org.codehaus.xfire.gen.WsGenTask” classpathref= “xfire 的 jar 路径 ” />

这样,就可以在 build.xml 文件中使用这个 task :

<wsgen outputDirectory= “client” wsdl= “MathService.wsdl” package= “com.kuaff.xfire.samples” />

outputDirectory 属性定义创建的代码所在的文件夹, wsdl 是 web 服务的 wsdl 文件, package 代表创建的代码的 packege 。还可以通过 binding 属性制定 bind 类型: jaxb 或者是 xmlbeans ,

这样,就会在 client 文件夹下创建多个 java 文件,这些文件提供了访问 web 服务的方法。 在这里声明一点,创建的代码大量的使用了 java 注释,这个 JSE5 中提供的新特性,所以你需要使用 JSE5 编译, Eclipse 也必须要 3.1 以上的版本。 这段 ant 脚本将创建三个文件: MathServicePortType 、 MathServiceImpl 和 MathServiceClient 。 MathServicePortType 是这个 web 服务的客户端接口存根、 MathServiceImpl 实现了这个接口。 MathServiceClient 封装了访问这个 web 服务的方法。 最后,你可以创建一个单元测试类,用来测试这个客户端类。这个类的内容如下: package com.kuaff.xfire.samples; import junit.framework.TestCase; public class MathServiceClientTest extends TestCase { public void testAdd() { MathServiceClient client = new MathServiceClient(); MathServicePortType ms = client.getMathServiceHttpPort(); long result = ms.add(10,20); assertEquals (result,30); } }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读