3. 定制发布WSDD
web服务的开发主要分两部分,一部分是服务的提供者,主要要做两件事情,一是完成服务的业务逻辑,也就是完成这个服务真正要做的事,二是完成服务的配制,也就是如何描述你的服务,以使别人能够调用,这一步是重点。另一部分就是服务的使用者,也就是客户端如何调用发布好的服务。因此在学习axis的过程中,一定要分清哪些事是服务器端要做的事,哪些事是客户端要做的事,而网上大部分资料为了讲述方便都放一起讲,让初学者迷惑不已。下面我就分别从这两部分来详细讲述。
首先还是讲述下任务吧,我们的项目SN中有很多好而且实用的算法,这些算法还总要调用服务器中的数据库读取数据,这个项目是BS模式的,现在还需要开发一个CS模式的系统,很多要做的事BS模式中已经做完了,因此,很自然的想法就是直接复用这些算法。一开始是导入jar包的形式,后来发现这样很累,不但jar包很大,更重要的是BS一改,CS就得重导jar包。耦合性太紧。因此就有了把这些算法以web service的形式发布出去的 想法,让CS程序以web 服务的形式调用这些算法!这些天做的事情就是这些,下面以一个具体的算法如何发布出去为例讲述axis中服务的定制发布。
具体任务:SemanticQueryOperate这个类中有一个方法getAdvancedSearchList()用于高级搜索,通过语义匹配从数据库中找到相应的服务。
类加上包名为:cn.edu.tju.ikse.sn.advancedSearch.SemanticQueryOperate
方法:public List<Serviceinfo> getAdvancedSearchList(AdvanceSearch advanceSearch),其中AdvanceSearch 是一个javabean,用于封装用户的查询条件,Serviceinfo也是一个javabean,用于封装服务信息。
任务就是把这个方法接口发布出去。
3.1 Web Service服务端开发
对于服务端,第一件事已经做好了,即已经把业务相关的代码写好了。。下面要做的事就是把这个服务发布出去,也就是如何写描述文件wsdd。
具体语法就不讲了,直接看写好的:snAdvancedSearch.wsdd
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="SN_AdvanceSearch" provider="java:RPC">
<parameter name="className" value="cn.edu.tju.ikse.sn.advancedSearch.SemanticQueryOperate"/>
<parameter name="allowedMethods" value="getAdvancedSearchList"/>
<beanMapping qname="myNSD:AdvanceSearch" xmlns:myNSD="urn:BeanService"
languageSpecificType="java:cn.edu.tju.ikse.sn.advancedSearch.AdvanceSearch"/>
<beanMapping qname="myNSD:Serviceinfo" xmlns:myNSD="urn:BeanService"
languageSpecificType="java:cn.edu.tju.ikse.sn.hibernate.Serviceinfo"/>
</service>
</deployment>
第三行,就是给这个服务取一个名字,这样别人就能按照名字来获取服务了。这里我们取名为SN_AdvanceSearch
第四行,指定这个服务代表的具体类,要包括包名
第五行,指定这个服务允许别人访问的方法名,这里只让访问getAdvancedSearchList,如果改成*号,则这个类所有 public的方法都能被客户端调用。
第六行,是重点,完成类型的映射,因为用到了用户自己定义的两个javaBean,因此需要映射。格式如第六行和第七行所示,qname="myNSD:AdvanceSearch" ,注意红色部分应该和你的javabean名一致,languageSpecificType也得注意下格式,java:表示这是一个java语言写的类,后面再加上具体的类。其它自定义类完全可以参考这个写法。
写完后我把这文档放在了D:\JavaTools\Tomcat 6.0\webapps\axis\WEB-INF目录下,下一步是如何把这个wsdd文档加到axis自己的配制文档server-config.wsdd里。
编写完配置发布文件之后,cmd打开windows的控制台,进入:%TOMCAT_HOME%\webapps\axis\WEB-INF 目录下键入如下命令:
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient snAdvancedSearch.wsdd
之后控制台返回Processing file deploy.wsdd 和Done processing 这两段话即说明发布成功。(注意tomcat得开着)。
当然了为了操作方便也可以写个批处理文件wsdd.bat:
set Axis_Lib=D:\JavaTools\axis-1_4\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Axis_Servlet=http://localhost:8080/axis/servlet/AxisServlet
%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% snAdvancedSearch.wsdd
pause
最终效果都是一样的,此时在server-config.wsdd会有如下代码段:
<service name="SN_AdvanceSearch" provider="java:RPC">
<parameter name="allowedMethods" value="getAdvancedSearchList"/>
<parameter name="className" value="cn.edu.tju.ikse.sn.advancedSearch.SemanticQueryOperate"/>
<beanMapping languageSpecificType="java:cn.edu.tju.ikse.sn.advancedSearch.AdvanceSearch" qname="ns2:AdvanceSearch" xmlns:ns2="urn:BeanService"/>
<beanMapping languageSpecificType="java:cn.edu.tju.ikse.sn.hibernate.Serviceinfo" qname="ns3:Serviceinfo" xmlns:ns3="urn:BeanService"/>
</service>
和原来的wsdd文件差不多。对着看就明白了。。如果熟悉了可以直接在server-config.wsdd中加上上面这段代码就行了。此时访问http://localhost:8080/axis/servlet/AxisServlet就能看到你发布的服务了,可以查看对应的wsdl文档。
服务端任务基本就完成了。。最后别忘记把服务端对应的class文件拷到D:\JavaTools\Tomcat 6.0\webapps\axis\WEB-INF\classes目录下。由于我们这是一个web工程也是发布在Tomcat中,我是直接把发布的工程中的WEB-INF下的classes文件夹全部拷到axis下对应目录。(似乎还要把lib下的jar包也拷到axis对应的lib目录下)
3.2 客户端的开发
客户端就是写程序怎么调用这个web服务了。留到下一节讲吧。。写得太多了。
分享到:
相关推荐
axis1.4和axis2相关jar文件,axis1.4和axis2相关jar文件
axis1.4完整包下载Apache Axis是一种SOAP(简单对象访问协议”)实现。 包含 Axis1.4的所有完整包。
axis1.4生成客户端 根据WSDL生成客户端和服务端
springboot 集成axis1.4的webservice,该为maven的工程
Axis1.4如何实现头部鉴权(包括实现类模板)
内有axis1.4jar包以及使用eclipse和axis1.4 将WSDL和服务端代码互转方法 亲测可用
axis1.4生成访问客户端代码
Axis1.4从服务端到客户端图文攻略,同时附赠Axis1.4 Jar包。 本攻略经过多次测试可靠耐用,并同时带有详细的文字说明,保证一学就会!从现在起axis不再是问题!让你爱上web service!
axis1.4的帮助文档,WEBService发布必备产品。
用于axis1.4开发webService。 文件包含,axis1.4.ZIP以及其他所需jar包,和生成webservice客户端,生成webService服务端发布 的详细教程说明。
Axis1.4开发指南 介绍Axis1.4的开发方式,并附上不少范例代码
axis1.4 webservice个人学习笔记
Axis1.4开发指南.pdf axis-bin-1_4.zip axis相关文档 axis1.4 开发jar包
java org.apache.axis.wsdl.WSDL2Java -u http://xxxxxx?wsdl -p com.webservice.wsdl -t -u 要访问的webservice的地址标准的wsdl文件 -p 生成java文件的包名 -t 生成的java文件中包含junit的测试代码。 详见...
axis1.4学习示例(详细步骤说明)axis1.4
webservice axis1.4服务搭建
里面包含axis1.4使用到的jar包以及详细的使用方法和实例
本方法是用axis1.4技术,实现java客户端调用webservice。已经可实现过可行的,如果不行可加我QQ号302633进行详细解析。
使用spring3+ cxf 3.4做服务方,Axis1.4做请求方,在调用的时候,通过转换cxf的wsdl格式为axis1.4的wsdl格式来达到调用的目的。