4

更新:CXFユーザーのメーリングリストに質問を送信しました。ここ

更新:私は現在、すべてのjarファイルに署名しています。それでも、WSDLを見つけることができる方法でCXFセットアップを取得できないようです。私の最後の試みは、WSDLをWArファイル内に配置して、Webブラウザーからアクセスできるようにすることでした。クライアント内のwsdllocationをURL(http://www.example.com/app/example.wsdl)に設定しました。現在、次の例外が発生しています。

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
at com.sun.xml.internal.ws.util.xml.XmlUtil.createDefaultCatalogResolver(Unknown Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(Unknown Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(Unknown Source)
at javax.xml.ws.Service.<init>(Unknown Source)

グーグルはこれについてほとんど何も明らかにしていません。

Apache CXFを使用して、特定のWSDLからWebサービスクライアントを作成しています。問題が発生していますが、サービスにアクセスしようとすると、次の例外が発生します。

Can not initialize the default wsdl from ../resource/example.wsdl
Exception in thread "AWT-EventQueue-0" java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)

私は自分のWebStartアプリケーションに署名していません。また、クライアントのマシンからリソースにアクセスしていないため、署名しないことを望んでいます。上記のWSDLは私のjarファイルにパッケージ化されています。この問題は、CXFで生成されたクライアントコードから発生します。

    URL url = null;
    try {
        url = new URL("../resource/example.wsdl");
    } catch (MalformedURLException e) {
        System.err.println("Can not initialize the default wsdl from ../resource/example.wsdl");
        // e.printStackTrace();
    }
    WSDL_LOCATION = url;

CXFがこのWSDLを正しく指すにはどうすればよいですか?クラスのWebServiceアノテーションについても心配しています。

@WebServiceClient(name = "Example", 
              wsdlLocation = "../resource/example.wsdl",
              targetNamespace = "http://services.example.com/") 

これも変更する必要がありますか?

4

2 に答える 2

2

そのwsdlLocationをclasspath:referenceに変更する必要があります。

ここに示すように、-wsdlLocationを使用します。

于 2009-12-25T19:49:19.207 に答える
1

いくつかの間違いと実験の後、私はすべてを適切に機能させることができました。まず、それを確認しcxf.jarwsdl4j.jar実際にクラスパス上にあることを確認します。これを確認したと思いましたが、それ自体がWARにパックされているWebstartを介してjar内からクライアントをインスタンス化していたため、ビルドプロセスでのcxfランタイムの配置を台無しにしました。また、wsdlの場所を指定するときは、を使用する必要がありました"classpath:my.wsdl"。私は自分で簡単にし、wsdlをソースと同じ場所に配置しました。

これがいつか同じことをするかもしれない誰かを助けることを願っています!

于 2010-01-08T00:16:16.373 に答える