网上有一些AXIS的安装文档,不是很详细,而且,我按网上的资料安装得不是很成功,老是报错,可能是因为使用了较新版本的Tomcat,AXIS.
经过多番努力,终于配置成功,把安装过程和心得和大家分享一下.
一.简介
什么是SOAP?SOAP是一个应用程序间的基于XML的通信工具和规范.SOAP最初由MicroSoft和Userland公司开发,已经演化了好几个版本,当前的版本SOAP1.1正飞速发展.W3C的XML协议工作组正努力把它发展为一个真正的开发的标准.SOAP1.2草案已经发布,它能澄清 1.1版规范的容易混淆的地方.
什么是Axis?Axis总体上是一个SOAP引擎,但又不仅仅是个引擎,它还:1)是一个简单的独立的服务器2)是一个可插入到servlet引擎(如Tomcat)中的服务3)可扩展的支持WSDL4)能根据WSDL产生JAVA文件/类5)包括一些例子程序6)包括一个可以监控TCP/IP包的工具
Axis起源于IBM的SOAP4J,是Apache SOAP的第三代产品,相对于以前的版本,它有如下特性:1)快速,它使用了基于事件的SAX解析机制.2)灵活,用户可以灵活定制扩展.3)稳定,接口将会变动很小.4)基于组件开发.5)支持WSDL1.1
二.准备
1.安装Tomcat5.0.28,这是当前稳定版本.Tomcat运行在80端口.访问http://localhost/检查Tomcat是否安装成功.
(Tomcat+Apache+Mysql的整合安装,详见另外一篇.)
2.下载AXIS:
官方站点:http://xml.apache.org/axis/index.html
下载软件:axis-bin-1_2_1.tar.gz
3.下载相关包:
a.mail.jar 下载地址:http://java.sun.com/products/javamail
b.activation.jar 下载地址:http://java.sun.com/products/javabeans/glasgow/jaf.html
c.xerces.jar 下载地址:http://xml.apache.org/xerces-j/index.html
d.xmlsec-1.2.1.jar 下载地址:http://xml.apache.org/security/
三.安装
1.将四个相关包,全部拷到<CATALINA_HOME>/common/lib目录(Tomcat安装目录下的common/lib)下
2.解压axis-bin-1_2_1.tar.gz,将压缩包里的webapps/axis拷到网站根目录下(如果Tomcat是默认配置,那就是<CATALINA_HOME>/webapps/ROOT目录).
3.
修改Tomcat的配置文件server.xml(<CATALINA_HOME>/conf/server.conf)
在</Host>前加入:
<Context path="/axis" docBase="C:\Program Files\Apache Software Foundation\Tomcat\webapps\ROOT\axis" debug="0" reloadable="true" > </Context>
(docBase里是你的实际axis存放的目录)
注意,此步至关重要,AXIS的安装文档中没有提到此步,导致很多人安装不成功.
如果没有此步,访问http://localhost/axis时,提示如下错误:
Can't find bundle for base name i18n, locale en_US(zh_CN)
表面是上看i18n国际化的问题,但既使i18n.properties,i18n_zh_cn.properties存在,也无法找到.
网上很多朋友安装到此,无法继续下去,我也找了很多资料,都没有解决.后来查看Tomcat的文档,猜测是Tomcat配置的问题,经测试,终于成功.
可能Tomcat的前期版本,不需此设置.没有测试过.
另外,也可以将axis/WEB-INF/classes/*,axis/WEB-INF/lib/*的所有文件,拷到<CATALINA_HOME>/common/lib/这个方法比较麻烦.
注:AXIS客户端,需要拷贝axis/WEB-INF/lib/*到<CATALINA_HOME>/common/lib/
四.测试
重新启动Tomcat.
1.访问:http://localhost/axis
点击:Validation - Validate the local installation's configuration测试是否有错.
2.
写个小程序:
public class HelloService
{
public String sayHello(String username)
{
return "Hello:"+username;
}
}
另存为axis目录下HelloService.jws
再能过WEB访问:
http://loalhost/axis/HelloService.jws
http://loalhost/axis/HelloService.jws?method=sayHello¶meter=ipaddr
另外,如果是Apache+Tomcat整合在一块,以上配置后,还需要更改Apache的配置,在httpd.conf中加入:
JkMount /axis/* ajp13
通过Apache可以访问axis的Servlet
五.AXIS介绍补充
Apache Axis是Apache WebService项目中的子项目,其最初起源于IBM的"SOAP4J",应该属于最早的一批用于构造基于SOAP应用的Framework。
目前Apache Axis已经发展到了第三代,其核心是一个SOAP处理器,用于开发包括客户端,服务器端,SOAP Gateway等各种应用。事实上Apache Axis在了1.0版后,其发行版本还包括了完整的J2EE服务器插件, WSDL支持和生成,TCP/IP监视器等组件,从这个意义上来说Apahce Axis已不仅仅是个SOAP框架了,它包含了除了UDDI外对整个Web Service协议栈(Protocol Stack)的支持。
对大多数关心Macromedia产品的人来说,Macromedia是Axis小组的核心成员之一,他们在几乎所有J2EE服务器端的产品线中包含了 Axis,也就是说Macromedia对WebService的支持是通过Apache Axis实现的,这其中包括了JRun, Flex, ColdFusion。即便是Flash Remoting,由于其核心还是SOAP,所以也是使用了Axis的SOAP框架。
和.NET 的WS不同,Axis是一个非常易于扩展的体系结构,其设计的核心思想是建立一个数据处理的管道,通过把handler编织成一条处理链从而无限扩展其可能性。打个比方,在输入部分开发人员既可以编写基于HTTP Basic Authentication的用户验证模块也可以插入SOAP Auth模块用于验证请求,而输出部分既可以通过XML binding把结果输出为SOAP XML也可以象Flash Remoting那样把结果输出成binary格式。
同时Axis也提供了所有的处理模块,使得用户能在最快的时间把服务器组件发布成WS.总的来说Axis有以下几个特点:
速度 - Axis 使用 SAX 而不是 DOM 来处理XML请求,所以速度上有很大的改善。
灵活性 - 刚才也提到了,Axis的体系结构是一个全开放式的处理器,所以扩展模块极为方便。面向组件的发布方式 - 处理链上可重复使用组件来完成类似的操作。
Transport 框架 - Axis的核心和底层的transport完全分离,也就是说不管WS的Transport是HTTP, FTP, MAIL, MESSAGE QUEUE,只要插入对应的Transport模块即可,而不需改动其他部分。
WSDL1.1支持 - 可自动由Java Object生成WSDL