2012-12-10 442 views
2

我們有一個項目與春季批次&春季批量管理員。 最近我們在運行批處理時得到java.util.EmptyStackException春季批次和春季批次管理項目

谷歌搜索後,我得到了一些關於這個問題的想法,並通過將拋棄jar從1.1升級到1.3.2來解決它。

我們排除在春季批量核心聲明中拋放的的pom.xml並增加投棄如的pom.xml依賴這樣做。

我們的問題是這是解決此問題的正確方法嗎? 因爲將jettison升級到1.3.2,Spring批處理會有什麼問題嗎?

我們得到了錯誤的堆棧跟蹤:

Caused by: java.util.EmptyStackException 
    at org.codehaus.jettison.util.FastStack.peek(FastStack.java:39) 
    at org.codehaus.jettison.mapped.MappedXMLStreamWriter.writeEndElement(MappedXMLStreamWriter.java:200) 
    at com.thoughtworks.xstream.io.xml.StaxWriter.endNode(StaxWriter.java:107) 
    at com.thoughtworks.xstream.io.WriterWrapper.endNode(WriterWrapper.java:37) 
    at com.thoughtworks.xstream.io.path.PathTrackingWriter.endNode(PathTrackingWriter.java:48) 
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:138) 
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.visit(AbstractReflectionConverter.java:113) 
    at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:129) 
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:95) 
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:54) 
    at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:65) 
    at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:78) 
    at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:63) 
    at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeItem(AbstractCollectionConverter.java:63) 
    at com.thoughtworks.xstream.converters.collections.MapConverter.marshal(MapConverter.java:58) 
    at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:65) 
    at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:78) 
    at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:63) 
    at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:98) 
    at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:38) 
    at com.thoughtworks.xstream.XStream.marshal(XStream.java:845) 
    at com.thoughtworks.xstream.XStream.marshal(XStream.java:834) 
    at com.thoughtworks.xstream.XStream.toXML(XStream.java:815) 
    at com.thoughtworks.xstream.XStream.toXML(XStream.java:805) 
    at org.springframework.batch.core.repository.dao.XStreamExecutionContextStringSerializer.serialize(XStreamExecutionContextStringSerializer.java:43) 
    at org.springframework.batch.core.repository.dao.JdbcExecutionContextDao.serializeContext(JdbcExecutionContextDao.java:212) 
    at org.springframework.batch.core.repository.dao.JdbcExecutionContextDao.updateExecutionContext(JdbcExecutionContextDao.java:122) 
    at org.springframework.batch.core.repository.support.SimpleJobRepository.updateExecutionContext(SimpleJobRepository.java:188) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
    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.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    at $Proxy61.updateExecutionContext(Unknown Source) 
    at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:145) 
    at org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:61) 
    at org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:60) 
    at org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:144) 
    ... 7 more 
+0

謝謝你的問題的答案:)我會建議打開一個傑拉票https: //jira.springsource.org/browse/BATCH這個問題 –

回答

0

我最近也遇到過這個。我不知道你是否有完整的堆棧跟蹤那裏,但在我的應用程序有一個呼叫:

sun.misc.Unsafe 

有在2016年的變化,打破了一些JVM LANGS像常規的。拋棄1.1顯然不使用這個'不安全'的電話,這可能會改變JVM版本(它不是正常的Java API的一部分)