Spring集成项目在Eclipse / Tomcat中本地正常工作。
部署到Websphere时,我从Spring Integration类中获得了类加载器问题:
java.lang.NoClassDefFoundError: org.springframework.integration.message.ErrorMessage
at org.springframework.integration.channel.MessagePublishingErrorHandler.handleError(MessagePublishingErrorHandler.java:83)
at org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:55)
at org.springframework.scheduling.commonj.DelegatingWork.run(DelegatingWork.java:61)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:1178)
at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:199)
at com.ibm.ws.asynchbeans.CJWorkItemImpl.run(CJWorkItemImpl.java:236)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1700)
Caused by: java.lang.ClassNotFoundException: org.springframework.integration.message.ErrorMessage
at java.net.URLClassLoader.findClass(URLClassLoader.java:434)
at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:204)
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:699)
at java.lang.ClassLoader.loadClass(ClassLoader.java:678)
at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:119)
at java.lang.ClassLoader.loadClass(ClassLoader.java:661)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:598)
at java.lang.ClassLoader.loadClass(ClassLoader.java:661)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:566)
at java.lang.ClassLoader.loadClass(ClassLoader.java:661)
... 7 more
看起来应用程序实际上正在工作,但输出这些错误,但我不喜欢它的想法。
所有弹簧罐都在我的类路径中。我尝试将类加载器更改为Parent_Last,但还有其他一些问题
Websphere是否还需要其他设置?
答案 0 :(得分:0)
一般来说,你所描述的内容毫无意义; ErrorMessage
与MessagePublishingErrorHandler
位于同一个广告文件中。
所以,这意味着它可能是一个类加载器问题。最好的猜测是你从不同类加载器中的两个不同的jar加载ErrorMessage
。
使用-verbose
运行JVM,并检查从哪些罐加载哪些类。
答案 1 :(得分:0)
尝试从WAS控制台为您的应用程序使用ClassLoader order。