采用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.ziphttp://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这一部分就此介绍完毕。

原文地址:https://www.cnblogs.com/hanxiangduo/p/2647411.html