转自:http://blog.csdn.net/ronghao100/archive/2005/06/08/390530.aspx

系列:http://www.blogjava.net/RongHao/archive/2007/06/12/123644.html

前天头告诉我用SOAP WEB服务开发一个客户程序,用来与企业内部的ERP进行交互。晚上赶快找相关的资料猛看,总算对SOAP有了一定的认识。干程序员这行真不容易,好象得不停地学习新东西,一不小心就被淘汰:(不过学习也是个很有意思的事情。好了,废话少说,让我们开始吧。

一、软件环境

1、axis-1_2  (从apache网站下载最新axis-bin-1_2.zip解压即可)

2、Tomcat5.0

3、JDK5.0

二、相关配置

1、在你的%TOMCAT_HOME%\common\lib下需要加入三个包 activation.jar、mail.jar、tools.jar

2、环境变量设置

AXIS_HOME 即axis-bin-1_2.zip解压的目录(我的是在F:\soap\axis-1_2)

AXIS_LIB    即 %AXIS_HOME%\lib

AXISCLASSPATH 即 %AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;也就是把%AXIS_LIB%下所用JAR文件都导入

三、实验一下

在%AXIS_HOME%\webapps下找到axis文件夹,将其整个拷贝到%TOMCAT_HOME%\webapps下,启动

Tomcat,打开浏览器访问http://localhost:8080/axis/,出现以下页面说明你配置成功了。很简单吧:)

四、发布我们的第一个程序

第一个程序简单的返回HELLO WORLD!

HelloWorld.java

public class HelloWorld {
  public String sayHello()
  {
    return "HELLO WORLD!";
  } 
}

我们的第一种发布方式:

将HelloWorld.java拷贝到%TOMCAT_HOME%\webapps\axis下,然后将其改名为HelloWorld.jws,这样AXIS就自然将其发布了。现在写个客户端程序访问一下:

TestClient.java

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

import javax.xml.rpc.ParameterMode;

public class TestClient
{
   public static void main(String [] args) throws Exception {
       
       String endpoint = "http://localhost/:" +"8080"+ "/axis/HelloWorld.jws";//指明服务所在位置

Service  service = new Service();  //创建一个Service实例,注意是必须的!
       Call     call    = (Call) service.createCall();//创建Call实例,也是必须的!

call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call设置服务的位置

call.setOperationName( "sayHello" );//注意方法名与HelloWorld.java中一样!!

String res = (String) call.invoke( new Object[] {} );//返回String,没有传入参数

System.out.println( res );
   }
}

我的测试是在jbuilder2005中,注意项目中要导入其自带的AXIS包(当然应该把其中JAR文件替换一下),可以看到程序返回了 "HELLO WORLD!"

可以看到在AXIS里发布服务其实是一件很容易的事,这是因为这个服务很简单的原因:)下面我们介绍第二种发布方式,这是常用的。

我们的第二种发布方式:

1、将HelloWorld.java编译成HelloWorld.class,放到%TOMCAT_HOME%\webapps\axis\WEB-INF\classes

2、在%TOMCAT_HOME%\webapps\axis\WEB-INF下新建deploy.wsdd文件,即SOAP服务发布描述文件

deploy.wsdd

<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="HelloWorld"/>
        <parameter name="allowedMethods" value="sayHello"/>
    </service>
</deployment>

在DOS下转换目录到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd

你会发现目录下多了一个server-config.wsdd文件,这就是AXIS的配置文件,以后所有的服务发布描述都会在里面找到。(当然,你可以直接修改它,不用再写deploy.wsdd)然后打开浏览器http://localhost:8080/axis/servlet/AxisServlet,你就会看到你的服务已发布

同样用客户端程序访问一下:(注意和上边的差别!!)

HelloClient.java

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

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

String endpoint = "http://localhost/:" +"8080"+ "/axis/services/HelloWorld";//注意!差别仅仅在这里!!

Service  service = new Service();
       Call     call    = (Call) service.createCall();
       call.setTargetEndpointAddress( new java.net.URL(endpoint) );
        call.setOperationName("sayHello"  );

String res = (String) call.invoke( new Object[] {} );

System.out.println( res );
   }
}

好了,相信你对AXIS已有了大致的了解。接下来将会涉及到传参数、JAVABEAN对象,及AXIS的安全问题,下次再说吧:)也欢迎和我,一个快乐的JAVA程序员,联系:)ronghao100@hotmail.com

[转载]AXIS学习笔记相关推荐

  1. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  2. 【转载】[学习笔记]共轭转置矩阵与伴随矩阵都用A*表示合理吗?

    最近在复习线代的时候被矩阵的厄米共轭弄得有点晕 找到一篇文章感觉不错 以下内容转载自知乎 裴以鹏 链接如下: https://zhuanlan.zhihu.com/p/87330558 这里是引用 [ ...

  3. [转载] opencv学习笔记7:图像加法与图像融合

    参考链接: python opencv 基础 4: addWeighted() 融合两张图像 图像加法 1.使用Numpy加法 运算方式:结果=图像1+图像2 原理:图像数据格式为unit8 8位二进 ...

  4. [转载] Python学习笔记——用装饰器decorator和Memoization记忆化提高效率,原理讲清楚了

    参考链接: 在Python中使用装饰器进行记忆 Python学习笔记--用装饰器decorator和Memoization记忆化提高效率 装饰器Memoization记忆化运用`functools`中 ...

  5. [转载]kaldi学习笔记:run.sh(egs/timit/s5)详细分析:从数据准备到特征提取

    from:http://blog.csdn.net/xingxingdeyuanwang6/article/details/47401875 首先看一下前三行: . ./cmd.sh [ -f pat ...

  6. (转载)[python学习笔记]Python语言程序设计(北理工 嵩天)

    作者:九命猫幺 博客出处:http://www.cnblogs.com/yongestcat/ 欢迎转载,转载请标明出处. 如果你觉得本文还不错,对你的学习带来了些许帮助,请帮忙点击右下角的推荐 阅读 ...

  7. [转载] python学习笔记

    参考链接: Python | a += b并不总是a = a + b 官网http://www.python.org/ 官网library  http://docs.python.org/librar ...

  8. [转载] python学习笔记2--操作符,数据类型和内置功能

    参考链接: Python中的Inplace运算符| 1(iadd(),isub(),iconcat()-) 什么是操作符? 简单的回答可以使用表达式4 + 5等于9,在这里4和5被称为操作数,+被称为 ...

  9. [转载] Python学习笔记——运维和Shell

    参考链接: 在C / C++,Python,PHP和Java中交换两个变量 目录 什么是运维 运维第一工具-shell编程 shell历史 执行脚本 基本语法 Shell脚本语法 条件测试:test ...

最新文章

  1. centos jdbc配置mysql_CentOS安装glassfish4.0配置jdbc连接mysql
  2. centos查看python版本_CentOS系统python默认版本由python2改为python3
  3. arduino 温度调节器_多点测平均温度实现智能控制(arduino-ds18b20)
  4. php自定义扩展函数,Laravel框架中扩展函数、扩展自定义类的方法
  5. [Android] 环境配置之Android Studio开发NDK
  6. POJ 1848 (一道不错的树形dp)
  7. 抑制恐慌,互联网能够做些什么?
  8. spring boot 使用swagger
  9. Django forms组件
  10. java bean jsp_JavaBean与Jsp
  11. 【Python脚本进阶】2.4、conficker蠕虫(上):Metasploit攻击Windows SMB服务
  12. 机器学习里的攻击-躲避攻击(Evasion attacks)
  13. python close函数_Python math.isclose() 方法
  14. LabVIEW-数值控件和布尔控件
  15. C++函数声明和函数定义
  16. [从源码学设计]蚂蚁金服SOFARegistry之时间轮的使用
  17. python猜密码游戏规则_Python实现的摇骰子猜大小功能小游戏示例
  18. 第七章-微分方程习题
  19. 数据结构:查找——按姓名查找学生信息
  20. Activiti动态审批实现方案

热门文章

  1. Go学习笔记—Channel通道
  2. isleapyear python_Python实战练习——打印日历教程
  3. 正在启动oracle universal,oracle的常见问题与解决
  4. 什么是类加载器?类加载器有哪些
  5. 威斯康星大学计算机专业找工作,威斯康星麦迪逊大学计算机申请条件有哪些?...
  6. 数据库:分享四个实用的SQLServer脚本函数,欢迎收藏
  7. 网络知识:内网、外网、宽带、带宽、流量、网速之间的联系?
  8. SQLServer常见的数学函数梳理
  9. 使用react的好处_react的优点是什么呀-问答-阿里云开发者社区-阿里云
  10. mysql使用jpa仓储查询报错_Jpa自动查询报错