我正在使用EJB3.0 WAS8和Spring 3.我在Web服务器上安装了Web组件,并在App服务器上部署了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日志目录中生成了localhost日志文件。并在那里打印错误。
如果有人知道问题是什么,请提出相同的解决方案。
答案 0 :(得分:3)
问题解决了。我一直把瘦客户端jar放在我的WEB-INF / lib文件夹而不是tomcat / lib中。但是将它放在tomcat / lib文件夹中后,我没有收到此错误。事实上,当放置在WEB-INF / lib中时,TOMCAT甚至不会启动。谢谢大家的帮助..
答案 1 :(得分:2)
com.ibm.ws.exception.WsException是一个IBM WebSphere类,它不太可能在Tomcat的类路径中找到。
如果要在WAS上调用EJB,则需要确保在类路径中具有所需的WAS客户端JAR才能成功。你做到了吗?
看看这个帖子: https://community.jboss.org/thread/198796?_sscc=t并查看是否有任何htose回复可以帮助您。
同样如Neil所建议的那样,您的环境中是否真的需要Tomcat和WAS?是否有可能在WAS上托管Web和EJB3组件,这可能使您更容易部署!
HTH
答案 2 :(得分:0)
您无法在Web服务器上运行Web组件(JSP和Servlet)。如果你的意思是你有一个应用服务器(听起来像你在使用Tomcat)运行你的web应用程序而另一个(WAS 8.0?)运行EJB和Spring组件,那么你应该做的第一件事是考虑这是否是最好的建筑。 WebSphere Application Server可以运行所有这些组件,您可以通过不必在Java代码之间进行网络通信来节省一些性能开销,尤其是在使用本地EJB接口的情况下。此外,编程将更简单(因为JNDI服务将与客户端代码在同一服务器中),因此将部署(因为所有内容都可以打包在一个EAR中并在一个步骤中部署)。
如果您有一些特定的理由保留您所描述的细分体系结构,您可能需要查看信息中心,以获取有关EJB客户端上需要哪些jar文件以启用与EJB服务器通信的详细信息。如果客户端和服务器不在同一台机器上,您还需要确保JNDI服务的URL(以“iiop:”开头)正确识别服务的服务器机器和端口号。
答案 3 :(得分:0)
你的初始背景在哪里?
始终应该在源文件夹下...
即。在classpath。
所以请检查它可能是问题的根本原因。