Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6942193
  • 博文数量: 701
  • 博客积分: 10821
  • 博客等级: 上将
  • 技术积分: 12021
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-02 10:41
个人简介

中科院架构师,专注企业数字化各个方面,MES/ERP/CRM/OA、物联网、传感器、大数据、ML、AI、云计算openstack、Linux、SpringCloud。

文章分类

全部博文(701)

分类: Java

2012-10-26 11:50:43

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 链接地址:

三、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. package Server;   
  2.   
  3. /**  
  4.  * 开发webservice: 服务器端  
  5.  * @author lvqing  
  6.  *  
  7.  */  
  8.   
  9.     
  10.   
  11. public class HelloServer {   
  12.   
  13.     
  14.   
  15. public String sayHello(String name){   
  16.   
  17. return "hello:"+name;   
  18.   
  19. }   
  20.   
  21. }  
package Server; /** * 开发webservice: 服务器端 * @author lvqing * */ public class HelloServer { public String sayHello(String name){ return "hello:"+name; } }  

结构图:



 

2、配置web.xml

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

·

Xml代码 复制代码 收藏代码
  1. <SPAN>xml version="1.0" encoding="UTF-8"?>     
  2. <web-app version="2.5"      
  3.     xmlns=""      
  4.     xmlns:xsi=""      
  5.     xsi:schemaLocation="      
  6.     /web-app_2_5.xsd">     
  7.   <welcome-file-list>     
  8.     <welcome-file>index.jspwelcome-file>     
  9.   welcome-file-list>     
  10.        
  11.          
  12.     <servlet>     
  13.         <servlet-name>AxisServletservlet-name>     
  14.         <servlet-class>org.apache.axis.transport.http.AxisServletservlet-class>     
  15.     servlet>     
  16.     <servlet>     
  17.         <servlet-name>AdminServletservlet-name>     
  18.         <servlet-class>org.apache.axis.transport.http.AdminServletservlet-class>     
  19.         <load-on-startup>100load-on-startup>     
  20.     servlet>     
  21.     <servlet>     
  22.         <servlet-name>SOAPMonitorServiceservlet-name>     
  23.         <servlet-class>org.apache.axis.monitor.SOAPMonitorServiceservlet-class>     
  24.         <init-param>     
  25.             <param-name>SOAPMonitorPortparam-name>     
  26.             <param-value>5001param-value>     
  27.         init-param>     
  28.         <load-on-startup>100load-on-startup>     
  29.     servlet>     
  30.     <servlet-mapping>     
  31.         <servlet-name>AxisServletservlet-name>     
  32.         <url-pattern>/servlet/AxisServleturl-pattern>     
  33.     servlet-mapping>     
  34.     <servlet-mapping>     
  35.         <servlet-name>AxisServletservlet-name>     
  36.         <url-pattern>*.jwsurl-pattern>     
  37.     servlet-mapping>     
  38.     <servlet-mapping>     
  39.         <servlet-name>AxisServletservlet-name>     
  40.         <url-pattern>/services/*url-pattern>     
  41.     servlet-mapping>     
  42.     <servlet-mapping>     
  43.         <servlet-name>SOAPMonitorServiceservlet-name>     
  44.         <url-pattern>/SOAPMonitorurl-pattern>     
  45.     servlet-mapping>     
  46.     <mime-mapping>     
  47.         <extension>wsdlextension>     
  48.         <mime-type>text/xmlmime-type>     
  49.     mime-mapping>     
  50.     <mime-mapping>     
  51.         <extension>xsdextension>     
  52.         <mime-type>text/xmlmime-type>     
  53.     mime-mapping>     
  54.        
  55. web-app>  SPAN>  
index.jsp AxisServlet org.apache.axis.transport.http.AxisServlet AdminServlet org.apache.axis.transport.http.AdminServlet 100 SOAPMonitorService org.apache.axis.monitor.SOAPMonitorService SOAPMonitorPort 5001 100 AxisServlet /servlet/AxisServlet AxisServlet *.jws AxisServlet /services/* SOAPMonitorService /SOAPMonitor wsdl text/xml xsd text/xml  

3) 部署 web project

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




 
 

4) 创建 deploy.wsdd文件

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

示例代码:


Xml代码 复制代码 收藏代码
  1. <SPAN><deployment xmlns=""    
  2.   
  3.     xmlns:java="providers/java">    
  4.   
  5.         
  6.   
  7.     <service name="helloserver" provider="java:RPC">    
  8.   
  9.             
  10.   
  11.         <parameter name="className" value="Server.HelloServer" />    
  12.   
  13.           

    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=

    %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上输入:

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



     

    6) 生成客户端Client wsdl文件

    在IE上输入: ,点击文件 另存为.存到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代码 复制代码 收藏代码
    1. package client;   
    2.   
    3.     
    4.   
    5. import java.net.URL;   
    6.   
    7.     
    8.   
    9. /**  
    10.  * webservice  客户端 程序  
    11.  */  
    12.   
    13. public class ClientTest {   
    14.   
    15. public static void main(String[] args) {   
    16.   
    17. HelloServerService service = null;    
    18.   
    19.         HelloServer helloServer = null;    
    20.   
    21.         try {    
    22.   
    23.             System.out.println("connect......");    
    24.   
    25.             String StrPortAddress = "";    
    26.   
    27.             URL portAddress = new URL(StrPortAddress);    
    28.   
    29.             // 得到客户端服务    
    30.   
    31.             service = new HelloServerServiceLocator();    
    32.   
    33.             // 得到客户端stub    
    34.   
    35.             helloServer = service.gethelloserver(portAddress);   
    36.   
    37.             // 测试服务方法    
    38.   
    39.             String resultStr = helloServer.sayHello("iteye");   
    40.   
    41.             System.out.println(resultStr);    
    42.   
    43.         } catch (Exception e) {    
    44.   
    45.             e.printStackTrace();    
    46.   
    47.         } finally {    
    48.   
    49.             System.out.println("End.");    
    50.   
    51.         }    
    52.   
    53. }   
    54.   
    55. }  
    package client; import java.net.URL; /** * webservice 客户端 程序 */ public class ClientTest { public static void main(String[] args) { HelloServerService service = null; HelloServer helloServer = null; try { System.out.println("connect......"); String StrPortAddress = ""; 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."); } } }  

    终结 ……

阅读(5659) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~