采用axis2c进行webservice发布的流程2-为服务书写wsdl文件
1、为服务书写wsdl文件
Wsdl的书写可以自己手写,也可以通过eclipse自动生成。手写的话参考下已有的wsdl。下面介绍如何采用axis2的eclipse插件,实现wsdl文档的自动生成过程。以及这些插件在使用过程中的错误处理。
当然,生成的wsdl文档如果不满意,也可以自己做些修改。
1.1下载eclipse的axis2插件
从 http://archive.apache.org/dist/ws/axis2/tools/1_4/axis2-eclipse-codegen-wizard-1.4.zip和http://archive.apache.org/dist/ws/axis2/tools/1_4/axis2-eclipse-service-archiver-wizard-1.4.zip 下载插件文件。
1.2安装插件
将下载好的插件解压缩后,将其复制到eclipse的插件目录下,一般在eclipse的安装目录下的plugin目录下。如果在64位的centos上采用rpm安装,我的目录在/usr/lib64/eclipse/plugins下,可以参考下。
1.3书写服务类
可以通过书写一些服务的类以及方法,一个类负责所有的方法即operation的实现,其中该类的名字与最终的服务是相对应的。同时构造方法的参数和返回值类,这些类最终是要生成wsdl中的message的。
通过eclipse的fileànew新建一个java工程,并添加对应的服务类,如下图。
在这里定义了一个服务类,这里只是挑了一个最简单的例子,做参考之用。
1.4生成wsdl文件
采用插件生成wsdl时,需要先将整个项目打包jar,然后通过插件才可以生成对应的wsdl。这一部分主要介绍jar的打包过程以及通过插件生成wsdl流程。
1.4.1项目打包成jar
书写完成后,将整个项目打包生jar包,打包过程采用eclipse自带的打包工具,这里比较详细地介绍了打包的过程,对于javaer来说这个比较简单,但考虑到像我这样对java不熟的人,就把详细的过程列了出来:
在弹出的项目中选择java下的JAR file选项:
选择next执行下一步,如下图:
设定好要打包的jar所在的目录,并选中项目要打包的文件,配置无误Finish完成jar的生成。如果在项目过程中有更改,可以通过Project下的Clean对当前项目做清理,然后重新打包。
1.4.2生成wsdl文件
下面通过图示,一步一步地展示如何使用axis2的插件生成wsdl文件,在新建工程中选中其它任务。
在其它任务中选择Code Generator生成向导。
此处的主要任务是从java代码中生成wsdl文件,因此选择第二项从java源文件中生成wsdl代码。
在生成wsdl文件时,需要上一步产生的项目jar文件包,通过add jar将上一步产生的文件包加进来,选择要生成web服务的类,此处是com.ips.server.DmsServer,所有这些无误后,必须点击Test class Loading 测试类是否可用。
在类加载完毕后,下一步进入到生成wsdl中命名空间的定义,这里可以依据自己的需要作修改。
选择要输出的wsdl目录。
找到对应的wsdl文件,可以在此基础上作些定制修改啥的。
至此,wsdl的生成就此完结。如果手写wsdl文件,那么就无需上述步骤了。
1.4.3插件错误处理
在生成wsdl文件的过程中,eclipse的axis2插件有时候会有各种不给力,出现错误,我遇到的是An error occurred while completing process-java.lang.reflect.InvocationTargetException,下面就介绍如何解决该错误。(这些解决方法也是从网友那里得来的,自己进行了验证)。
解决方法1、
Step1、从AXIS2(就是axis2的java版本有现成编译好的jar)的LIB库中复制"geronimo-stax-api_1.0_spec-1.0.1.jar"和 "backport-util-concurrent-3.1.jar"文件到eclipse插件Axis2_Codegen_Wizard_1.3.0的lib目录中,同时修改Axis2_Codegen_Wizard_1.3.0下的plugin.xml文件,在<runtime>中添加
<library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar">
<export name="*"/>
</library>
<library name="lib/backport-util-concurrent-3.1.jar">
<export name="*"/>
</library>
到plugin.xml文件中,保存!
Step 2、将 $workspace位置\.metadata\.plugins下目录 Axis2_Codegen_Wizard 删除
step 3、在命令行下切换至$ECLIPSE_HOME目录,然后执行:
eclipse –clear
解决方法2、
如果进过此步依旧有错误出现,则有可能是插件的版本问题:
在/plugins/Axis2_Codegen_Wizard_1.3.0/plugin.xml中
<plugin
id="Axis2_Codegen_Wizard"
name="Axis2 Codegen Wizard Plug-in"
version="1.3.0"
provider-name="Apache Software Foundation"
class="org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin">看看自己下载的axis2版本是否和这个配置一致。
此处下载的版本是axis2-1.4.1则需修改上面的配置为
<plugin
id="Axis2_Codegen_Wizard"
name="Axis2 Codegen Wizard Plug-in"
version="1.4.1" //对应的版本号
provider-name="Apache Software Foundation"
class="org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin">
然后再将文件夹的名字Axis2_Codegen_Wizard_1.3.0改为Axis2_Codegen_Wizard_1.4.1
修改完以上2步重新启动eclipse即可,然后应该就一切顺利了。
wsdl这一部分就此介绍完毕。
posted on 2012-08-20 13:22 hanxiangduo 阅读(506) 评论(0) 编辑 收藏 举报