EJB 层基本搞定,以前测试 EJB 也都是写一个 application 测试的,都没问题。
昨天把 WEB 层框架做好开始写代码,但怪事就来了。打开 JSP 就出现下面的错误
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: javax/ejb/EJBObject
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:154)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
web.Filter.ChangeCharsetFilter.doFilter(ChangeCharsetFilter.java:58)
root cause
java.lang.NoClassDefFoundError: javax/ejb/EJBObject
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1626)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:850)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1299)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1181)
java.lang.ClassLoader.loadClassInternal(Unknown Source)
caiwu.data.Department.identify(Department.java:418)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:143)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
web.Filter.ChangeCharsetFilter.doFilter(ChangeCharsetFilter.java:58)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.7 logs.
java.lang.NoClassDefFoundError: javax/ejb/EJBObject ??????????????
怎么会找不到 EJBObject 类呢?检查了一下 WEB-INF\LIB 目录,的确有 weblogic.jar 呀 ! ?
去 baidu 搜索了一下,看到有篇贴说是 classpath 中没加 dr.jar 和 tools.jar 。
又检查了一下 classpath ,也加了 !
打开 Tomcat 的日志,发现有这么一行
2005-3-6 10:44:02 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(D:\jbProject\sf\web\WEB-INF\lib\weblogic.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2.
Offending class: javax/servlet/Servlet.class
See Servlet Spec 2.3, section 9.7.2 是什么东东,懒得去查了。
又去 baidu 搜,找到这篇说得比较相似的
http://blog.csdn.net/china2wto/archive/2004/12/09/210527.aspx
内容如下。
tomcat5 的 common/lib 目录下 jar 包和 WEB/lib 下 jar 包冲突问题
我在学习 struts 过程中,启动 tomcat5, 基本正常,打开普通的 jsp 也正常,但打开与 struts 相关的 jsp 报错如下:
javax.servlet.ServletException: javax.servlet.jsp.PageContext.handlePageException(Ljava/lang/Throwable;)V
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:256)
javax.servlet.http.HttpServlet.service(HttpServlet.java:868)
root cause
java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.handlePageException(Ljava/lang/Throwable;)V
org.apache.jsp.manager_005findex_jsp._jspService(manager_005findex_jsp.java:84)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:868)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:868)
查看 tomcat5 console monitor 发现有些异常:
信息 : validateJarFile(C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\soos\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
这才想起,我在 tomcat/common/lib/ 中也放入了 j2ee.jar 等包,去 common/lib 中处不必要的包后,保证 tomcat/common/lib/ 和 WEB-INF/lib 这两个目录下的 jar 没有重复的,问题解决。
原来, tomcat 启动后先将 tomcat/common/lib 目录下的 jar 包全部读入内存,如果 webapps 目录里的应用程序中 WEB-INF/lib 目录下有相同的包,将无法加载 ,估计不同版本的包之间也会造成类似问题。因此建议尽量不要把 jar 包放入 tomcat/common/lib 目录下,应该放入 WEB-INF/lib 目录下。
看了一下 tomcat/common/lib/ ,没有 j2ee.jar ,也没有 weblogic.jar 呀。
试着删除 web-inf\lib 目录下的 weblogic.jar 。
这次 Tomcat 日志中没有了上面那个出错,但打开 jsp 时还是和上面一样的错
java.lang.NoClassDefFoundError: javax/ejb/EJBObject
这时又回去查 tomcat 日志。注意到有这么一句
Offending class: javax/servlet/Servlet.class
联想上面提到那篇 blog 的内容,知道原因了 ( 红字部分 ) 。
用 winRAR 打开 Tomcat5.5/common/lib/servlet-api.jar 和 web-inf\lib\weblogic.jar ,发现里面有相同的包 javax/servlet/* 。
原因找出了就好办多了。
在 winRAR 中删除 web-inf\lib\weblogic.jar 中的 javax/servlet/ 包。重启 Tomcat ,正常了 !
但问题还没得到彻底解决,因为在 JB 中 rebuild 项目时又把 win-inf\lib 目录下的 jar 还原回去了 !
真麻烦,干脆斩草除根:
在 web 模块的属性窗口中改设置: webModule->Properties: content \ Dependencies ,把 WebLogic 8.x Client 改成[ Execude All ]。再把 \bea\weblogic81\server\lib 下的二个文件 (weblogic.jar , webservices.jar ) 拷贝到 Tomcat5.5/common/lib/ 中 ( 这时才发现 weblogic.jar 有 36M 之巨,难怪我第次 rebuild 都要等 N 久,硬盘逛响了 ! ) 。
如果现在就去启动 Tomcat ,你会发现连 Tomcat 都XX了 !
为什么?
因为 tomcat 启动后先将tomcat/common/lib 目录下的jar 包全部读入内存 , 这时 tomcat/common/lib 下原来的 servlet-api.jar 和刚才拷贝进去的 weblogic.jar 中都包含有相同的包 javax/servlet/ , Tomcat 加载时发现有重复的就退出了。
最后一步:
删除 tomcat/common/lib/servlet-api.jar 或是用 winRAR 打开 tomcat/common/libweblogic.jar 删除其中的 javax/servlet 目录。
启动 Tomcat ,问题解决 !
这个小问题又浪费了半天时间。
发表评论
-
深入分析 Java 中的中文编码问题
2011-11-16 07:45 0几种常见的编码格式 ... -
Java 编码
2011-11-16 07:44 0http://zhidao.baidu.com/quest ... -
java字符编码原理解析
2011-11-16 07:43 0可以理解为计算机没 ... -
HttpClient
2011-11-03 11:07 823From http://www.blogjava.net/Al ... -
ECLIPSE ANT OutOfMemoryError
2011-08-04 17:23 1011ANT BUILD MEMORY ERROR: [cl ... -
JDBC BATCH
2011-07-05 14:58 0PreparedStatement ps = conn.pre ... -
OUT OF MEMORY WHEN BUILD
2011-02-22 17:47 01, ANT BUILD: In Eclipse op ... -
spring weblogic jndi
2011-02-16 09:18 1836weblogic:weblogic8.1 数据库:MySql ... -
log4j 邮件
2011-01-24 15:54 0<!-- 设置上下文参数 --> ... -
ant weblogic “local class incompatible: stream classdesc serialVersionUI”
2010-11-29 12:41 2224weblogic.management.Management ... -
Debugging with the Maven Jetty Plugin in Eclipse
2010-11-15 17:42 1033debug: http://docs.codehaus.or ... -
maven tomcat eclipse debug
2010-11-15 17:36 1944from: http://bandaidprogrammin ... -
maven app tomcat 部署
2010-11-11 15:56 1306修改pom.xml,添加如下配置: <build ... -
Maven Cargo Tomcat 部署
2010-11-11 15:49 1768pom.xml中<build>下添加如下代码: ... -
java中读取配置文件各种方法
2010-09-07 12:31 01。使用Java.util.Properties类的load( ... -
ThreadGroup
2010-05-25 08:47 0在Java中每个线程都属于某个线程组(ThreadGroup) ... -
java Excel 导出
2010-03-28 20:06 0public void createExcel(OutputS ... -
java小数保留两位小数
2009-11-19 16:49 2336方式一: 四舍五入 double f = ... -
java中实现xml schema 验证文件
2009-11-16 20:05 3876XML 是可扩展标记语言,也就是说其中的标记我们可以按照我们 ... -
java读写xml文件的方法
2009-10-30 08:58 1795在java环境下读取xml文件的方法主要有4种:DOM、SAX ...
相关推荐
WebLogic 项目移植到 Tomcat 配置说明 在进行 WebLogic 项目移植到 Tomcat 之前,需要确保已经成功安装了 Tomcat。下面将对 WebLogic 项目移植到 Tomcat 的配置进行详细说明。 配置 Tomcat 1. 在 Tomcat 安装目录...
本文将详细讲解如何使用Nginx作为负载均衡器,实现对Tomcat和WebLogic集群的负载均衡以及故障处理。我们将遵循由浅入深的原则,适合初学者和进阶者学习。 首先,我们来看看基础环境。系统为Redhat7.5,JDK版本为1.8...
WebLogic、WebSphere、JBOSS、Tomcat 之间的区别 在中间件领域中,WebLogic、WebSphere、JBOSS、Tomcat 等四大应用服务器之间存在着很大的区别,今天我们将从多个角度来比较它们之间的差异。 1. 产品介绍 ...
### Tomcat调用WebLogic EJB的实现方法与步骤 #### 概述 在实际的开发环境中,有时候需要实现不同应用服务器之间的交互。比如,在Tomcat应用服务器中调用部署在WebLogic服务器上的EJB(Enterprise JavaBeans)组件...
"项目框架从 Tomcat 到 WebLogic" 项目框架从 Tomcat 移植到 WebLogic 需要注意以下几个方面: 1. JDK 版本:由于项目使用 JDK 1.5 版本,因此需要使用 WebLogic 9 或以上版本。这里使用 WebLogic 10 作为示例。 ...
服务器Tomcat和WebLogic区别 一、Tomcat服务器概述 Tomcat是一个免费的开放源代码的Web应用服务器,由Apache软件基金会Apache Software Foundation的Jakarta项目中的一个核心项目。它是由Apache、Sun和其他一些...
"tomcat、weblogic、jboss的区别" Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,它是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些...
Tomcat和WebLogic中文乱码问题解决方案 在 Java Web 开发中,中文乱码问题一直是困扰开发者的主要问题之一。 Tomcat 和 WebLogic 是两个常用的 web 服务器,都是支持 Servlet 和 JSP 的。然而,在使用这些服务器时...
本示例将详细介绍如何使用Oracle WebLogic Server(WLS)集成多个Apache Tomcat服务,实现自动分配Tomcat实例处理请求,并确保通过80端口进行访问。这一过程涉及到集群配置、负载均衡以及端口映射等多个关键知识点。...
《Zabbix监控模板详解:Tomcat与WebLogic的定制化监控》 在IT运维领域,监控系统扮演着至关重要的角色,它能及时发现并预警系统的异常情况,保证业务的稳定运行。Zabbix作为一款强大的开源监控工具,因其高度可定制...
在Linux环境下搭建Java、Tomcat和WebLogic服务器是IT领域常见的任务,这涉及到操作系统管理、JVM配置、应用服务器的安装与部署等多个知识点。以下是对这些主题的详细讲解。 首先,我们从Java的安装开始。Java是运行...
标题"tomcat和weblogic共2页.pdf.zip"表明这是一个关于Tomcat和WebLogic服务器的文档,被压缩成一个PDF文件,且内容只有两页。这通常意味着文档可能提供了这两个服务器的基本对比或者关键特性概述。 【Tomcat与...
通过以上步骤,我们可以顺利地完成 Pinpoint 的安装部署,并开始监控 Tomcat、Weblogic 和 WebSphere 等 Java 应用服务器。Pinpoint 的强大之处在于其丰富的功能集和较低的性能开销,使得开发者能够在不影响应用性能...
### Tomcat工程迁移至WebLogic的关键步骤与注意事项 在企业级应用开发中,根据业务需求和技术选型的变化,有时需要将部署在Tomcat上的应用程序迁移到WebLogic服务器上。这一过程涉及多方面的调整与优化,确保应用能...
【标题】:“深入理解:Tomcat、WebLogic、JBoss的区别与容器的作用” 【描述】:本文将详细探讨三个著名Java应用服务器——Tomcat、WebLogic和JBoss之间的差异,同时解析它们作为容器的主要功能。 【标签】:...
搭建Java开发环境是每个开发者初期必须经历的步骤,本文将详细介绍如何配置Eclipse3.2.2、MyEclipse5.5、Tomcat和WebLogic的集成开发环境。 首先,Eclipse是一款广受欢迎的开源集成开发环境(IDE),它以其强大的...
LINUX下TOMCAT及WEBLOGIC下SSL配置手册 SSL(Secure Sockets Layer)是一种安全协议,用于在Web服务器和浏览器之间进行加密通讯。今天,我们将讨论在LINUX环境下配置TOMCAT和WEBLOGIC服务器的SSL协议。 TOMCAT下的...
tomcat , jboss, weblogic, websphere ⼀般项⽬tomcat就可以了 Tomcat是Sun的JSWDK(JavaServer Web Development Kit)中Servlet的运⾏环境(servlet容器)。Tomcat是Apache Jakarta软件组织 的⼀个⼦项⽬,Tomcat是⼀个...
Tomcat和WebLogic则是两种常用的Java应用服务器,用于部署和运行Web应用程序。本文将深入探讨如何在Windows系统上使用Eclipse进行远程调试Tomcat和WebLogic。 首先,我们需要理解远程调试的概念。远程调试允许...