7

提供された Ant ビルドを Maven に置き換えようとしています。私は ant run を知っています (しかし使用したことはありません)。

簡単に言うと、NetSuite は ERP 製品に対して Web サービスを呼び出すときに使用する wsdl を提供しており、私は現在提供されている ant ビルドを使用して wsdl からプロキシ クラスを生成しています。(サンプル アプリ、wsdl、およびパッチを適用した軸はこちらから入手できます)

私が抱えている問題は、ant タスクがパッチが適用された軸 1.4 (およびサポート ライブラリ、そのうちのいくつかは ~7 年前のもの) を使用し、中央の Maven リポジトリからすぐに入手できるライブラリを使用してこの wsdl を実装したいということです。できれば最新。

機能するソリューションを調査する必要がある場所を教えてもらえますか?

知る必要がある人のために: axis2 で生成しようとしましたが、次の例外がスローされます:

timeException: Element QName is null for ExceededRequestSizeFault!
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:293)
        at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
        at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
Caused by: org.apache.axis2.wsdl.codegen.CodeGenerationException: java.lang.RuntimeException: Element QName is null for ExceededRequestSizeFault!
        at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.emitSkeleton(AxisServiceBasedMultiLanguageEmitter.java:1451)
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:275)
        ... 2 more
Caused by: java.lang.RuntimeException: Element QName is null for ExceededRequestSizeFault!
        at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.getFaultParamElements(AxisServiceBasedMultiLanguageEmitter.java:
2925)
        at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.getFaultElement(AxisServiceBasedMultiLanguageEmitter.java:2844)
        at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.generateMethodElement(AxisServiceBasedMultiLanguageEmitter.java:
2366)
        at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.loadOperations(AxisServiceBasedMultiLanguageEmitter.java:2242)
        at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.createDOMDocumentForSkeleton(AxisServiceBasedMultiLanguageEmitte
r.java:2156)
        at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.writeSkeleton(AxisServiceBasedMultiLanguageEmitter.java:2082)
        at org.apache.axis2.wsdl.codegen.emitter.AxisServiceBasedMultiLanguageEmitter.emitSkeleton(AxisServiceBasedMultiLanguageEmitter.java:1408)
        ... 3 more

最近の NetSuite WSDL を使用したテスト済みのソリューションであれば、ボーナス ポイントです。

4

1 に答える 1

12

cxf maven pluginをお勧めします。この wsdlで小さなテストを行ったところ、1408 個のソース ファイル (JVM 1.7) が正常に生成およびコンパイルされました。(しばらくお待ちください...)

最大列挙サイズに達したという警告はほとんどありません。そのため、より大きな列挙型を許可するためにバインディング ファイルを渡す必要がありました。私はバインディングファイルを介してそれを行いました。この投稿のおかげで

bind.xml必要なファイルはこちら

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
           xmlns:xsd="http://www.w3.org/2001/XMLSchema"
           jaxb:version="2.0">
    <jaxb:bindings >
        <jaxb:globalBindings typesafeEnumMaxMembers="2000"/>
    </jaxb:bindings>
</jaxb:bindings>

の関連部分pom.xml(ご覧のとおり、wsdl と bind.xml は にあります/src/main/resources)

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>2.7.3</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                       <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                               <bindingFiles>
                                    <bindingFile>${basedir}/src/main/resources/bind.xml</bindingFile>
                                </bindingFiles>
                               <wsdl>
                                  ${basedir}/src/main/resources/netsuite.wsdl
                               </wsdl>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
于 2013-03-19T13:47:09.673 に答える