您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > axis+webservice教程
利用AXIS开发Webservice(一)——如何发布自己的webservice先介绍下本人开发环境吧。JDK1.4.2+Myeclipse6.0(实在经不起诱惑,尝尝鲜)+Tomcat5.0.28+AXIS1.4。AXIS1.4包可以在找到。假设所有的环境你已经搭好,并且AXIS包也已经下好了。OK,Herewego~解压axis-bin-1_4.zip这个包可以看到webapps目录,双击进入把里面的AXIS文件夹拷到%TOMCAT_HOME%\webapps目录下,之后拷贝activation.jar、mail.jar、tools.jar到%TOMCAT_HOME%\webapps\axis\WEB-INF\lib目录下。启动tomcat,访问如果访问成功,恭喜你!基本的配置你已经做完了。PS:此处的%TOMCAT_HOME%指的是Tomcat的安装目录,至于那另外的三个jar包,J2EE1.4库里就能找的到。现在来说一下最关键的Webservice的发布。AXIS提供了两种发布方式,一种是即时发布(InstantDeployment),另外一种是定制发布(CustomDeployment)。即时发布提供了一种非常简单的webservice的发布方式,但是其中限制太多,因此在实际的开发中定制发布才是首选。这里也将会以定制发布为重点来介绍。1.即时发布JWS(JavaWebService)Files-InstantDeployment即时发布提供了一种非常简单发布方式,发布者只要有Java源代码(也就是.java文件),然后把其后缀名改成jws(也就是javawebservice的缩写)拷贝到%TOMCAT_HOME%\webapps\axis目录下即完成了所有的发布工作。AXIS的编译引擎会处理接下来的所有事情。下面是一段示例代码:java代码publicclassHelloAXIS{publicStringHello(Stringname){returnAXISsayhelloto+name;}}把HelloAXIS.java文件改成HelloAXIS.jws然后拷贝到%TOMCAT_HOME%\webapps\axis目录下,启动Tomcat之后访问如果能看到ClicktoseetheWSDL这个超链接就说明已经发布成功了,点击进去就可以看到这个Webservice的WSDL描述文件。server端的发布已经完成了,接下来就是编写Client端测试代码了。java代码packagecom.chnic.test;importjava.net.URL;importjavax.xml.namespace.QName;importorg.apache.axis.client.Call;importorg.apache.axis.client.Service;publicclassTest{publicstaticvoidmain(String[]args)throwsException{StringtargetEendPoint==newService();Callcall=(Call)service.createCall();call.setOperationName(newQName(targetEendPoint,Hello));call.setTargetEndpointAddress(newURL(targetEendPoint));Stringresult=(String)call.invoke(newObject[]{Robert});System.out.println(result);}}测试代码很简单,如果熟悉java反射机制的朋友不用两分钟就能看明白。运行后客户端控制台出现AXISsayhelloRobert。测试成功。果然很简单吧。不过在这简单背后却是以牺牲灵活性为代价的。假如你现在手里只有.class或者一个jar包,jws就不再能满足你的需求了,最要命的就是即时发布不支持带包的类,这点AXIS的用户手册上写的也很明白。Important:JWSwebservicesareintendedforsimplewebservices.Youcannotusepackagesinthepages,andasthecodeiscompiledatruntimeyoucannotfindoutabouterrorsuntilafterdeployment.ProductionqualitywebservicesshoulduseJavaclasseswithcustomdeployment.2.定制发布CustomDeployment-IntroducingWSDD比起即时发布定制发布更加烦琐也更复杂,但是换来的却是更大的灵活性,因此在实际项目中定制发布还是不二的选择。定制发布需要你自己编写一个WSDD(WebServiceDeploymentDescriptor)文件,这个东东类似与XML稍后会做出介绍。废话不多说,我们来看代码:java代码packagecom.chnic.webservice;publicclassHelloWorld{publicHelloWorld(){}publicStringhello(Stringstr){returnHello+str;}publicintadd(inta,intb){returna+b;}}一个带包的很简单的类,在eclipse下编译后按照包名拷到%TOMCAT_HOME%\webapps\axis\WEB-INF\classes目录下。以这个类为例,拷贝完之后这个HelloWorld.class的路径就是%TOMCAT_HOME%\webapps\axis\WEB-INF\classes\com\chnic\webservice。PS:如果嫌这样太麻烦,可以另外建一个JavaWeb工程用myeclipse的发布工具发布到Tomcat之后,整体一次性拷贝到websericve的工程中。接下来就需要编写发布文件deploy.wsdd。到%TOMCAT_HOME%\webapps\axis\WEB-INF目录下建立这个文件并在其中添加如下内容:xml代码deploymentxmlns=:java==HelloWorldprovider=java:RPCparametername=classNamevalue=com.chnic.webservice.HelloWorld/parametername=allowedMethodsvalue=*//service/deployment简单的介绍下各个节点的含义,HelloWorld当然是这个webservice的名字,后面紧跟的java:RPC指的是服务类型。这里一共有有4种类型,分别是:RPC,Document,Wrapped和Message。有兴趣可以看下org.apache.axis.providers这个包和子包下面的类的API文档。之后的parameter节点第一个当然是指出具体的类,第二个从字面上也很好理解:允许调用的方法。这里的配置告诉引擎可以调用所有的public方法,当然你也可以自己指定。编写完配置发布文件之后,cmd打开windows的控制台,进入%TOMCAT_HOME%\webapps\axis\WEB-INF目录下键入如下命令java-Djava.ext.dirs=liborg.apache.axis.client.AdminClientdeploy.wsdd之后控制台返回Processingfiledeploy.wsdd和Doneprocessing这两段话即说明发布成功。(此时会在同级目录生成一个server-config.wsdd文件)在这里的AdminClient是AXIS提供的一个客户端管理工具。至于java.ext.dirs的含义可以去了解一下classloader和JVM类装载机制方面的知识,在这里就不多解释。还有一点要注意的是在发布的时候Tomcat服务必须处于启动状态,否则就会抛出一堆无法连接的异常信息。发布成功之后你可以通过访问来查看你所有的定制发布的服务。客户端测试代码StringtargetEendPoint==newService();Callcall=(Call)service.createCall();call.setTargetEndpointAddress(newURL(targetEendPoint));call.setOperationName(newQName(targetEendPoint,hello));Stringresult=(String)call.invoke(newObject[]{Robert});System.out.println(result);call.setOperationName(newQName(targetEendPoint,add));Integerres=(Integer)call.invoke(newObject[]{newInteger(1),newInteger(2)});System.out.println(Theresultis:+res);运行测试代码,控制台显示HelloRobert和Theresultis:3这两句话,说明发布成功。仔细观察下发现其实除了那个targetEndpoint之外,即时发布和定制发布的客户端调用代码基本上都是一样的。定制发布的URL可以在WSDL文件里找到。其实定制发布还有一些高级特性,这个就留到下一篇再说吧。利用AXIS开发Webservice(二)——WSDD的一些高级特性1、取消发布一个webservice开篇之前先把上篇的一个遗漏补充上,上篇只讲了怎么发布一个webservice,但是如何取消没有却没有提。其实取消一个已经发布的webservce也是非常简单的,我们就拿上篇的HelloWorld来做例子吧。发布webservice的时候我们有一个deploy.wsdd文件,当然在取消发布的时候就会有一个undeploy.wsdd文件。这个文件的内容也很简单,xml的代码如下。Xml代码undeploymentxmlns==HelloWorld//undeploymentundeploymentxmlns==HelloWorld//undeployment编写完这个xml文件之后,把它同样copy到%TOMCAT_HOM\webapps\axis\WEB-INF目录下,然后CMD打开控制台,在控制台输入一个我们很熟悉的命令java-Djava.ext.dirs=liborg.apache.axis.client.AdminClientundeploy.wsdd运行之后得到如下结果说明取消发布成功Processingfileu
本文标题:axis+webservice教程
链接地址:https://www.777doc.com/doc-3602778 .html