为什么我对Exchange Web服务的JAXWS调用在Java 6下工作,但在Java 7下失败,并带有“请求需要HTTP身份验证:未经授权”?
我有一个用Java编写的web应用程序,它使用exchange web服务对exchange服务器进行JAX-WS web服务调用
当我使用Java1.6.0"34编译和运行应用程序时,它运行良好
如果我用Java 1.7.0_07编译并运行它,会出现以下错误:
com.sun.xml.ws.client.ClientTransportException: request requires HTTP authentication: Unauthorized
at com.sun.xml.ws.transport.http.client.HttpClientTransport.checkResponseCode(HttpClientTransport.java:212)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:149)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:86)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)
at com.sun.xml.ws.client.Stub.process(Stub.java:248)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:135)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
at $Proxy62.getUserAvailability(Unknown Source)
...
如果我用1.6.0_34编译它并用1.7.0_07运行它,也会发生这种情况
我查找了Java6和Java7之间对JAX-WS的更改,但只找到了一些关于可能的编译错误的notes
我不确定接下来该看什么,因为很明显身份验证代码没有更改,所以为什么它会失败
以下是我认为应该设置身份验证的方法:
/**
* Set up Authentication
*
*/
protected void setupAuthenticator(){
if(authenticator == null){
authenticator = new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
String superusername = ExchangeServerPortFactory.this.adDomain
+ "\\"
+ ExchangeServerPortFactory.this.username;
String superPassword = ExchangeServerPortFactory.this.password;
return new PasswordAuthentication(superusername
,superPassword.toCharArray());
}
};
Authenticator.setDefault(authenticator);
}
}
我试着把"\\"
改成"\\\\"
,因为我在某个论坛上发现了一条消息,它解决了一个类似的问题,但对我没有任何好处
共 (0) 个答案