2012-10-12 33 views
0

我正在使用EJB3.0 WAS8和Spring 3.我在Web服务器上有我的Web组件,并且已在应用程序服务器上部署了EAR。 我的Web组件工作正常,直到它必须执行上下文查找。 当我去InitialContext的,我得到以下异常:初始上下文Websphere 8.0

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日志目录中生成。并在那里打印错误。

如果有人对什么是问题有所了解,请为此提出解决方案。

回答

0

您无法在Web服务器上运行Web组件(JSP和Servlet)。如果你的意思是你有一个运行你的Web应用程序的应用程序服务器(听起来像你正在使用Tomcat)和另一个运行EJB和Spring组件的应用程序服务器(WAS 8.0?),那么首先应该考虑这是否是最好的建筑。 WebSphere Application Server可以运行所有这些组件,并且不需要在Java代码之间进行网络通信就可以节省一些性能开销,特别是在使用本地EJB接口时。此外,编程会更简单(因为JNDI服务将与客户端代码位于同一服务器中),所以部署(因为所有内容都可以打包在一个EAR中并在一个步骤中部署)。

如果您有一些特殊原因需要保留您描述的细分架构,那么您可能需要检查信息中心以获取有关EJB客户端上需要哪些jar文件以便与EJB服务器通信的详细信息。如果客户端和服务器不在同一台计算机上,则还需要确保JNDI服务的URL(以“iiop:”开头)正确标识该服务的服务器机器和端口号。

+0

我们使用的架构是TOMCAT - WAS - DB。问题已经解决了。我一直在瘦客户端jar放在我的WEB-INF/lib文件夹而不是tomcat/lib。但将它放在tomcat/lib文件夹后,我没有收到这个错误。事实上,当放在WEB-INF/lib中时,TOMCAT甚至不会启动propery。感谢您的帮助:) – Toral

2

com.ibm.ws.exception.WsException是一个IBM WebSphere类,它不可能在Tomcat的类路径中找到。

如果您在WAS上调用EJB,则需要确保您的类路径中具有所需的WAS客户机Jars,以便成功执行此操作。你做到了吗?

看看这个帖子: https://community.jboss.org/thread/198796?_sscc=t看看有没有htose响应能帮助你。

同样如Neil所建议的那样,是否真的需要在您的环境中同时使用Tomcat和WAS?是否有可能在WAS上承载Web和EJB3组件,这可能会使部署变得更容易!

HTH

0

您的初始环境在哪里?

总是应该在源文件夹下...

即在类路径中。

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

+0

请你解释“初始上下文应该在源文件夹下”?我不会完全跟随。 – Toral

3

问题已解决。我一直在瘦客户端jar放在我的WEB-INF/lib文件夹而不是tomcat/lib。但将它放在tomcat/lib文件夹后,我没有收到这个错误。事实上,当放在WEB-INF/lib中时,TOMCAT甚至不会启动propery。谢谢大家的帮助..