Я пытаюсь подключиться к серверу MS Exchange через мыло, но я получаю сообщение об ошибке ниже.Это работает с другого компьютера с более или менее такой же средой (незначительные различия версий в Eclipse и т. Д.), И мы используем разные учетные записи AD на компьютерах.Кто-нибудь видел это раньше и может дать подсказку, что может быть не так?
Часть кода, необходимая для соединения обмена:
@WebServiceClient(name = "ExchangeWebService", targetNamespace = "http://schemas.microsoft.com/exchange/services/2006/messages", wsdlLocation = "mysourceadress/exchange.wsdl")
public class ExchangeWebService
extends Service
{
private final static URL EXCHANGEWEBSERVICE_WSDL_LOCATION;
private final static Logger logger = Logger.getLogger(se.ports.webservices.generatedWSDL.ExchangeWebService.class.getName());
static {
URL url = null;
try {
URL baseUrl = se.ports.webservices.generatedWSDL.ExchangeWebService.class.getResource(".");
url = new URL(baseUrl, "../exchange.wsdl");
} catch (MalformedURLException e) {
logger.warning("Failed to create URL for the wsdl Location:'"+ url +"', retrying as a local file");
logger.warning(e.getMessage());
}
EXCHANGEWEBSERVICE_WSDL_LOCATION = url;
}
public ExchangeWebService(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
javax.xml.ws.soap.SOAPFaultException: Can't find input stream in message
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146)
at $Proxy48.findItem(Unknown Source)
at se.ports.webservices.io.ItemTypeDAO.getFolderItems(ItemTypeDAO.java:44)
at se.ports.webservices.access.ExchangeFacade.getAllEmails(ExchangeFacade.java:38)
at se.ports.webservices.utils.ExchangeFacadeTest.getAllEmails(ExchangeFacadeTest.java:25)
at se.ports.webservices.ExchangeTests.test_single_exchangefacade_try_exchange_connection(ExchangeTests.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:699)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:891)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1215)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:758)
at org.testng.TestRunner.run(TestRunner.java:613)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:87)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1170)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1095)
at org.testng.TestNG.run(TestNG.java:1007)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:109)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:202)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:173)
Caused by: java.lang.RuntimeException: Can't find input stream in message
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:116)
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:755)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2330)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2192)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2036)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:696)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
... 29 more
ОБНОВЛЕНИЕ:
Итак, после большого количества проб и ошибок, я понял, что проблема в том, что один из компьютеров работает с jdk7, это дает сбой, в то время как другие работают с jdk6, и это прекрасно работает (яv также добавил JDK7 на рабочих компьютерах, а затем они также не работают).Я попытался решить эту проблему, перезапустив wsimport из jdk7, но это все равно дает ту же ошибку для jdk7 и полностью дает сбой для компьютеров jdk6.У кого-нибудь есть идея, как решить эту проблему?
Итак, после большого количества проб и ошибок, я пришел к выводу, что проблема в том, что один из компьютеров работает с jdk7, это не помогает, в то время какдругие работают с jdk6, и это прекрасно работает (я также добавил jdk7 на рабочие компьютеры, а затем они тоже перестали работать).Я попытался решить эту проблему, перезапустив wsimport из jdk7, но это все равно дает ту же ошибку для jdk7 и полностью дает сбой для компьютеров jdk6.У кого-нибудь есть идея, как это решить?