`

WebService 学习资料整理2 - AXIS实战

阅读更多
引用
以下内容整理了
http://chnic.iteye.com/blog/127343
http://www.360doc.com/content/08/0124/17/21290_1001123.shtml



WebService实例
2.1    Axis包介绍
Axis是一个实现WebService的Framework,Apache Web Services Project(http://ws.apache.org )的一个子项目
下载路径:http://ws.apache.org/axis/

2.1.1   Axis1.4(Axis中最后Release版本)
2.1.1.1 基本概念
Axis部署方式有两种:
  • 1,axis最方便的发布WebServices的方法是把你的.java改成.jws的放到Web发布文件夹下的根目录下,此方法叫即时部署
  • 注意:在你写的类中不能有具体包的信息,因为这正是Axis即时部署不支持的
  • 2, 通过WSDD自定义部署


2.1.1.2  Axis自带web分析
  解压axis-bin-1_4.zip这个包可以看到webapps目录,双击进入把里面的AXIS文件夹拷到 %TOMCAT_HOME%\webapps目录下。启动tomcat,访问http://localhost:8080/axis/happyaxis.jsp  如果访问成功,恭喜你!基本的配置你已经做完了。
访问: http://localhost:8080/axis/ ,一般可以正常访问到Apache-AXIS主页,并可以点击list察看已发布的web service


2.1.1.3.即时发布 JWS (Java Web Service) Files - Instant Deployment    

    即时发布提供了一种非常简单发布方式,发布者只要有Java源代码(也就是.java文件),然后把其后缀名改成jws(也就是 java web service的缩写)拷贝到%TOMCAT_HOME%\webapps\axis目录下即完成了所有的发布工作。AXIS的编译引擎会处理接下来的所有事情。下面是一段示例代码:

1.public   class  HelloAXIS {    
2.        
3.     public  String Hello(String name){    
4.         return   "AXIS say hello to "  + name;    
5.    }    
6.} 
 
   把 HelloAXIS.java 文件改成 HelloAXIS.jws 然后拷贝到%TOMCAT_HOME%\webapps\axis目录下,启动Tomcat之后访问 http://localhost:8080/axis/HelloAXIS.jws  如果能看到 Click to see the WSDL这个超链接就说明已经发布成功了,点击进去就可以看到这个Webservice的WSDL描述文件。server端的发布已经完成了,接下来就是编写Client端测试代码了。

1.package  com.chnic.test;    
2.   
3.import  java.net.URL;    
4.   
5.import  javax.xml.namespace.QName;    
6.   
7.import  org.apache.axis.client.Call;    
8.import  org.apache.axis.client.Service;    
9.   
10.public   class  Test {    
11.        
12.     public   static   void  main(String[] args)  throws  Exception{    
13.        String targetEendPoint =  "http://localhost:8080/axis/HelloAXIS.jws" ;    
14.        Service service =  new  Service();    
15.        Call call = (Call) service.createCall();                
16.        call.setOperationName( new  QName(targetEendPoint,  "Hello" ));    
17.        call.setTargetEndpointAddress( new  URL(targetEendPoint));    
18.        String result = (String) call.invoke( new  Object[]{ "Robert" });    
19.        System.out.println(result);    
20.    }    
21.}   

    测试代码很简单,如果熟悉java反射机制的朋友不用两分钟就能看明白。运行后客户端控制台出现 AXIS say hello Robert。测试成功。果然很简单吧。不过在这简单背后却是以牺牲灵活性为代价的。假如你现在手里只有.class 或者一个jar包,jws就不再能满足你的需求了,最要命的就是即时发布不支持带包的类,这点AXIS的用户手册上写的也很明白。

Important: JWS web services are intended for simple web services. You cannot use packages in the pages, and as the code is compiled at run time you can not find out about errors until after deployment. Production quality web services should use Java classes with custom deployment.


2.1.1.4定制发布 Custom Deployment - Introducing WSDD

   比起即时发布定制发布更加烦琐也更复杂,但是换来的却是更大的灵活性,因此在实际项目中定制发布还是不二的选择。定制发布需要你自己编写一个WSDD(Web Service Deployment Descriptor)文件,这个东东类似与XML稍后会做出介绍。废话不多说,我们来看代码:

1.package  com.chnic.webservice;    
2.   
3.public   class  HelloWorld {    
4.        
5.     public  HelloWorld(){    
6.            
7.    }    
8.        
9.     public  String hello(String str){    
10.         return   "Hello "  + str;    
11.    }    
12.        
13.     public   int  add( int  a,  int  b){    
14.         return  a + b;    
15.    }    
16.        
17.}    

    一个带包的很简单的类,在eclipse下编译后按照包名拷到 %TOMCAT_HOME%\webapps\axis\WEB-INF\classes 目录下。以这个类为例,拷贝完之后这个HelloWorld.class的路径就是 %TOMCAT_HOME%\webapps\axis\WEB-INF\classes\com\chnic\webservice。PS: 如果嫌这样太麻烦,可以另外建一个Java Web工程用myeclipse的发布工具发布到Tomcat之后,整体一次性拷贝到websericve的工程中。

    接下来就需要编写发布文件deploy.wsdd。到%TOMCAT_HOME%\webapps\axis\WEB-INF 目录下建立这个文件并在其中添加如下内容:

xml 代码
1.< deployment   xmlns = http://xml.apache.org/axis/wsdd/   
2.            xmlns:java = "http://xml.apache.org/axis/wsdd/providers/java" >    
3.        
4.     < service   name = "HelloWorld"   provider = "java:RPC" >    
5.         < parameter   name = "className"   value = "com.chnic.webservice.HelloWorld" />    
6.         < parameter   name = "allowedMethods"   value = "*" />         
7.    </ service >    
8.</ 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目录下键入如下命令  

1.java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient deploy.wsdd  

    之后控制台返回Processing file deploy.wsdd 和 Done processing 这两段话即说明发布成功。(此时会在同级目录生成一个server-config.wsdd文件 )在这里的AdminClient是AXIS提供的一个客户端管理工具。至于java.ext.dirs的含义可以去了解一下classloader和JVM类装载机制方面的知识,在这里就不多解释。 还有一点要注意的是在发布的时候Tomcat服务必须处于启动状态,否则就会抛出一堆无法连接的异常信息。发布成功之后你可以通过访问 http://localhost:8080/axis/servlet/AxisServlet 来查看你所有的定制发布的服务。

客户端测试代码
1.String targetEendPoint =  "http://localhost:8080/axis/services/HelloWorld" ;    
2.Service service =  new  Service();    
3.Call call = (Call) service.createCall();    
4.call.setTargetEndpointAddress( new  URL(targetEendPoint));    
5.   
6.call.setOperationName( new  QName(targetEendPoint,  "hello" ));         
7.String result = (String) call.invoke( new  Object[]{ "Robert" });    
8.System.out.println(result);    
9.   
10.call.setOperationName( new  QName(targetEendPoint,  "add" ));    
11.Integer res = (Integer) call.invoke( new  Object[]{ new  Integer( 1 ),  new  Integer( 2 )});    
12.System.out.println( "The result is: "  + res);   

    运行测试代码,控制台显示 Hello Robert 和 The result is: 3 这两句话,说明发布成功。仔细观察下发现其实除了那个targetEndpoint 之外,即时发布和定制发布的客户端调用代码基本上都是一样的。定制发布的URL可以在WSDL文件里找到。
分享到:
评论

相关推荐

    webService 生成插件axis2-idea-plugin-1.7.8

    webService 生成插件axis2- idea-plugin-1.7.8

    WebService------AXIS

    WebService——AXIS详解 在IT领域,WebService是一种基于标准的、平台无关的、可以在不同系统之间交换数据的方式。它利用XML(可扩展标记语言)作为数据格式,HTTP作为传输协议,SOAP(简单对象访问协议)作为消息...

    WebService-Axis2 详细讲解

    WebService-Axis2 详细讲解 WebService是一种基于XML的开放标准,用于在不同的应用程序之间进行通信。它允许不同系统之间的数据交换,打破了平台和语言的界限。Axis2是Apache软件基金会开发的一个高性能、灵活且可...

    webservice-axis2引擎-快速入门资料

    Axis2是下一代 Apache Axis。Axis2 虽然由 Axis 1.x 处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构。Axis2 基于新的体系结构进行了全新编写,而且没有采用 Axis 1.x 的常用代码。支持开发 Axis...

    部署WebService(eclipse-axis2)

    ### 部署WebService(eclipse-axis2)的关键步骤与实践 #### 一、概述 部署WebService涉及使用Eclipse集成开发环境结合Axis2框架来搭建Web服务。本文将详细介绍如何使用Eclipse 3.5.0 和 Axis2-1.3 版本进行...

    webservice-axis2

    通过本教程的学习,学员将能够全面了解Axis2的核心技术和应用场景,并能够通过一系列实战项目掌握如何在实际开发中运用这些技术。无论是对于初学者还是有一定经验的开发者来说,这份教程都将是一个宝贵的资源。

    完整的axis2 jar包包含实例.zip

    axis2 webservice 服务端jar包: --&gt;axis2-kernel-1.6.1.jar --&gt;axis2-spring-1.6.1.jar --&gt;axis2-transport-http-1.6.1.jar --&gt;XmlSchema-1.4.7.jar --&gt;wsdl4j-1.6.2.jar --&gt;axiom-api-1.2.12.jar --&gt;axiom...

    WebService axis2-eclipse-codegen-plugin

    WebService Axis2 Eclipse Codegen Plugin是基于Eclipse IDE的插件,专门用于生成Axis2 Web服务的客户端和服务器端代码。这个工具极大地简化了开发者在基于Axis2框架开发Web服务时的工作流程,允许他们通过简单的...

    Spring集成axis2实现webservice所用到的包

    2. **创建WebService**:在Spring中,可以通过定义一个实现了特定接口的类来创建Web服务。这个接口通常对应于服务的WSDL契约,而实现类则包含了实际的服务逻辑。 Axis2提供了`ServiceStub`类,可以帮助我们与服务...

    [JAVA]-Axis-Webservice-Demo

    Java Axis Web服务示例(`[JAVA]-Axis-Webservice-Demo`)提供了发布和调用Web服务的实际操作步骤。通过学习和实践这个示例,开发者可以更好地掌握使用Axis创建Web服务的技术,理解Web服务的基本原理,以及如何通过...

    myeclipse8.5+axis2插件 生成webservice服务并调用-----代码

    ----------示例包括: 普通数据类型 ...使用axis2通过自编写的server端生成wsdl,通过wsdl生成服务(aar,将aar文件放入tomcat/webapps/axis2/WEB-INF/services下),再通过wsdl生成客户端,通过客户端调用服务

    webService-Axis-tomcat发布教程.docx编程资料

    ### WebService-Axis-Tomcat 发布教程详细解析 #### 一、准备工作 在开始发布 WebService 之前,首先需要完成一系列的准备工作。 ##### 1. 安装 Axis - **下载 Axis 包**:访问 Apache Axis 的官方网站 ...

    Java-tomcat-axis2开发webservice返回json数据

    标题“Java-tomcat-axis2开发webservice返回json数据”涉及的是使用Java、Tomcat服务器以及Axis2框架来创建Web服务,并返回JSON格式的数据。这是一个常见的技术组合,用于构建RESTful API或者提供服务化接口。下面...

    java-webservice-axis-例子

    7. **版本控制和兼容性**:虽然例子中使用的是Axis1.4,但随着技术的发展,后续有Axis2等更新版本,提供了更好的性能和更多的特性。迁移旧的Axis1服务到新版本需要考虑兼容性和改动成本。 通过理解以上概念和流程,...

    webservice应用-axis2

    【标题】:“Web服务应用-Axis2” 在IT行业中,Web服务是一种标准接口,它允许不同系统间的应用程序通过网络进行通信。Axis2是Apache软件基金会开发的一个强大的Web服务引擎,专门用于实现基于SOAP(简单对象访问...

    axis2;WebService

    【Axis2 WebService 开发指南】是关于使用Apache Axis2框架创建和操作Web服务的教程。Axis2是Axis1的升级版,提供了更多的功能和改进的性能。在开始之前,你需要下载并安装必要的开发工具,包括Axis2的jar包和...

    axis2例子 webservice axis2 示例

    axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例

    webserviceClient-axis2.rar

    Web服务在IT行业中扮演着重要的...通过这个示例,开发者可以学习到Axis2客户端的创建和使用,理解Web服务调用的基本流程,以及如何处理响应和错误。这对于任何需要与Web服务交互的Java开发者来说都是宝贵的实践经验。

Global site tag (gtag.js) - Google Analytics