0

他社の WSDL ファイルから Web サービス (クライアントではなくサーバー アプリ) を作成する必要があります。WSDL からクライアント アプリを作成したことはありますが、サーバー アプリは作成したことがありません。他の会社から提供されたドキュメントはありませんが、オンラインでこれを見つけまし(64 ページ)。2008年のものですが、情報はまだ有効であるとのことです(ただし、リンクは無効です)。このzip ファイルから Notification.wsdl と Notification.XSD を取得しました。

このコマンドラインで WSDL2Java を使用しました。

java org.apache.axis.wsdl.WSDL2Java --server-side Notification.wsdl

いくつかの Java ソース ファイルと deploy/undeploy.wsdd ファイルを作成しました。しかし、Deploy.wsdd は、Axis のドキュメントに基づいて期待したようには見えません。以下のみが含まれます。

<deployment
    xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
</deployment>

<service>少なくともエントリがあるべきではありませんか、それとも手動で作成する必要がありますか? 自動作成されると思っていました。WSDL ファイルに何か不足がありますか? または、どこかでステップを逃しましたか?

デイブ

4

1 に答える 1

1

Axis 1.4 コマンド WSDL2Java を使用している場合、適切な.wsddファイルが作成されません。常に編集する必要があります。

ANT を使用して、軸サーバー側のクラスを生成しています。

   <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ファイルは次のようになります。

<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>

次に、次のように編集する必要があります。

<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 を試してそれらのバージョンを使用することをお勧めします。少なくとも、サービス、操作、および型のマッピングが生成されます。

于 2012-06-10T17:44:23.173 に答える