我有一个使用 Camel 并在 ServiceMix 服务器上运行的项目,但我似乎无法让它访问外部 Web 服务,我怀疑这是因为我无法正确设置代理身份验证。
Exchange exchange = producerTemplate.request(url, new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(Exchange.HTTP_METHOD, "POST");
exchange.getIn().setHeader(Exchange.CONTENT_TYPE, "application/json");
}
});
response = exchange.getOut().getBody(String.class);
如果我在最后一行放置断点,我会在交换对象中看到 ConnectionTimeOutException,并且响应为 null。
我尝试以多种方式设置代理。
1)我尝试在实现的类中设置代理设置骆驼上下文感知:
camelContext.getProperties().put("http.proxyHost", "...");
camelContext.getProperties().put("http.proxyPort", "8080");
camelContext.getProperties().put("http.proxyUser", "...");
camelContext.getProperties().put("http.proxyPassword", "...");
camelContext.getProperties().put("http.proxySet", "true");
这在独立模式下有效,但是当我在 ServiceMix 中部署代码时,camelContext 对象为 null。
2)我尝试在中设置代理设置等/系统.属性ServiceMix.xml 文件
3)我尝试在中使用 http-conf:conduit骆驼上下文.xml像这样:
<http-conf:conduit name="*.http-conduit">
<http-conf:client ProxyServer="..." ProxyServerPort="8080" />
<http-conf:proxyAuthorization>
<conf-sec:UserName>...</conf-sec:UserName>
<conf-sec:Password>...</conf-sec:Password>
</http-conf:proxyAuthorization>
</http-conf:conduit>
然而,我认为只有当我使用 cxf 客户端时这才有效。
什么都不起作用,我需要它在部署到 ServiceMix 上时能够工作。
任何帮助将不胜感激。
Thanks.