5

sdlからクラスを構築するための簡単なantスクリプトがあります。残念ながら、wsimportはすぐに失敗します。クラスパスと関係があるのではないかと思います。

<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
    <classpath>
        <pathelement location="${jaxws.lib.dir}/jaxws-tools.jar" />
    </classpath>
</taskdef>

<wsimport
    wsdl="${project.wsdl.dir}\some.wsdl"
    destdir="${jaxws.output.dir}"
    keep="false"
    extension="true"
    verbose="true"
    wsdlLocation="http://localhost/wsdl"
    target="2.1">
    <depends file="${project.wsdl.dir}"/>
    <produces dir="${jaxws.output.dir}"/>
</wsimport>

これは、それが生成する出力です。

[wsimport]2013年3月15日12:23:25PMcom.sun.xml.bind.v2.util.XmlFactory createDocumentBuilderFactory [wsimport] SEVERE:null [wsimport] java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature (Ljava / lang / String; Z)V [wsimport] at com.sun.xml.bind.v2.util.XmlFactory.createDocumentBuilderFactory(XmlFactory.java:176)[wsimport]atcom.sun.tools.xjc.reader。 internalizer.DOMForest。(DOMForest.java:162)[wsimport] at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.resetSchema(SchemaCompilerImpl.java:215)[wsimport] at com.sun.tools.xjc .api.impl.s2j.SchemaCompilerImpl。(SchemaCompilerImpl.java:114)[wsimport] at com.sun.tools.xjc.api.XJC.createSchemaCompiler(XJC.java:72)[wsimport]atcom.sun.tools。 ws.wscompile.WsimportOptions。(WsimportOptions.java:152)[wsimport]atcom.sun.tools.ws。wscompile.WsimportTool。(WsimportTool.java:89)[wsimport] at com.sun.tools.ws.wscompile.WsimportTool。(WsimportTool.java:92)[wsimport]atcom.sun.tools.ws.ant.WsImport2。 execute(WsImport2.java:848)[wsimport] at com.sun.istack.tools.ProtectedTask.execute(ProtectedTask.java:103)[wsimport] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java: 269)[wsimport] at org.apache.tools.ant.Task.perform(Task.java:364)[wsimport] at org.apache.tools.ant.Target.execute(Target.java:301)[wsimport] at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:135)[wsimport] at org.eclipse.ant.internal.launching.remote.InternalAntRunner.parseBuildFile(InternalAntRunner.java:192)[wsimport] at org.eclipse.ant.internal.launching.remote.InternalAntRunner.parseBuildFile(InternalAntRunner.java:192)[wsimport] at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:401)[wsimport] at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:138)

wsimportでjax-wsbinディレクトリから冗長ロギングによって作成するコマンドラインを実行すると、すべてが完全に機能します

[wsimport] command line: wsimport -d C:\Development\Source\ccs\jaxws-output -extension -verbose -target 2.1 C:\Development\Source\ccs\wsdl\some.wsdl -wsdllocation http://localhost/wsdl

解決策を探してみましたが、今はアイデアが足りません

4

1 に答える 1

7

あなたが言及する(taskdefそしてwsimport)アプローチで使用するのが面倒なことの1つは、特にWebサービスでSSLと基本認証を使用する場合に、環境変数を追加することだと思います。別の言い方をすればwsimport、新しいタスクを定義せずにツールを使用できます。そんな感じ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project>
<project name="generate-client" default="main" basedir=".">
    <property name="java.home" 
        value="X:\Software\jdk1.7.0_11" />
    <property name="wsdl.location" 
        value="http://localhost/wsdl" />
    <target name="main">
        <exec executable="${java.home}\bin\wsimport.exe">
            <arg line="${wsdl.location} -s src -Xdebug -verbose -Xnocompile" />
        </exec>
    </target>
</project>

アイデアが浮かんだので、出力ディレクトリをカスタマイズして、ターゲットバージョンを追加できます...

于 2013-03-15T13:32:49.807 に答える