首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自WSDL的Axis 1.4 WSDL服务

来自WSDL的Axis 1.4 WSDL服务
EN

Stack Overflow用户
提问于 2012-06-08 20:37:16
回答 1查看 8.7K关注 0票数 0

我需要从另一家公司的WSDL文件创建一个WSDL服务(服务器应用程序,而不是客户端)。我已经从WSDL创建了客户端应用程序,但从未创建过服务器应用程序。另一家公司没有提供文档,但我找到了this online (第64页);它来自2008年,但他们告诉我这些信息仍然有效(尽管链接不是)。我从这个zip file得到了Notification.wsdl和Notification.XSD。

我在命令行中使用了WSDL2Java:

代码语言:javascript
复制
java org.apache.axis.wsdl.WSDL2Java --server-side Notification.wsdl

并创建了几个java源文件和deploy/undeploy.wsdd文件。但是根据Axis文档,deploy.wsdd看起来并不像我期望的那样。它只包含:

代码语言:javascript
复制
<deployment
    xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
</deployment>

至少应该有一个<service>条目,或者我需要手动创建它吗?我希望它是自动创建的。WSDL文件中是否缺少某些内容?还是我在什么地方错过了一步?

戴夫

EN

回答 1

Stack Overflow用户

发布于 2012-06-11 01:44:23

如果您使用的是Axis1.4命令,WSDL2Java不会为您创建正确的.wsdd文件。您总是需要对其进行编辑。

我使用ANT来生成axis服务器端类:

代码语言:javascript
复制
   <target name="build-server-jar">
        <mkdir dir="${build}/libs_gen"/>
        <axis-generate serverside="true"
                       srcDir="${ant.dirs.wsdl}"
                       destDir="${build.ws.dir}/${project.name}-server"
                       wsdl="${project.wsdl}"
                       nspkg="${project.nspkg}"/>
        <javac srcdir="${build.ws.dir}/${project.name}-server"
               destdir="${build.ws.dir}/${project.name}-server"
               classpathref="classpath.build"
               includeantruntime="no"/>
        <jar destfile="${build}/libs_gen/my-axis-ws.jar"
             basedir="${build.ws.dir}/${project.name}-server"
             includes="**/*.class"/>
        <copy todir="${lib}" overwrite="true">
            <fileset dir="${build}/libs_gen" includes="my-axis-ws.jar"/>
        </copy>
    </target>

生成的deploy.wsdd文件如下所示:

代码语言:javascript
复制
<deployment
    xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

  <service name="MyAxis" provider="java:RPC" style="wrapped" use="literal">
      <parameter name="wsdlTargetNamespace" value="http://example.com/ws/myaxis"/>
      <parameter name="wsdlServiceElement" value="MyAxis"/>
      <parameter name="schemaUnqualified" value="http://example.com/ws/myaxis/types"/>
      <parameter name="wsdlServicePort" value="MyAxis"/>
      <parameter name="className" value="com.example.ws.myaxis.MyAxisPortBindingImpl"/>
      <parameter name="wsdlPortType" value="MyAxisService"/>
      <parameter name="typeMappingVersion" value="1.2"/>

      //Generated operations

      //Generated type mappings.

  </service>
</deployment>

然后,我必须将其编辑为如下所示:

代码语言:javascript
复制
<deployment
        xmlns="http://xml.apache.org/axis/wsdd/"
        xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

    <globalConfiguration>
        <parameter name="disablePrettyXML" value="false"/>
        <parameter name="sendXsiTypes" value="true"/>
        <parameter name="sendMultiRefs" value="true"/>
        <parameter name="sendXMLDeclaration" value="true"/>
    </globalConfiguration>

    <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
    <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
    <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

    <service name="MyAxis" provider="java:SPRING" style="wrapped" use="literal">
        <parameter name="springBeanId" value="mySpringBean"/>
        <parameter name="wsdlTargetNamespace" value="http://example.com/ws/myaxis"/>
        <parameter name="wsdlServiceElement" value="MyAxis"/>
        <parameter name="schemaUnqualified" value="http://example.com/ws/myaxis/types"/>
        <parameter name="wsdlServicePort" value="MyAxis"/>
        <parameter name="className" value="com.example.ws.myaxis.MyAxisImpl"/>
        <parameter name="wsdlPortType" value="MyAxisService"/>
        <parameter name="typeMappingVersion" value="1.2"/>

        //Generated operations

        //Generated type mappings

        <wsdlFile>WEB-INF/wsdl/MyAxis.wsdl</wsdlFile>
    </service>

    <transport name="http">
        <requestFlow>
            <handler type="URLMapper"/>
            <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
        </requestFlow>
    </transport>

</deployment>

为什么你的WSDL2Java命令不能生成服务、操作和类型映射我猜这取决于你使用的版本。

我使用了axis-1.4和axis-ant-1.4。它为我生成了一切,但我仍然需要做一些更改。因此,我建议您尝试ANT并使用这些版本,至少会生成服务、操作和类型映射。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10948981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档