一、环境准备
Tomcat6.0 java_JDK_1.6 Axis2 Ant MyEclipse6.5
需要注意的是:以下环境变量需要配置
JAVA系列、Axis2、Ant
二、插件准备
生成WebService所需要的wsdl文件及反向生成代码需要用到以下插件。
以下列出下载地址:
http://archive.apache.org/dist/ws/axis2/tools/1_4/
在该地址下下载:axis2-eclipse-codegen-wizard-1.4.zip
axis2-eclipse-service-archiver-wizard-1.4.zip
安装步骤:
将插件解压缩到与 D:\Program Files\MyEclipse 6.5\eclipse\plugins 类似的目录中,
将Axis2_Codegen_Wizard_1.2.1改名为 org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin,
将Axis_Service_Archiver_1.0.0改名为 org.apache.axis2.tool.Axis_Service_Archiver_1.0.0
如果安装重启没有出现 Axis2 Wizards 请参见
http://hi.baidu.com/apolorwang/blog/item/c58dcb22cf7fe8f5d6cae23c.html/cmtid/c79a8588b5d6579ea5c272b7
三、编写服务器端代码
1、编写完代码后产生所有工程的jar包
2、根据jar包产生所需要的wsdl
使用File-->new-->other--> Axis2 Wizards 目录下的Axis2 Code Generator
选择从Java源文件生成WSDL选项后点击下一步输入你需要使用的Service类的完整类名(包名+类名)
点击 Add Jar 后选择步骤1中生成的Jar包。最后是点击测试加载类,提示成功后点击完成按钮。
注意: 在Axis2的安装目录中的lib下缺少backport-util-concurrent-3.1.jar会导致生成不了代码的错误。
- copy %AXIS2_HOME%\lib\backport-util-concurrent-3.1.jar 到下列文件夹
%ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\lib,
- 注册此 jar 包: 編輯 %ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml ,
在 <runtime> 內加入下面的字串:
<library name="lib/backport-util-concurrent-3.1.jar">
<export name="*"/>
</library>
若问题仍存在, 尝试改变Eclipse 使用的 JRE, 换成 JAVA 6
- 使用 JRE 1.6 启动 Eclipse 后, 若仍有问题, 试着加入 -clean 参数启动 Eclipse, 清除 osig cache:
eclipse.exe -vm "c:\java\jre1.6.0_05\bin\java.exe" -clean -console -consoleLog -debug -vmargs -Xmx384M
- 关闭 Eclipse 后, 再以一般方式启动 Eclipse, 应可解决问题
相关问题地址:http://www.blogjava.net/CrazyJava/archive/2009/05/10/223263.html
3、根据步骤2产生的wsdl的文件反向生成服务器与客户端得源代码。
使用File-->new-->other--> Axis2 Wizards 目录下的Axis2 Code Generator
选择从WSDL文件生成点击下一步选择步骤2生成的WSDL文件-NEXT->出现生成代码的具体策略选择。
Codegen option 我这里只有default与custom两个选项 选择custom,下面就有很多东西可以选择了
输出语言肯定是Java了;ServiceName好像也不能修改是你在步骤2中决定的;
端口名称就默认吧,其他的我也不知道(如果哪位高人知道请补充一下);下面一个是数据绑定模式,我就用的adb的,
有adb、xmlbean、jibx、none;custom package name 就默认吧 (这里翻译什么好?)
测试用例的生成就不要选了 感觉没什么用 会吧生成的代码弄乱的
代码的生成建议分两部:生成服务器端代码与生成客户端代码(代码生成到2个文件夹吧)
客户端的就选择只用同步方式生成吧
服务器端得代码就只选择生成services.xml
点击下一步就是选择生成代码位置:工程路径与本地路径
4、使用ant编译步骤3生成的代码产生Jar包与aar包还有相应客户端需要引用的包。
这里基本使用2个命令就可以搞定了 1:ant 2:ant jar.all
5、配置服务器端
引入Axis2所有的Jar包,配置web.xml。这个配置比较常见可以参见下载Axis2中的war包
引入服务器端生成的jar包。
在WEB-INF下建立services文件夹,把步骤4中生成的.aar包放到里面 .aar文件中会包含有class与META-INF文件夹
META-INF文件夹有3个文件2个最重要的文件时services.xml与一个.wsdl文件
找到服务器端得生成代码会发现一个由 “服务名”+Skeleton组成的Java类,将它放到你选择的服务类相同的包中。
此时这个类中有所有你希望对外公布的接口方法,但所有的方法都只是抛出了一个异常。这里需要将方法
的实现重写为你需要的业务逻辑。然后return回给客户端。
完成后可以通过以下方式测试你服务器的部署是否成功:
<你工程的发布地址>/services/UserService?wsdl
如果正常显示WSDL中的内容则发布成功!
6、配置客户端
引入Axis2所有的Jar包,配置web.xml。这个配置比较常见可以参见下载Axis2中的war包
引入客户端器端生成的jar包。
可以引用服务代理类来调用服务器端代码了。这里客户端得请求都会传给步骤5中“服务名”+Skeleton组成的这个类
图片上传好慢 算了 截图了 jar包自己下吧
补充一点因为安装的JDK1.6所以在自动编译生成的代码都是基于JDK1.6的,所以在发布服务器端得时候工程的编译环境是6.0而不是5.0
刚看见一个跟我这个差不多的网址:
http://blog.csdn.net/xx_liuhui/archive/2008/10/14/3073270.aspx 里面有很多图片描述