摘要
1.环境介绍
2.所需资源下载地址
3.提醒事项说明
4.入门案例实战
5.当然是我最喜欢的打赏环节啦(坚持免费,动力源泉啊)
ps:案例中所需的所有jar包和文件全部可以免费直接下载,转载请注明出处.
进入正题
开发环境==>JDK 1.7 + Eclipse 4.4+ Tomcat
7.0.57 + AXIS 1.4。
AXIS 1.4==> 官方下载地址http://archive.apache.org/dist/ws/axis/1_4/
下载截图
百度云下载链接,内涵axis,tomcat.JDK等资源,所需要额外jar包
链接:https://pan.baidu.com/s/1wQfOzwoCKOoCDU_KLFynDQ
提取码:3vwf
提醒事项
1.学习一种新的技术,官方提供的资料中往往带有简单的demo(案例)和API帮助开发者开快速上手,AXIS也不例外
a)axis-bin-1_4.zip压缩包解压之后图如下,双击webapps文件夹看到axis文件夹
2.AXIS 提供了两种服务发布方式,一种是即时发布(Instant Deployment)少用,另外一种是定制发布(Custom Deployment)常用。
3.webservice axis1.4在请求与响应参数方面,不支持List类型,但可以支持数组;如List<Student> 可以修改成Student[]写法
4.在提供的服务接口中,如有自定义实体bean、数组等复杂类型时,需要对其实体对象进行序列化和反序列化
5.若有其他提醒事项,欢迎各位评论区补充.
准备就绪进行实战
1.使用axis压缩包内自带的DEMO进行测试配置
a)将下载的axis-bin-1_4.zip文件解压后的webapps文件下的axis文件拷贝到本机TOMCAT安装路径\webapps 目 录 下
b)之后将 activation.jar 、 mail.jar 、 tools.jar三个jar包拷贝到本机TOMCAT安装路径\webapps\axis\WEB-INF\lib
c)启动tomcat==>可直接双击tomcat/bin/startup.bat文件启动
d)浏览器访问http://localhost:8080/axis/happyaxis.jsp页面显示如下,则配置成功
第一种发布方式(即时发布),限制太多,不支持带包的类,但是非常简单,方便入门体验axis,(ps,请先完成以上准备阶段再进行以下实战)
1.用记事本编辑一段简单java文件,作为测试的待发布文件==>HelloKePP.java文件
2.将HelloKePP.java文件放入到%TOMCAT_HOME%/webapps/axis目录下(也就是在上面准备就绪阶段中axis目录下),同时将HelloKePP.java文件后缀名更改成HelloKePP.jws
3.再次启动tomcat(可直接双击tomcat/bin/startup.bat文件启动),若此时tomcat已经启动,可以直接点击shutdown.bat停止之后再次启动
4.启动之后打开浏览器访问连接http://localhost:8080/axis/HelloKePP.jws,页面显示如下,这时一个简单的服务就发布成功了
5.页面可以点击click to see the WSDL查看你所发布服务具体描述文件(WSDL)
6.服务端已经准备完毕,以下客户端
a)在eclipse下创建java项目做为客户端
b)客户端代码如下,
1 package com.kepp.axis.client;
2 import java.net.URL;
3 import javax.xml.namespace.QName;
4 import javax.xml.rpc.ServiceException;
5 import org.apache.axis.client.Call;
6 import org.apache.axis.client.Service;
7 /**
8 * 及时发布方式
9 * 客户端测试类
10 * @author newer
11 */
12 public class ClientDemo {
13 public static void main(String[] args) throws Exception {
14 //直接给定服务端口访问连接
15 String targetEntPoint = "http://localhost:8080/axis/HelloKePP.jws";
16 Service service = new Service();
17 Call call = (Call)service.createCall();
18 //设置的xml文件中operation的name值,需要和wsdl中的operation一致
19 call.setOperationName(new QName(targetEntPoint,"Hello"));
20 //设置新的连接地址值
21 call.setTargetEndpointAddress(new URL(targetEntPoint));
22 //使用反射机制生成对象,传入需要传入的数据即可
23 String result = (String)call.invoke(new Object[]{"短腿基"});//可以i输入任意字符串,这就相当于调用了其他系统提供服务接口
24 System.out.println(result);//KePP say hello to 短腿基
25 }
26 }