写个脚本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知识点详解 #### 一、概述 在当今信息化时代,Web服务作为实现系统间通信的一种重要手段,在企业级应用中扮演着至关重要的角色。Apache Axis作为一个开源的Java库,提供了简单...
Apache Axis1是一个开源项目,它提供了一种简单的方式来创建和部署Web服务,同时也支持作为客户端调用远程Web服务。下面将详细阐述Axis1.x的基本概念、配置过程以及如何使用它来调用WebService。 1. **Apache Axis1...
1. POJO(Plain Old Java Object)方式: POJO是Axis2中最为直观的Web服务实现方式,开发者直接将Java类暴露为Web服务。通过在类上添加服务接口和操作注解,如@WebService和@WebMethod,Axis2可以自动处理服务的...
3. **部署服务**:使用Axis2的工具,如wsdl2java,将WSDL文件转换为Java代码,然后将服务类打包成服务存根(Stub)和 skeletons。 4. **启动服务**:通过Axis2的服务器实例化服务,使其监听特定端口,等待客户端请求...
4. **服务部署文件(.aar)**:Axis2的服务归档文件,包含了服务的Java类、资源配置和WSDL。 5. **客户端代码**:展示了如何使用Axis2客户端库来调用服务。 6. **配置文件**:如axis2.xml,用于配置服务的行为和属性...
总结起来,本文详细介绍了如何使用Apache Axis来编写和部署一个简单的Java WebService,包括创建Java类、生成WSDL、部署服务以及编写客户端进行测试。熟悉这些步骤有助于开发者快速搭建和调试基于SOAP的Web服务。
1. **配置Axis2**:在Spring项目中,首先需要将Axis2的相关库添加到项目的类路径下。这些库通常包括`axis2-*.jar`, `axiom-*.jar`, `neethi-*.jar`, `wsdl4j-*.jar`, `commons-discovery-*.jar`, `commons-logging-*...
【标题】:“利用Axis2实现WebService开发与部署” 【描述】:“利用Axis2实现WebService开发与部署-3中方法进行开发” 【标签】:“WebService” 本文将详细讲解如何使用Apache Axis2框架来开发和部署Web ...
总结起来,创建Axis1 Web服务服务端涉及到的主要知识点包括Web服务的基础理论、Axis1框架的使用、Java类与Web服务的关联、Stub类的生成、服务的配置与部署,以及服务的测试和调用。理解并掌握这些步骤,开发者可以...
本指南旨在为初学者提供AXIS框架下开发WebService的详细步骤,涵盖了从获取开发资源、生成 stub、编写服务器端代码到客户端测试的全过程。AXIS是一个开源的Java库,它提供了创建、部署和使用Web服务的工具,是基于...
2. Tomcat服务器:这是Apache软件基金会的开源Servlet容器,用于部署和运行Java Web应用程序,包括基于AXIS2的WebService。 3. AXIS2:Apache AXIS2是Java平台上用于构建和使用Web服务的一个高性能、轻量级的框架。 ...
总的来说,使用Axis2客户端调用WebService接口是一种常见的开发实践,通过精简jar包可以优化项目的体积,提高部署效率。理解这个过程并掌握如何精简jar包,对于任何涉及到Web服务的开发工作都是十分有益的。
WSDD(Web Service Deployment Descriptor)是Axis使用的配置文件,用于描述Web服务的部署信息,如服务端点、传输协议、消息格式等。在Axis1.4中,可以通过`wsdd2java`工具,根据Java类自动生成对应的WSDD文件。这...
1. **生成Stub**:使用Axis2的wsdl2java工具,根据服务的WSDL生成客户端存根类。 2. **编写客户端代码**:在生成的存根类基础上,编写客户端应用程序,调用服务接口。 3. **运行客户端**:运行客户端代码,通过...
总结来说,"axis1 webservice案例"提供了一个学习和实践Web服务开发的实例,涵盖了服务端的部署和服务接口的创建,以及客户端的调用过程。理解并掌握这个案例,对于深入理解Web服务工作原理,以及在实际项目中使用...
- **部署服务**:使用 Axis 工具,你可以将 Java 类转换为 WebService。这通常涉及到生成一个 JAR 包并将其部署到应用服务器上。 ### 4. Axis 客户端实现 - **生成 Stub**:客户端需要与服务端交互,这通常通过...
在Axis的配置文件`conf/axis.properties`中,设置服务部署目录。然后,通过Axis的管理界面或命令行工具,将服务部署上去。 4. **启动服务**:运行Axis的`AxisServlet`,启动Web服务监听特定端口,等待客户端调用。 ...
本实例将介绍如何使用Apache Axis1库来创建和调用Web服务,这是一种常见的Java WebService实现方式。 一、WebService基本概念 1. WebService是一种基于XML(可扩展标记语言)的协议,它允许应用程序通过HTTP协议...
1. **生成客户端代码**:同样使用`Axis2 code generator`工具从WSDL文件生成客户端Stub类。 2. **调用服务**:在客户端代码中创建Stub实例,并调用相应的服务方法。示例代码如下: ```java public static void main...