分享

在eclipse的环境下使用wtp开发web service

 minwh 2006-06-08

                   

很多人知道MyEclipse是一款很不错的开发j2ee的eclipse的插件, 但是MyEclipse到现在的版本中都没有提供对web service良好的支持。于是找来找去, 还好找到了另外一个对web service支持的比较好的插件, 那就是eclipse的官方j2ee插件wtp.

开发环境:eclipse3.1 + wtp0.7 + tomcat5.5

一切准备就绪, 下面就可以开始第一个自己的web service,心中充满了期待。 :)

step 1:新建web project 
        将eclipse的perspective切换到wtp提供的j2ee的视图下。新建一个Dynamic web project取名为webservicedemo, 可以看到在webservicedemo project下面有三个文件目录。其中JavaSource是java源代码的目录, WebContent是web资源的目录, 包括jsp, web.xml等等资源。

step2: 新建一个简单的java class。
        在JavaSource下新建一个自己的java class, 比如com.hairroot.test.logic. TransferMoney 
         public boolean transferMoney(float amount, String fromAccoutId, String
                    toAccountId) {
                System.out.println("transfering "+amount+" money from Account "
                            + fromAccoutId+" to "+toAccountId);
                return true;
         }

step3: 使用wtp发布java class.
        右键TransferMoney class, 在右键菜单中可以看到有wtp提供的一个Web Services的支持。点击Create Web Service.这样按照wtp提供的wizard, 一步一步走下去就可以很顺利地将自己的java class发布成为web service.

事情就是这么简单, 当发布成功并且我可以在wtp自己为我建的webservicedemoClient的环境下测试自己的web service的时候, 心中还是万分激动的。:)

事实上, wtp0.7使用的axis1.2的版本来对web service来进行支持。 没有axis学习经验的人可能完全不知道自己的web service是怎么被发布出来的, 不过这都没有关系, 重要的是使用wtp的确能够使开发-发布web service变得很简单。

那么对于一个项目而言, 开发访问web service的模式是怎样的?
Server Side:
           对于很多旧系统而言, 对外提供web service服务可能是到后期才想到的问题。并非所有的类型的java class都适合发布为web service, 对于一个设计的比较好的j2ee系统来说,只有bussiness logic这一层比较适合发布为web service, 可能很多系统在框架下开发不是很重视j2ee的层次,也不去分bussiness logic, 这样的系统如果要提供某些web service, 那就要重新编写代码了。然而一般来说, 将bussiness logic发布为web service是一个比较好的选择。上面的TransferMoney这个类可能看起来很简单, 都是一些primitive type的参数, 对于复杂的javabean或者一些非javabean对象, axis同样能够良好的支持。


Client Side:
           在Server Side使用wtp发布了一个Web Service, wtp还会自动为该java class生成对应的wsdl文件,也不需要程序员自己去写, 还是挺方便的。 
          对Client端开发来说, 有两种方式可以访问某个Web Service:
          1.下载wsdl,  根据wsdl里边提供的endpointurl,  还有request, response的格式,使用axis的api来访问某个web service。但是这个方法显然是个笨办法。更好的方法是下面的方法
          2. 通过axis的工具来利用wsdl来自动生成客户端的Endpoint Interface, Proxy, Service, ServiceLocator, Stubd等类。让客户端的调用跟直接调用本地的java对象一样的简单, 而不用去管什么namespace, qname的东西。
           事实上wtp在发布web service的时候, 有一个选项就是是否生成客户端的代码。所以甚至在发布的时候就可以直接将Stub代码发给Client来使用。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多