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

  • 相关阅读:
    一、初识数据库
    面向对象—基础、名称空间、三大特性
    六、内置函数
    五、迭代器、生成器、装饰器
    四、global和nonlocal、函数名应用、格式化输出
    三、名称空间
    二、函数的参数
    shell脚本
    线性代数
    [模块] python调用java代码-jpype
  • 原文地址:https://www.cnblogs.com/hanxiangduo/p/2647411.html
Copyright © 2020-2023  润新知