8

SharePointのWebサービスの1つと統合する必要があるアプリケーションがあります。このWebサービスには自由にアクセスできず、認証が必要です。

そのため、私のアプリケーションの標準のwsdl2java Mavenプラグインは、generate-sourcesフェーズの実行時にHTTP401エラーを出します。

スタブを生成するユーザー/パスワードを提供できるようにMaven/POMをセットアップする方法はありますか?

これは不可能だという答えに出くわしましたが、すべての答えは1年以上前のものです。Mavenがこれに関するアップデートを発行したかどうかはわかりません。1つのオプションは、WSDLのローカルコピーを保存することです(ここで提案されているように)が、ローカルコピーは避けたいと思います。

4

4 に答える 4

8

あなたがCXFに言及したので、cxf-codegen-pluginを意味していたと思います。ちょっとしたハックですが、うまくいきます。

HTTP 認証クレデンシャルは、java.net.Authenticator を使用して提供できます。getPasswordAuthentication(..) メソッドをオーバーライドする独自の Authenticator クラスを定義するだけで済みます。次に、デフォルトのオーセンティケーターとして設定する必要があります。私の知る限り、Authenticator.setDefault(..) を使用してプログラムでのみ宣言的に (たとえば、環境プロパティを使用して) 行うことはできません。

Authenticator.setDefault(..) を呼び出すには、CXF 拡張メカニズムを使用します。同様のクラスで別の Maven プロジェクトを作成します。

public class AuthenticatorReplacer {

    public AuthenticatorReplacer(Bus bus) {
        java.net.Authenticator.setDefault(new java.net.Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("test", "test123"
                        .toCharArray());
            }
        });
    }

}

およびファイル src\main\resources\META-INF\cxf\bus-extensions.txt の内容:

org.example.AuthenticatorReplacer::false

次に、新しく作成したプロジェクトを依存関係として cxf-codegen-plugin に追加します。

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>${project.version}</version>
    <dependencies>
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>cxf-authenticator-replacer</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
    ...
</plugin>

このように、AuthenticatorReplacer は CXF 拡張メカニズムによって初期化され、デフォルトの Authenticator を私たちのものに置き換えます。

于 2012-12-26T18:55:19.907 に答える
0

Dawid のソリューションが機能することを確認しました。または、SoapUI を使用して wsdl をプルダウンしてキャッシュし、SoapUi コード生成サポートを使用して cxf を使用してコードを生成することもできます。

http://java.dzone.com/tips/generating-client-java-code

于 2014-08-13T15:28:33.937 に答える
-1

Dawidのソリューションは私にも役立ちます。ただし、少しトリッキーです。Eclipse では、pom.xml は「wsdl2java が失敗しました: 拡張クラス AuthenticatorReplacer を読み込めませんでした」という不平を言い続けます。このエラー メッセージを無視して、コマンド ラインを使用する必要があります。

mvn 生成ソース

その後、Java クラスが正常に生成されます。

于 2015-03-13T19:04:12.240 に答える