加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用axis配置webservice 方法

发布时间:2020-12-17 02:00:06 所属栏目:安全 来源:网络整理
导读:?以tomcat为例,网上找个 axis-bin-1_4.zip 找到%TOMCAT_HOME% 为 tomcat 安装目录 ? ? 1 解压 axis-bin-1_4.zip 这个包可以看到 webapps 目录,双击进入把里面的 AXIS 文件夹拷到 %TOMCAT_HOME%/webapps 目录下,之后拷贝 activation.jar 、 mail.jar 、 to

?以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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读