我正在使用EJB3.0Web和Spring3。我在Web服务器上部署了我的WAS8组件,并在应用服务器上部署了EAR。我的web组件工作得很好,直到它必须进行上下文查找。当我使用InitialContext时,我得到了以下异常:
type Exception report
message Handler processing failed; nested exception is java.lang.NoClassDefFoundError: com.ibm.ws.exception.WsException
description The server encountered an internal error (Handler processing failed; nested exception is java.lang.NoClassDefFoundError: com.ibm.ws.exception.WsException) that prevented it from fulfilling this request.
exception
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: com.ibm.ws.exception.WsException
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:812)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:709)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:613)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:536)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.NoClassDefFoundError: com.ibm.ws.exception.WsException
java.lang.ClassLoader.defineClassImpl(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:275)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:74)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2901)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
java.lang.ClassLoader.defineClassImpl(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:275)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:74)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2901)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
java.lang.J9VMInternals.verifyImpl(Native Method)
java.lang.J9VMInternals.verify(J9VMInternals.java:72)
java.lang.J9VMInternals.initialize(J9VMInternals.java:134)
com.ibm.websphere.naming.WsnInitialContextFactory.<clinit>(WsnInitialContextFactory.java:68)
java.lang.J9VMInternals.initializeImpl(Native Method)
java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
java.lang.Class.forNameImpl(Native Method)
java.lang.Class.forName(Class.java:174)
javax.naming.spi.NamingManager$3.run(NamingManager.java:873)
javax.naming.spi.NamingManager$3.run(NamingManager.java:870)
java.security.AccessController.doPrivileged(AccessController.java:228)
javax.naming.spi.NamingManager.factoryForName(NamingManager.java:869)
javax.naming.spi.NamingManager.factoryForName(NamingManager.java:820)
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:246)
javax.naming.InitialContext.initializeDefaultInitCtx(InitialContext.java:318)
javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:348)
javax.naming.InitialContext.internalInit(InitialContext.java:286)
javax.naming.InitialContext.<init>(InitialContext.java:211)
com.paam.util.ServiceLocator.getInitialContext(ServiceLocator.java:43)
com.paam.util.RemoteObjectCall.remoteObj(RemoteObjectCall.java:14)
com.paam.delegates.PAAMDelegate.InsertPAAMDetails(PAAMDelegate.java:18)
com.paam.controllers.NewPaamController.newpaamsubmit(NewPaamController.java:77)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
java.lang.reflect.Method.invoke(Method.java:611)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:626)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:150)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:354)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:342)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:763)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:709)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:613)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:536)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.ClassNotFoundException: com.ibm.ws.exception.WsException
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
java.lang.ClassLoader.defineClassImpl(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:275)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:74)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2901)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
java.lang.ClassLoader.defineClassImpl(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:275)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:74)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2901)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
java.lang.J9VMInternals.verifyImpl(Native Method)
java.lang.J9VMInternals.verify(J9VMInternals.java:72)
java.lang.J9VMInternals.initialize(J9VMInternals.java:134)
com.ibm.websphere.naming.WsnInitialContextFactory.<clinit>(WsnInitialContextFactory.java:68)
java.lang.J9VMInternals.initializeImpl(Native Method)
java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
java.lang.Class.forNameImpl(Native Method)
java.lang.Class.forName(Class.java:174)
javax.naming.spi.NamingManager$3.run(NamingManager.java:873)
javax.naming.spi.NamingManager$3.run(NamingManager.java:870)
java.security.AccessController.doPrivileged(AccessController.java:228)
javax.naming.spi.NamingManager.factoryForName(NamingManager.java:869)
javax.naming.spi.NamingManager.factoryForName(NamingManager.java:820)
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:246)
javax.naming.InitialContext.initializeDefaultInitCtx(InitialContext.java:318)
javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:348)
javax.naming.InitialContext.internalInit(InitialContext.java:286)
javax.naming.InitialContext.<init>(InitialContext.java:211)
com.paam.util.ServiceLocator.getInitialContext(ServiceLocator.java:43)
com.paam.util.RemoteObjectCall.remoteObj(RemoteObjectCall.java:14)
com.paam.delegates.PAAMDelegate.InsertPAAMDetails(PAAMDelegate.java:18)
com.paam.controllers.NewPaamController.newpaamsubmit(NewPaamController.java:77)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
java.lang.reflect.Method.invoke(Method.java:611)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:626)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:150)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:354)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:342)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:763)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:709)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:613)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:536)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)PS:我在我定义的日志中没有得到这个异常。在我的tomcat logs目录中会生成一个localhost日志文件。错误会在那里打印出来。
如果任何人有想法是什么问题,请提出解决方案。
发布于 2012-10-25 19:00:09
问题就解决了。我一直将瘦客户机jars放在WEB-INF/lib文件夹中,而不是tomcat/lib文件夹中。但是在把它放到tomcat/lib文件夹后,我没有得到这个错误。实际上,当放置在WEB-INF/lib中时,TOMCAT甚至不会启动propery。谢谢大家的帮助..
发布于 2012-10-14 18:33:18
Tomcat是一个IBMTomcat类,在WebSphere的类路径中不太可能找到它。
如果您在WAS上调用EJB,则需要确保您的类路径中有所需的WAS客户端Jars才能成功。你做过吗?
看看这个帖子:https://community.jboss.org/thread/198796?_sscc=t,看看htose的回复是否对你有帮助。
同样正如Neil所建议的,在您的环境中真的需要同时拥有Tomcat和WAS吗?有没有可能同时在WAS上托管Web和EJB3组件,这可能会使部署变得更容易!
HTH
发布于 2012-10-13 02:23:18
您不能在web服务器上运行web组件(JSP和Servlets)。如果您的意思是有一个应用程序服务器(听起来像是在使用Tomcat)运行您的web应用程序,而另一个应用程序服务器(是8.0?)运行EJB和Spring组件,那么您应该做的第一件事就是考虑这是否是最好的架构。EJB可以运行所有这些组件,通过不必在WebSphere代码之间进行网络通信,可以节省一些性能开销,特别是在使用本地EJB接口的情况下。此外,编程将更简单(因为JNDI服务将与客户端代码在同一服务器中),部署也将更简单(因为所有内容都可以打包到一个EAR中并在单个步骤中部署)。
如果您有某些特殊的原因需要保留您所描述的细分的体系结构,那么您可能需要查看信息中心,了解EJB客户端上需要哪些jar文件才能启用与EJB服务器的通信。如果客户机和服务器不在同一台机器上,您还需要确保JNDI服务的URL (以“iiop:”开头)正确地标识了服务器机器和服务的端口号。
https://stackoverflow.com/questions/12852733
复制相似问题