使用axis2进行webservice的编写:
axis2感觉和axis1完全不一样,更智能化,但。。。越智能越摸不透了
1、下载axis2-1.6.2-bin、axis2-1.6.2-war 、axis2-eclipse-service-plugin-1.6.2.zip 三个包,下载地址 http后面是
axis2-1.6.2-war.zip
axis2-1.6.2-bin.zip
axis2-eclipse-service-plugin-1.6.2.zip
(该文件加压后,将plugin文件放到eclipse的plugins目录下,重启eclipse)
2、解压axis2-1.6.2-bin.zip,lib目录下是axis2的类库,需要加载到项目中
3、解压axis2-1.6.2-war.zip,发现下面有一个文档叫axis2.war的文件,很重要,
将此文件直接copy到tomcat的webapps目录下,当重新开启tomcat时,此文件将会被自动加载,
且在webapps目录下面会新生成一个axis2的项目 文件夹,一个完整的项目
应该有axis2-web、META-INF、org、WEB-INF四个目录,其中axis2-web与axis2-1.6.2-bin.zip中的一致
4、运行如下url ,显示如下,可以点击进Services
5、进行webservice文件的编译:
右键项目名称,点击new,选择(回顾第一点的第三个文件,原本eclipse下面是没有该选项的)
按照步骤,先选择tomcat下要项目的web-inf\class文件夹,“Include.class file only”应该是勾选状态,
Next(点选skip Wsdl),
next,
next(此处让配置xml文件,可以选择“Generate....”,不用配置,后面介绍干嘛用的),
next (Outfilelocation:选择路径xxx\tomcat\webapps\axis2\web-inf\services,这里的就是自动将webservice生效文件直接生成到了axis2的目录下面)
(output File name:填写webservice的名称 whinfo),点击 Finish,完成配置
到xxx\tomcat\webapps\axis2\web-inf\services下面看到一个新的文件whinfo.arr,可以解压缩,发现其实就是将我们整个项目的class全部压缩进来了
所以axis2在调用webservice的时候可以说和原项目根本没有关系,只和webapps/axis2有关 ,原来的项目全被打包放进来了
其中whinfo.arr中有met-inf文件夹下的 service.xml文件,可以进行一些webservice参数的配置,如targetnamespace之类的
以上,全部完成,使用之前一篇的客户端进行连接,测试ok(可以直接用ie测试,在url后面加上?message=xxxxxxxxxxxxxx)
但是,使用客户提供的程式确无法连接,参数传不过来,报arrayindexout错误。。。实在无语,搜索很多文章都没能够解决
客户的程式是用axis编写的,不知道是否和这个有关
之前用C#.NET、VB.net编写的同样的webservice也都是,自己测试完全ok,但是客户的程式一旦调用就收不到参数。。。。。。。。。
可能是webservice的某些参数没有确认到