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 webservice个人学习笔记
本笔记将深入探讨Axis2的核心概念、版本差异、安装配置以及在实际项目中的应用。 1. **核心概念** - **SOAP**: Axis2是基于SOAP(Simple Object Access Protocol)协议的,它允许应用程序通过HTTP进行通信,实现跨...
标题 "Axis + tomcat" 指涉的是在Apache Axis1.4版本与Tomcat应用服务器上部署和使用Web服务的技术。Apache Axis是Java平台上一个流行的开源工具,用于创建和部署Web服务,而Tomcat则是一款轻量级的Java应用服务器,...
- **Axis 1.4 在 EBS 11i 中的应用**:描述如何在 EBS 11i 中部署和使用 Axis 1.4。 - **Oracle Call-in WebService**:从外部调用 EBS 的 WebService。 - **Oracle Call-out WebService**:从 EBS 内部调用外部 ...
axis学习资料汇总: Axis实例与分析详解; Axis学习笔记.pdf; Tomcat5.0.28下AXIS完全安装手册.doc; Axis1.4 开发指南_V1.0.pdf; AXIS入门及应用.rar; Axis开发Web+Services.doc 等等
标题"Axis2_1.X学习笔记"指的是关于Axis2的一个学习资源,其中1.X代表可能是1.4或者1.5等版本,Axis2是Apache软件基金会开发的一个开放源代码Web服务平台,主要用于构建和部署Web服务。这个学习笔记可能是对Axis2在1...
- 使用AXIS IP Utility扫描物理连接中的摄像机IP,确保笔记本电脑的本地连接IP与摄像机在同一网段。 - 在设置IP时,需避免笔记本电脑使用169.254开头的DHCP地址,否则摄像机会学习到这个地址。 2. **初始配置**:...
1. **AXIS IP Utility的使用**:这是一个用于扫描并识别网络中物理连接的AXIS摄像机的工具。在使用前,需要将笔记本电脑的本地连接IP设置为与摄像机在同一网段,以确保通信。 2. **摄像机初始化设置**:当摄像机是...
“Apache Axis 1.4.zip”和“103244826axis.zip”是Apache Axis的版本,Axis是一个流行的Java Web服务框架,用于生成和部署Web服务。它简化了SOAP通信,并提供了自动代码生成工具。 “axis文档.zip”很可能是Apache...
**N1.4. 给出一个用于刚体平移的变换矩阵,如第一页图所示。** 对于刚体平移,我们可以使用一个4x4的变换矩阵来表示。假设平移向量为 \(\mathbf{d} = [d_x, d_y, d_z]^T\),则变换矩阵可以表示为: \[ T(d_x, d_y,...