Apache CXFクライアントはEclipseで正常にロードされますが、スタンドアロンjarはWSDLServiceFactoryでNullpointerExceptionをスローします

アンドレ・リカルド:

私の目標は、mvn assembly:singleを使用して、すべての依存関係を持つスタンドアロンjarで実行されるWebサービスクライアントを作成することです

CXF codegen wsdl2javaを使用してクライアントを生成し、NetBanxAutostatementServiceという@WebServiceClientを作成しました

私が持っている依存関係について

<cxf.version>2.5.2</cxf.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
        <scope>runtime</scope>
    </dependency>

私は必死にさらに「もの」を追加しようとしました

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-core</artifactId>
        <version>2.5.2</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf</artifactId>
        <version>2.5.2</version>
        <type>pom</type>
        <scope>runtime</scope>
    </dependency>

問題:「java -jar target / Netbanx-0.0.1-SNAPSHOT-jar-with-dependencies.jar」を実行しようとするたびに

INFO [main] (Netbanx.java:97) - autostatement_wsdlLocation:https://www.test.netbanx.com/cgi-bin/autostatement_wsdl
Exception in thread "main" java.lang.NullPointerException
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:92)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:204)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:148)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:91)
at javax.xml.ws.Service.<init>(Service.java:56)
at com.netbanx.autostatement.NetBanxAutostatementService.<init>  (NetBanxAutostatementService.java:39)
at my.project.netbanx.Netbanx.<init>(Netbanx.java:98)
at my.project.netbanx.Netbanx.main(Netbanx.java:130)

これは、WebServiceClient autostatementService = new NetBanxAutostatementService(autostatement_wsdlLocation);を呼び出す行で発生します。ログ行でautostatement_wsdlLocationをnullとして渡していないことがわかります

Javaコード:

URL autostatement_wsdlLocation = null;
URL payment_wsdlLocation = null;
try {
    autostatement_wsdlLocation = new URL(properties.getProperty("autostatement_wsdlLocation"));
    payment_wsdlLocation = new URL(properties.getProperty("payment_wsdlLocation"));
} catch (MalformedURLException e) {
    logger.error("MalformedURLException",e);
}

    /**
     * Load the Netbanx's webservices AutostatementService and PaymentService
     */
try {           
    logger.info("autostatement_wsdlLocation:"+autostatement_wsdlLocation.toString());
    autostatementService = new NetBanxAutostatementService(autostatement_wsdlLocation); //it is here I get the NullPointerException error
    logger.info("payment_wsdlLocation:"+payment_wsdlLocation.toString());
    paymentService = new NetBanxPaymentService(payment_wsdlLocation);
webServiceStarted = true;
    } catch(javax.xml.ws.WebServiceException wsException ){
        String error = "Cannot create NetBanx web service please make sure this host can reach:" + autostatement_wsdlLocation +" and " + payment_wsdlLocation;
        logger.error(error);
        logger.error("WebServiceException",wsException);

}

ダニエルクルプ:

ほとんどの場合、それはあなたが単一のjarファイルを作成している方法です。アセンブリプラグインの通常の使用では、CXFのさまざまな部分META-INF / *を一緒にマージする必要があるため、これは許可されません。すべての/ META-INF / spring *と/ META-INF / cxf / *の多くのものが含まれます。そのためにシェードプラグインを使用することをお勧めします。例については、CXFのバンドルjarのpom.xmlを参照してください。

http://svn.apache.org/repos/asf/cxf/trunk/osgi/bundle/all/

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ