9

これが質問をする正しい方法ではないことはわかっていますが、問題があります。

wsdl をローカルに保存しており、その Web サービスを呼び出す Web サービス クライアントを作成する必要があります。問題は、サービスがファイアウォールの背後にあり、プロキシを介してサービスに接続する必要があり、その後、WS に接続するために認証する必要があることです。

私がしたことは、Apache CXF 2.4.6 で WS クライアントを生成し、システム全体のプロキシを設定することです。

System.getProperties().put("proxySet", "true");
System.getProperties().put("https.proxyHost", "10.10.10.10");
System.getProperties().put("https.proxyPort", "8080");

私はこれがベストプラクティスではないことを知っているので、より良い解決策を提案してください。認証を設定する方法について誰かが私にヒントを与えることができれば、本当に感謝しています

4

4 に答える 4

21

apache CXF で

HelloService hello = new HelloService();
HelloPortType helloPort = cliente.getHelloPort();
org.apache.cxf.endpoint.Client client = ClientProxy.getClient(helloPort);
HTTPConduit http = (HTTPConduit) client.getConduit();
http.getClient().setProxyServer("proxy");
http.getClient().setProxyServerPort(8080);
http.getProxyAuthorization().setUserName("user proxy");
http.getProxyAuthorization().setPassword("password proxy");
于 2013-06-20T14:26:40.960 に答える
4

対応する Spring XML 構成は次のとおりです。

ドキュメント : http://cxf.apache.org/docs/client-http-transport-included-ssl-support.html

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
  xmlns:sec="http://cxf.apache.org/configuration/security"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
                      http://www.springframework.org/schema/beans/spring-beans.xsd 
                      http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
                      http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd">

<http-conf:conduit name="*.http-conduit"> 
    <http-conf:client ProxyServer="proxy" ProxyServerPort="8080"/>

    <http-conf:proxyAuthorization> 
        <sec:UserName>proxy_user</sec:UserName> 
        <sec:Password>proxy_pass</sec:Password> 
    </http-conf:proxyAuthorization> 
</http-conf:conduit>

これを機能させるには、 cxf.xml をインポートする必要があります。

<import resource="classpath:META-INF/cxf/cxf.xml"/>

この httpConduit はすべての CXF クライアント (複数の場合) で有効になることに注意してください。

サービス コンジット のみに一致するようにコンジット名を構成する必要があります。

name="{http://example.com/}HelloWorldServicePort.http-conduit"
于 2015-04-02T09:44:29.960 に答える
0

java.net.Authenticator クラスを使用してプロキシのユーザー名とパスワードを設定することもできますが、「システム全体」の設定ではないかどうかはわかりません。

こちらをご覧ください: Java を使用した認証済み HTTP プロキシ

于 2014-04-10T08:38:25.177 に答える