使用axis配置webservice 方法

 以tomcat为例,网上找个axis-bin-1_4.zip

找到%TOMCAT_HOME%tomcat安装目录

 

 

1解压axis-bin-1_4.zip这个包可以看到webapps目录,双击进入把里面的AXIS文件夹拷到%TOMCAT_HOME%/webapps目录下,之后拷贝activation.jarmail.jartools.jar%TOMCAT_HOME%/webapps/axis/WEB-INF/lib目录下(还需要把解压出来的文件夹里的lib目录下的jar包也引入,不然写程序的时候会没工具类导入)。启动tomcat,访问http://localhost:8080/axis/happyaxis.jsp如果访问成功,表明基本的配置你已经做完。

 

 

2现在来说一下最关键的Webservice的发布。AXIS提供了两种发布方式,一种是即时发布(Instant Deployment),另外一种是定制发布(Custom Deployment)。即时发布提供了一种非常简单的webservice的发布方式,但是其中限制太多,因此在实际的开发中定制发布才是首选。

 

 

一、即时发布:

 

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

 

java 代码

public class HelloAXIS {   
   public String Hello(String name){   
       return "AXIS say hello to " + name;   
    }   
}   


 

       HelloAXIS.java 文件改成HelloAXIS.jws 然后拷贝到%TOMCAT_HOME%/webapps/axis目录下,启动Tomcat之后访问http://localhost:8080/axis/HelloAXIS.jws 如果能看到 Click to see the WSDL这个超链接就说明已经发布成功了,点击进去就可以看到这个WebserviceWSDL描述文件。server端的发布已经完成了,接下来就是编写Client端测试代码了。

 

java 代码

package com.yourcompany.Test;   

  

import java.net.URL;   

  

import javax.xml.namespace.QName;   

  

import org.apache.axis.client.Call;   

import org.apache.axis.client.Service;   

  

public class Test {   

       

   public static void main(String[] args) throws Exception{   

       String targetEendPoint ="http://localhost:8080/axis/HelloAXIS.jws";   

       Service service = new Service();   

       Call call = (Call) service.createCall();               

       call.setOperationName(new QName(targetEendPoint,"Hello"));   

       call.setTargetEndpointAddress(new URL(targetEendPoint));   

       String result = (String) call.invoke(newObject[]{"Robert"});   

       System.out.println(result);   

   }   

}   


 

4定制发布:

 

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

 

 

 

java 代码

package com.chnic.webservice;   

public class HelloWorld {   

   public HelloWorld(){         

   }   

   public String hello(String str){   

       return "Hello " + str;   

   }   
       
   public int add(int a, int b){   

       return a + b;   

   }     

}    


 

一个带包的很简单的类,在eclipse下编译后按照包名拷到 %TOMCAT_HOME%/webapps/axis/WEB-INF/classes目录下。以这个类为例,拷贝完之  

后这个HelloWorld.class的路径就是

 %TOMCAT_HOME%/webapps/axis/WEB-INF/classes/com/chnic/webservicePS如果嫌这样太麻烦,可以另外建一个Java Web工程用myeclipse的发布工具发布到Tomcat之后,整体一次性拷贝到websericve的工程中。

 

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

 

 

<deployment xmlns="http://xml.apache.org/axis/wsdd/"            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">          

    <service name="HelloWorld"provider="java:RPC">  

        <parameter name="className" value="com.chnic.webservice.HelloWorld"/>  

        <parameter name="allowedMethods"value="*"/>       

    </service>  

</deployment>


 

简单的介绍下各个节点的含义:

"HelloWorld"当然是这个webservice的名字,后面紧跟的javaRPC指的是服务类型。这里一共有有4种类型,分别是:RPC,Document, Wrapped Message。有兴趣可以看下 org.apache.axis.providers这个包和子包下面的类的API文档。之后的parameter节点第一个当然是指出具体的类,第二个从字面上也很好理解:允许调用的方法。这里的配置告诉引擎可以调用所有的public方法,当然你也可以自己指定。

 

 

编写完配置发布文件之后,cmd打开windows的控制台,进入%TOMCAT_HOME%/webapps/axis/WEB-INF目录下键入如下命令

 

java org.apache.axis.client.AdminClientdeploy.wsdd

 

或者

javaorg.apache.axis.client.AdminClient –l http://localhost:8088/axis/services/HelloWorld  deploy.wsdd

 

控制台显示<Admin>Done processingAdmin说明配置成功

 

在此,需要将需要的jar包加入classpath

 

创建环境变量,设置AXIS的环境变量.

这种方式的编码,先要设置一下命令行的环境.右键我的电脑――>属性――>

选择高级选项卡――>新建用户变量――>输入用户变量如下:

 变量名:AXIS_LIB

   变量值: E:/tomcat5.28/Tomcat5.0/webapps/axis/WEB-INF/lib

变量名:CLASSPATH

变量值:.;%AXIS_LIB%/axis.jar;

%AXIS_LIB%/activation.jar;

%AXIS_LIB%/axis-ant.jar;

%AXIS_LIB%/commons-discovery-0.2.jar;

%AXIS_LIB%/commons-logging-1.0.4.jar;

%AXIS_LIB%/jaxrpc.jar;

%AXIS_LIB%/log4j-1.2.8.jar;

%AXIS_LIB%/mail.jar;

%AXIS_LIB%/saaj.jar;

%AXIS_LIB%/wsdl4j-1.5.1.jar;

%AXIS_LIB%/xmlsec-1.4.0.jar;

%AXIS_LIB%/dom4j-1.6.1.jar;

变量名:AXIS_HOME

变量值:E:/tomcat5.28/Tomcat5.0/webapps/axis

 

 

发布成功之后你可以通过访问http://localhost:8080/axis/servlet/AxisServlet 来查看你所有的定制发布的服务

 

客户端测试代码

String targetEendPoint ="http://localhost:8080/axis/services/HelloWorld";  

Service service = new Service();  

Call call = (Call)service.createCall();  

call.setTargetEndpointAddress(newURL(targetEendPoint));  

 

call.setOperationName(newQName(targetEendPoint, "hello"));       

String result = (String) call.invoke(newObject[]{"Robert"});  

System.out.println(result);  

 

call.setOperationName(newQName(targetEendPoint, "add"));  

Integer res = (Integer) call.invoke(newObject[]{new Integer(1), new Integer(2)});  

System.out.println("The result is:" + res);


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值