微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Axis开发WebService 指南

Axis开发WebService 指南

一、 开发环境

l          MyEclipse 6.5

l          Tomcat 6.0.24

l          Jdk 1.6.0_22

l          Axis1.4

 

二、Axis简介:



 

axis全称Apache EXtensible Interaction System 即 阿帕奇 可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建 服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的,不过为C++的版本正在开发中。但Axis并不完全是一个SOAP引擎,它还是一个独立的SOAP服务器和一个嵌入Servlet引擎(例如Tomcat)的服务器。

下载1.4 Final 链接地址:

http://ws.apache.org/axis/

 

三、Java开发Webservice 示例

Axis支持三种WebService 的部署和开发,分别为: 
    1、Dynamic Invocation Interface(DII)方式 
    2、Dynamic Proxy方式 
    3、Stubs方式

Stubs方式是最通用的做法,又因其灵活的特点,建议使用这种方式.

下面是详细的开发步骤:

1)       创建web工程

1、  MyEclipse 6.5创建web project,取名为axistest;

2、  新建文件文件夹名为lib,然后 将下载下来的axis 其 axis-1_4\lib 目录下的jar 拷贝到ib目录下,将这些jar引入到axistest classpath 下,如图:



 

2) .编写Server 程序

1、  新建class,包取名:server  类名:HelloServer

声明sayHello方法,具体代码如下:


Java代码  

收藏代码

  1. <span style="">package Server;  
  2.   
  3. /** 
  4.  
  5.  * 开发webservice: 服务器端 
  6.  
  7.  * @author lvqing 
  8.  
  9.  * 
  10.  
  11.  */  
  12.   
  13.    
  14.   
  15. public class HelloServer {  
  16.   
  17.    
  18.   
  19. public String sayHello(String name){  
  20.   
  21. return "hello:"+name;  
  22.   
  23. }  
  24.   
  25. }</span>  
 

结构图:



 

2、配置web.xml

web.xml文件很容易配置,拷贝axis包里面的WebService示例的web.xml配置到我们的工程中的web.xml中就可以了。

· 

Xml代码  
  • <span style=""><?xml version="1.0" encoding="UTF-8"?>    
  • web-app version="2.5"     
  •     xmlns="http://java.sun.com/xml/ns/javaee"     
  •     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
  •     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     
  •     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    
  •   welcome-file-list>    
  •     welcome-file>index.jsp</>    
  •       
  •     <!-- =============== Axis Webservice =============-->    
  •     servlet>    
  •         servlet-name>AxisServletservlet-class>org.apache.axis.transport.http.AxisServlet>AdminServlet>org.apache.axis.transport.http.AdminServletload-on-startup>100>SOAPMonitorService>org.apache.axis.monitor.SOAPMonitorServiceinit-param>    
  •             param-name>SOAPMonitorPortparam-value>5001servlet-mappingurl-pattern>/servlet/AxisServlet>*.jws>/services/*>/SOAPMonitormime-mappingextension>wsdlmime-type>text/xml>xsd>    
  •       
  • web-app>  span>  
  •  

    3) 部署 web project

    利用MyEclipse部署工具 将我们的项目部署到Tomcat\webapp目录下




     
     

    4) 创建 deploy.wsdd文件

    这个文件可以在任意目录下创建,但是为了维护方便 ,我将它创建在zxistest 项目Src:目录下:

    示例代码:


    Xml代码   deployment xmlns="http://xml.apache.org/axis/wsdd/"   
  •   
  •     xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">   
  •   
  •     <!-- 这里的helloserver为wsdd描述符中的ServiceNamespace  -->   
  •   
  •     service name="helloserver" provider="java:RPC">   
  •   
  •         <!-- 这里的ClassName就是我的服务类了,这个服务主要功能就是传递一个自定义的对象  -->   
  •   
  •         parameter name="className" value="Server.HelloServer" />   
  •   
  •         <!-- 这里描术的意思是,此服务类中的方法全部享出来. value值为*号   
  •   
  •         如果你只想让你的客户端只能调用其中一个方法时,value值改为方法名就可以了. --parameter name="allowedMethods" value="*" />   
  •   
  •     service>   
  •   
  • deployment>  
  •  

    5) 生成 server-config.wsdd  文件

    server-config.wsdd 文件是WebService的核心配置文件。Web服务能否发布,很大程度上取决于次文件的配置

    这里 我们写个批处理脚本deploy.bat:

    set Axis_Lib=D:\workspace\MEE\NMA\axistest\lib

    set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

    set Axis_Servlet=http://localhost:8080/axistest/servlet/AxisServlet

    %Java_Cmd% org.apache.axis.client.AdminClient -l %Axis_Servlet% deploy.wsdd

    pause;

    接下来,在执行deploy.bat前,请确保Tomcat 服务已运行,否则在Dos命令窗口中看到如下错误:



     

    看到如下图运行的结果,表明已经在Tomcat\webapps\axistest\WEB-INF目录下 生成了server-config.wsdd文件. (Activation.jar 和 mail.jar这两个包虽然没有加入到CLASSPATH中,但是不影响我们的开发。)



     

    好了,大功告成了!webservice 发布成功了,重启Tomcat,我们来测试一下,看是否发布成功.

    在IE上输入: http://localhost:8080/axistest/services/helloserver?wsdl

    看到如图结果表明发布成功:



     

    6) 生成客户端Client wsdl文件

    在IE上输入: http://localhost:8080/axistest/services/helloserver?wsdl ,点击文件 → 另存为.存到a xistest 项目Src:目录下

    7)Wsdl2Java

    为了方便,我们写个批处理脚本 WSDL2Java.bat

    set Axis_Lib=D:\workspace\MEE\NMA\axistest\lib

    set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

    set Output_Path=D:\workspace\MEE\NMA\axistest\src

    set Package=client

    %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o %Output_Path% -p %Package% helloserver.wsdl

    pause;

    解释下此命令:

    %Output_Path%是客户端文件输出路径,%Package%是包名

    这时 我们可以看到 a xistest 工程下已经生成了客户端程序,如图:



     

    8) 客户端测试代码


    Java代码   package client;  
  •   
  •    
  •   
  • import java.net.URL;  
  •   
  •    
  •   
  •  * webservice  客户端 程序 
  •  
  •  */  
  •   
  • class ClientTest {  
  •   
  • static void main(String[] args) {  
  •   
  • HelloServerService service = null;   
  •   
  •         HelloServer helloServer = null;   
  •   
  •         try {   
  •   
  •             System.out.println("connect......");   
  •   
  •             String StrPortAddress = "http://localhost:8080/axistest/services/helloserver";   
  •   
  •             URL portAddress = new URL(StrPortAddress);   
  •   
  •             // 得到客户端服务   
  •   
  •             service = new HelloServerServiceLocator();   
  •   
  •             // 得到客户端stub   
  •   
  •             helloServer = service.gethelloserver(portAddress);  
  •   
  •             // 测试服务方法   
  •   
  •             String resultStr = helloServer.sayHello("iteye");  
  •   
  •             System.out.println(resultStr);   
  •   
  •         } catch (Exception e) {   
  •   
  •             e.printStackTrace();   
  •   
  •         } finally {   
  •   
  •             System.out.println("End.");   
  •   
  •         }   
  •   
  • }  
  •   
  • }</span>  
  •  

    终结 ……

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

    相关推荐