posts - 28, comments - 27, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

webservice——AXIS开发

Posted on 2006-09-18 15:05 小小凉粉 阅读(449) 评论(0)  编辑  收藏 所属分类: JavaEE
昨天写完程序并部署Service之后,一直都在抛出接口不匹配的异常,于是我就写了个简单的接口,只传入一个String类型的参数,结果运行正常。然后我又写了个只传入Integer类型参数的接口,果不出所料,又发生了接口不匹配的异常。接下来我就开始改Client端代码:

params.addElement(new Parameter("eventStatus",Integer.class, new Integer(1), null));
params.addElement(new Parameter("eventStatus",int.class, new Integer(1), null));
params.addElement(new Parameter("eventStatus",int.class, 1, null));
params.addElement(new Parameter("eventStatus",Intege.class, 1, null));
结果统统失败,弄的我都要抓狂了。

今天到了公司以后,跟组长说了这件事情,组长说让我换用AXIS试试看,我到ws.apache.org/axis上面看了看文档,在user guide里面给出的例子和我的代码差别很大,我就只好按着它的例子重新改代码

写完以后,配环境变量配的快要抓狂……部署的时候又是一头雾水……最后始终没有成功……最后回到宿舍才想到,AXIS和Apache SOAP Server不过都是服务器而已,不应该存在规范上的区别,也就是不应该会影响到客户端的程序,于是我就按照最开始的代码,把Service部署好,启动 Tomcat,从WSDL中找到对应的信息

<wsdl:service name="ServiceService">
 <wsdl:port binding="impl:serviceSoapBinding" name="service">
  <wsdlsoap:address location="http://localhost:8080/axis/services/service" />
 </wsdl:port>
</wsdl:service>

在xml配置文件中,把location赋值给URL,把name赋值给TargetObjectURI,运行Client,一切OK
不知道是不是因为机器的问题,在公司的思路远远不如在宿舍啊

不过今天至少让我很熟练的掌握了如何手工部署AXIS服务,创建一个wsdd文件,我把它命名为deploy.wsdd

<deployment name="lijian" xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  <service name="service" provider="java:RPC">
    <parameter name="className" value="Service" />
    <parameter name="allowedMethods" value="setAlarmInfo" />
  </service>
</deployment>


把这个文件放到Tomcat/webapps/axis/WEB-INF/目录下,把service的类放到WEB-INF/classes/目录下,把 axis.jar;jaxrpc.jar;commons-logging-1.0.4.jar;commons-discovery-0.2.jar;saaj.jar 放到classpath里面,启动Tomcat之后,到webapps/axis/WEB-INF目录下运行:
java org.apache.axis.client.AdminClient deploy.wsdd
之后可以访问
http://localhost:8080/axis/
来查看刚才部署的service对应的wsdl了

只有注册用户登录后才能发表评论。


网站导航: