关于用Axis2+Tomcat生成WebService的服务端

因为公司需要用到webservice服务端和客户端之间交互发送文件,所以特使用不同方式(wsimport,Axis+Tomcat,Ecplise的webservice工具生成,CXF)来实现了webservice的服务端和客户端

下面用Axis简单粗暴的方式来生成webservice的服务端

上操作步骤:

一.前提需要准备的一些环境

1. Ecplise

2.Tomcat (需要知道你的tomcat的安装路径,以下的我的tomcat安装路径)

3.Axis1.4 (可以去CSDN下载或Apache官网下载)

二.准备环境部署Axis1.4+Tomcat

1.解压axis-bin-1_4.zip,找到webapps目录,再找到axis文件夹进行拷贝,拷贝完之后需要把它放在你的Tomcat的安装路径的webapps目录下。

2.在jdk安装目录的lib下找到activation.jar、mail.jar、tools.jar这三个jar包,将其拷贝到你的Tomcat安装目录\webapps\axis\WEB-INF\lib目录下。

 

3.启动Tomcat(双击Tomcat9w.exe)

效果图:

要想服务端能访问到,它需要一直启动着,等不用了就可以关了(Stop)

4.验证是否成功

访问http://localhost:8080/axis/happyaxis.jsp 如果访问成功,恭喜你!基本的配置你已经做完了

 5.Webservice的正式发布,AXIS提供了两种发布方式,一种是即时发布(Instant Deployment),另外一种是定制发布(Custom Deployment)。即时发布提供了一种非常简单的webservice的发布方式,但是其中限制太多,因此在实际的开发中定制发布才是首选。这里也将会以定制发布为重点来介绍。

新建一个简单的java工程

6.需要获取到java工程类的class文件,Ecplise的话,可以设置自动编译,就能获取class文件 

7.找java工程类的class文件

以下是我的工程存放路径生成的class文件,你可以按照自己的路径找

 然后连包带class文件一起拷贝到你的安装目录\webapps\axis\WEB-INF\classes下

即存放完之后的完整路径为:

Tomcat安装路径\webapps\axis\WEB-INF\classes\com\yinxin\service\HelloWorld.class,

8.接下来开始编写发布文件:deploy.wsdd

在Tomcat安装目录\webapps\axis\WEB-INF 目录下建立这个文件(deploy.wsdd)并在其中添加如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<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.yinxin.service.HelloWorld" />
        <parameter name="allowedMethods" value="*" />
    </service>
</deployment>    

 简单的介绍下各个节点的含义,"HelloWorld"当然是这个webservice的名字,后面紧跟的java:RPC指的是服务类型。这里一共有有4种类型,分别是:RPC, Document, Wrapped 和 Message。有兴趣可以看下 org.apache.axis.providers这个包和子包下面的类的API文档。之后的parameter节点第一个当然是指出具体的类,第二个从字面上也很好理解:允许调用的方法。这里的配置告诉引擎可以调用所有的public方法,当然你也可以自己指定。 编写完配置发布文件之后,cmd打开windows的控制台,进入Tomact安装路径\webapps\axis\WEB-INF目录下键入如下命令

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 来查看你所有的定制发布的服务。

在同级目录生成的server-config.wsdd文件展示:

 通过访问 http://localhost:8080/axis/servlet/AxisServlet 来查看你所有的定制发布的服务。

 点击HelloWorld的wsdl链接,显示如下:

config.wsdd文件如下:

 9.看到上面,说明我们的axis发布的webservice服务器端已经完成。 
  接下来下面编写客户端测试发布的服务:

  需要导一些jar包 :(在axis-1_4解压包下的lib底下的jar包)


  新建一个HelloWorldTest测试类(HelloWorldTest.java)

package com.yinxin.service;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;

import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
//Axis客户端
public class HelloWorldTest {
	 public static void main(String[] args) {
	        try {
	            String targetEendPoint =  "http://localhost:8080/axis/services/HelloWorld" ;   
	            Service service =  new  Service();   
	            Call call = (Call) service.createCall();   
	            call.setTargetEndpointAddress( new  URL(targetEendPoint));   

	            call.setOperationName( new  QName(targetEendPoint,  "hello" ));        
	            String result = (String) call.invoke( new  Object[]{ "syp" });   
	            System.out.println(result);   

	            call.setOperationName( new  QName(targetEendPoint,  "add" ));   
	            Integer res = (Integer) call.invoke( new  Object[]{ new  Integer( 1 ),  new  Integer( 2 )});   
	            System.out.println( "The result is: "  + res);
	        } catch (MalformedURLException e) {
	            // TODO Auto-generated catch block
	            e.printStackTrace();
	        } catch (RemoteException e) {
	            // TODO Auto-generated catch block
	            e.printStackTrace();
	        } catch (ServiceException e) {
	            // TODO Auto-generated catch block
	            e.printStackTrace();
	        }  
	    }

}

效果图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉梦洛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值