我正在尝试访问我正在处理的项目的 Web 服务。我正在使用 JAX-WS 并且该应用程序部署在 weblogic 上。当我尝试访问 WS 时,出现以下异常:
javax.portlet.PortletException: javax.xml.ws.WebServiceException: Failed to access the WSDL at: http://xxx.xxxx.ro:40000/idm/ws/cup?wsdl. It failed with:
Response: '401: Unauthorized' for url: 'http://xxx.xxxx.ro:40000/idm/ws/cup?wsdl'.
at com.bea.portlet.container.PortletStub.processAction(PortletStub.java:346)
at com.bea.portlet.container.AppContainer.invokeProcessAction(AppContainer.java:678)
........
我阅读了很多关于问题的帖子,并尝试了不同类型的身份验证。我尝试在不同的用例中使用 BindingProvider、basicHTTPAuth、禁用 HostnameVerifier 等,但仍然没有结果。
以下是我的代码片段,作为最后一次尝试的版本:
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
username,
password.toCharArray());
}
});
ComputeUserProfileImplService computeUserProfileImplService = new ComputeUserProfileImplService(
new URL(null, endpointURL, new sun.net.www.protocol.http.Handler()),
new QName("http://xxx.xx.xxxxx.xxxxx.com/",
"ComputeUserProfileImplService"));
ComputeUserProfileImpl computeUserProfile = computeUserProfileImplService
.getComputeUserProfileImplPort();
ComputeUserProfileImplService 代码如下所示:
private final static URL COMPUTEUSERPROFILEIMPLSERVICE_WSDL_LOCATION;
private final static Logger logger = Logger.getLogger(com.xxxxx.xxxxx.xx.xxxxx.cup.ComputeUserProfileImplService.class.getName());
static {
URL url = null;
try {
URL baseUrl;
baseUrl = com.xxxxx.xxxxx.xx.xxxxx.xxx.ComputeUserProfileImplService.class.getResource("");
url = new URL(baseUrl, "http://xxxx.xxxxx.ro:40000/idm/ws/cup?wsdl");
} catch (MalformedURLException e) {
logger.warning("Failed to create URL for the wsdl Location: 'xxxxxxxxxxxxxxxx', retrying as a local file");
logger.warning(e.getMessage());
}
COMPUTEUSERPROFILEIMPLSERVICE_WSDL_LOCATION = url;
}
很抱歉替换链接,但我无权发布它们,因为它是一个非常知名的组织。如果你能帮助我提出一些建议,我将不胜感激。我一直在寻找解决方案,但我被卡住了..我想不通。它应该是适用于我的这个 weblogic 问题的解决方法......但我只是找不到它。如果你需要它,我会发布一些其他的片段。希望我对此很清楚。
提前致谢 !!