我有一个从SoapUI和Apache CXF组件生成的Web服务客户端。当我在Mule ESB服务器上运行它时,我收到以下错误:
org.mule.transport.http.HttpClientMessageDispatcher - Received a redirect, but followRedirects=false. Response code: 401 Unauthorized
这里有趣的事实是,当我从Anypoint Studio本地运行时,一切正常。如何允许我的服务客户端处理重定向。还有其他错误吗?
这是我的代码:
URL wsdlURL = MPServiceService.WSDL_LOCATION;
MPServiceService ss = new MPServiceService(wsdlURL, SERVICE_NAME);
MPService port = ss.getDomino();
BindingProvider prov = (BindingProvider) port;
prov.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
requestpath);
prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username);
prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
String result = port.webServiceFoo();
return result;
答案 0 :(得分:0)
您的错误似乎来自您的网址所服务的Mule应用,而不是来自上面的代码。当您访问您的Web服务时,Mule在流中发出了一个请求 - 最有可能使用http:request
或http:outbound-endpoint
组件 - 这会导致错误,并且您的Web服务会返回此错误。
您的Mule应用程序是问题,而不是上面的Java代码。有关如何解决您的Mule问题,请参阅can Mule HTTP out-bound handler redirect requests?。
答案 1 :(得分:0)
probem是由另一个具有以下cxf配置的应用程序引起的:
<cxf:configuration name="CXF_Configuration" initializeStaticBusInstance="true" enableMuleSoapHeaders="false" doc:name="CXF Configuration"/>
我们更改了 initializeStaticBusInstance =“false”所以它看起来像这样:
<cxf:configuration name="CXF_Configuration" initializeStaticBusInstance="false" enableMuleSoapHeaders="false" doc:name="CXF Configuration"/>