2015-08-04 8 views
1

Во время вызова мыла WebService мы попали в эту ошибку. Что может быть причиной?Призыв к мылу WS, результаты по запросу «Не удалось получить SAX-парсер при построении конверта»

Я использую JDK 7 обновления U67 (64 бит), весна 3.1.1.RELEASE, весна WS 2.1.0.RELEASE (весна-WS-ядро-2.1.0.RELEASE.jar),

Вот журнал StackTrace:

----- ERROR [7-thread-1] xxxxxxxxxxxxxxxxxxx.webservice.WebServiceCallTemplateImpl:45 An error occured when connecting to service. 
org.springframework.ws.soap.saaj.SaajSoapEnvelopeException: Could not access envelope: Couldn't get a SAX parser while constructing a envelope; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Couldn't get a SAX parser while constructing a envelope 
at org.springframework.ws.soap.saaj.SaajSoapMessage.getSaajVersion(SaajSoapMessage.java:260) 
at org.springframework.ws.soap.saaj.SaajSoapMessage.getImplementation(SaajSoapMessage.java:342) 
at org.springframework.ws.soap.saaj.SaajSoapMessage.<init>(SaajSoapMessage.java:117) 
at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:186) 
at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:60) 
at org.springframework.ws.transport.AbstractWebServiceConnection.receive(AbstractWebServiceConnection.java:90) 
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:589) 
at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:537) 
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:384) 
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:374) 
at com.xxxxxxxxxxx.commons.webservice.WebServiceCallTemplateImpl.sendAndReceive(WebServiceCallTemplateImpl.java:38) 
at com.xxxxxxxxxxx.commons.webservice.WebServiceCallTemplateImpl.sendAndReceiveNoError(WebServiceCallTemplateImpl.java:73) 
at com.xxxxxxxxxxx.commons.webservice.ServerCallTemplate.sendAndReceiveNoError(ServerCallTemplate.java:61) 
at com.xxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxClient.readDocument(QaDocumentReaderClient.java:39) 
at com.xxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxService.readDocument(QaDocumentReadService.java:44) 
at com.xxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxService$$FastClassByCGLIB$$50e93444.invoke(<generated>) 
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) 
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) 
at com.xxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxService$$EnhancerByCGLIB$$98b68ed1.readDocument(<generated>) 
at com.xxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxRunnable.run(QaDocumentReadRunnable.java:38) 
at WICKET_com.xxxxxxxxxxxxxxxxxxxxxxxxxxx.QaDocumentReadRunnable$$FastClassByCGLIB$$ab78176e.invoke(<generated>) 
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) 
at org.apache.wicket.proxy.LazyInitProxyFactory$CGLibInterceptor.intercept(LazyInitProxyFactory.java:333) 
at WICKET_com.xxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxRunnable$$EnhancerByCGLIB$$46e7e20f.run(<generated>) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask.runAndReset(Unknown Source) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Couldn't get a SAX parser while constructing a envelope 
at com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(Unknown Source) 
at com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(Unknown Source) 
at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(Unknown Source) 
at org.springframework.ws.soap.saaj.support.SaajUtils.getSaajVersion(SaajUtils.java:155) 
at org.springframework.ws.soap.saaj.SaajSoapMessage.getSaajVersion(SaajSoapMessage.java:257) 
... 34 more 
Caused by: org.xml.sax.SAXException 
java.lang.InterruptedException 
at com.sun.xml.internal.messaging.saaj.util.ParserPool.get(Unknown Source) 
... 39 more 
Caused by: java.lang.InterruptedException 
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(Unknown Source) 
at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(Unknown Source) 
at java.util.concurrent.ArrayBlockingQueue.take(Unknown Source) 
... 40 more 

кто-нибудь сталкивался с такой же вопрос?

Заранее спасибо.

ответ

1

Эта ошибка означает, что поток, на котором выполняется вызов SOAP, был прерван, и конкретный метод, показанный в трассировке стека (com.sun.xml.internal.messaging.saaj.util.ParserPool#get()), просто выполняет первый вызов прерывистого метода после того, как это прерывание произошло. Поскольку поток принадлежит пулу потоков, это может быть вызвано вызовом метода shutdownNow() для ThreadPoolExecutor.

0

Действительно, shutdownNow() была основной причиной этой проблемы. В качестве решения, shutdownNow() был заменен выключением() по следующей причине:

  • shutdownNow() говорит службу исполнителя (ScheduledExecutorService), что он не может принять новые задачи и попытаться отменить уже представленные задачи путем прерывания соответствующих потоков, где выбрано java.lang.InterruptedException, тогда как shutdown() метода просто сообщает службе-исполнителю, что он не может принимать новые задачи, , но уже поставленные задачи продолжают работать до конца.
0

Я имел эту ошибку, и это было вызвано мной вызов близко на ConfigurableApplicationContext вернулся из метода выполнения в

@SpringBootApplication 
public class MyApplication { 
    public static void main(String[] args) { 
     SpringApplication.run(MyApplication.class, args).close(); 
    } 
} 

Удаления .close() сделал прерывание уйти.