Java WebService 调用以 "Received a redirect, but followRedirects=false" 结束

Java WebService call ends with "Received a redirect, but followRedirects=false"

我有一个从 SoapUI 和 Apache CXF 组件生成的网络服务客户端。当我 运行 它在 Mule ESB 服务器上时,我收到以下错误:

org.mule.transport.http.HttpClientMessageDispatcher - Received a redirect, but followRedirects=false. Response code: 401 Unauthorized

Mule Flow 看起来像这样:

有趣的是,当我从 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;

您的错误似乎来自您的 URL 所服务的 Mule 应用程序,而不是上述代码。当访问你的 web 服务时,Mule 在流中发出请求 - 很可能使用 http:requesthttp:outbound-endpoint 组件 - 这导致了错误,并且这个错误正在由你的 web 服务返回。

问题出在您的 Mule 应用程序上,而不是上面的 Java 代码。请参阅 了解如何解决您的 Mule 问题。

问题是由另一个具有以下 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"/>

更多信息https://support.mulesoft.com/s/article/There-are-at-least-2-connectors-matching-protocol-https-when-using-CXF-generated-client