初始上下文Websphere 8.0

时间:2012-10-12 05:21:35

标签: websphere

我正在使用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日志文件。并在那里打印错误。

如果有人知道问题是什么,请提出相同的解决方案。

4 个答案:

答案 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。

所以请检查它可能是问题的根本原因。