写个脚本deploy.bat,发布的时候不用用命令行了,也不用加那么多变量到classpath,方便自己.
set AXIS_LIB=D:\axis\axis-1_4\webapps\axis\WEB-INF\lib set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\activation.jar;%AXIS_LIB%\mail.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8888/axis/services deploy.wsdd
deploy.wsdd文件的内容
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="SayHello" provider="java:RPC"> <parameter name="className" value="SayHello"/> <parameter name="allowedMethods" value="*"/> </service> </deployment>
再来个复杂点的,带复杂对象映射的
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="PmiService" provider="java:RPC"> <parameter name="className" value="pmi.PmiService"/> <parameter name="allowedMethods" value="*"/> <beanMapping qname="myNS:OpInfo" xmlns:myNS="urn:common:webservice" languageSpecificType="java:wfc.facility.right.common.OpInfo"/> <beanMapping qname="myNS:RoleInfo" xmlns:myNS="urn:common:webservice" languageSpecificType="java:wfc.facility.right.common.RoleInfo"/> <beanMapping qname="myNS:ResourceInfo" xmlns:myNS="urn:common:webservice" languageSpecificType="java:pmi.common.ResourceInfo"/> <beanMapping qname="myNS:Permission" xmlns:myNS="urn:common:webservice" languageSpecificType="java:pmi.webservice.common.Permission"/> </service> </deployment>
我们使用AdminClient来发布,调用格式如下
java org.apache.axis.client.AdminClient -lhttp://地址:端口/context模块/services/SayHello deploy.wsdd
发现url中services后的“/SayHello” 没什么用好像,写不写都不影响。(后面发现package路径会多这一级)
运行后如果没错,则会将新的webservice加入到server-config.wsdd配置文件中。
下面来解释AdminClient 所做的工作。AdminClient 首先会在axis.jar所在应用下的WEB-INF文件夹下创建一个webservice配置文件server-config.wsdd,并且根据wsdd文件的配置将我们的webservice加入到这个配置文件中。如果server-config.wsdd已经存在则不会创建,会修改这个文件将新的service 配置到server-config.wsdd文件中。
下面我们就可以测试该Web服务了,打开浏览器并输入刚刚创建的文件名对应的URL地址http://localhost:8888/axis/services,发现下面已经多了一个我们自己的Webservice"SayHello",点击链接,得到wsdl "http://localhost:8888/axis/services/SayHello?wsdl"
得到WSDL文档后,现在进行AXIS客户端的生成。我们前面安装的AXIS环境中已经包含着这样的工具,它是一个JAVA类,类名为:org.apache.axis.wsdl.WSDL2Java。打开命令行窗口,转到刚才TOMCAT的 webapps\axis 目录下的WEB-INF子目录。确保Tomcat服务已经处于启动状态,键入命令 :
Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java http://localhost:8888/axis/services/SayHello?WSDL //这个地方可以是WSDL文件,也可以是WSDL的路径地址
该命令执行的结果是在当前所在目录(TOMCAT的 webapps\axis WEB-INF子目录)下产生一个子目录 ,该目录下有四个JAVA源文件,它们分别是:
SayHello.java //定义了Web服务接口,此例中只有一个hello方法。 SayHelloService.java //定义了用于获取Web服务接口的方法。 SayHelloServiceLocator.java //接口HelloService的具体实现。 SayHelloSoapBindingStub.java //Web服务客户端桩,通过该类与服务器交互。
这四个JAVA类帮我们处理了大部分的逻辑,我们需要的仅仅是把这些类加到我们的项目然后创建一个我们自己的类来调用它们即可。为此我们新加一个类Main.java,为了方便,让这个类与刚产生的四个类都在同一个包下。内容如下:
public class WebServiceClientTest { public static void main(String[] args){ SayHelloService service = new SayHelloServiceLocator(); try { SayHello hello = service.getSayHello(); System.out.println("Response:"+hello.hello()); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
由于Axis1.x需要注意的地方太多,这样有点繁琐,改日研究Axis2以及Xfire等方式吧。
分享到:
相关推荐
Axis使用Stub方式开发Webservice只要看这个,十分钟包你学会!!!
我自己编写的axis入门指南,真实的记录了我第一次开发webservice的过程,包括如何得到开发资料,如何生成stub,服务器端代码,客户端测试用例,非常适合刚入门的开发webservice的程序员.一步一步地,过程非常详细.希望给您...
1.2 AXIS第二课:工程应用中的AXIS的发布方法Stub 1.3 AXIS第三课:AXIS高级应用,使用Handler来增强Web服务的功能 1.4 AXIS第四课:AXIS高级应用,建立安全的AXIS服务 1.5 AXIS第五课:AXIS高级应用,在AXIS服务...
NULL 博文链接:https://songjianyong.iteye.com/blog/1920078
WebService实现的IP查询,使用的是AXIS
%AXIS2_HOME%\bin\wsdl2java -uri http://localhost/axis2/services/Hello?wsdl -p client -s -o stub 其中-uri参数指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。-p参数指定了生成的Java类的包名,-o...
使用Axis构建WebService:Axis安装;编写DII(Dynamic Invocation Interface )方式web服务;编写Dynamic Proxy方式访问服务;编写wsdd发布web服务,编写stub client访问web服务。
1)解压缩包 2)将wsdl文件放到wsdl文件夹中 3)运行批处理文件 4)在stub文件夹中查看生成的java文件
本文从安装 Axis 开始,编写DII方式web服务,Dynamic Proxy 方式访问服务,wsdd 发布web服务和stub client 访问web服务四个步骤,祥解如何使用Axis开发 Web Service 的一个实例。
用于生成调用AXIS2发布的WEBSERVICE服务,自动生成STUB类。非常实用,生成STUB类后,需要在工程中加入AIXS2的相关JAR包才能调用服务。
工程应用中的AXIS的发布方法Stub AXIS高级应用,使用Handler来增强Web服务的功能 AXIS高级应用,建立安全的AXIS服务 AXIS高级应用,在AXIS服务间传递JavaBean及其安全解决 使用TCPMonitor监控WebService SOAP消息
通过intellij生成webservice的stub类的具体步骤。
Axis2 通过soap header进行授权服务 客户端根据是否生产stub客户端代码采用两种形式实现。