【问题标题】:Apache CXF Client proxy settingsApache CXF 客户端代理设置
【发布时间】:2015-07-21 21:36:36
【问题描述】:

我正在尝试使用教程为 Soap 服务开发消费者 http://cxf.apache.org/docs/developing-a-consumer.html

在“使用上下文设置连接属性”部分中,我正在查看下面的代码

// Set request context property.
java.util.Map<String, Object> requestContext =
  ((javax.xml.ws.BindingProvider)port).getRequestContext();
requestContext.put(ContextPropertyName, PropertyValue);

// Invoke an operation.
port.SomeOperation();

谁能告诉我是否可以使用 requestContext 属性设置代理服务器设置以及如何设置?我的代码在代理后面运行,我需要传出 SOAP 调用才能使用代理服务器设置。

【问题讨论】:

    标签: java apache web-services soap cxf


    【解决方案1】:

    代理设置通常使用 httpconduit 对象设置

    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");
    

    【讨论】:

    • 做到了,在运行一个简单的单元测试来 ping 服务时,我没有收到任何错误,但测试卡住并继续在控制台上打印这些
    • HTTPConduit:1740-没有对 Conduit '{cxf.apache.org}TransportURIResolver.http-conduit' 的信任决策者。假定一个肯定的信任决策。 HTTPConduit:914-Conduit '{cxf.apache.org}TransportURIResolver.http-conduit' 已(重新)配置为纯 http。 HTTPConduit:378-NoTrust Decider 配置为 Conduit '{cxf.apache.org}TransportURIResolver.http-conduit' HTTPConduit:391-NoAuth 供应商配置为 Conduit '{cxf.apache.org}TransportURIResolver.http-conduit' 已配置为普通 http。
    • 我认为问题正在发生,因为 SOAP 调用最终是在 https 而不是 http 上调用服务
    • 为了让其他读者清楚:HTTPConduit.getProxyAuthorization() 的凭据与HTTPConduit.getAuthorization() 不同。第一个用于允许连接到远程服务器的(互联网)代理,第二个用于远程(SOAP?)服务。
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    相关资源
    最近更新 更多