- 浏览: 193107 次
- 性别:
- 来自: 本溪
文章分类
最新评论
-
shouchun_w:
写的非常翔实!辛苦了!我在按照你的“扩展抓屏函数”(命令完全一 ...
Selenium循环测试,使用变量,抓屏 -
chenhailong:
わかる、ありがど
【转载】ようだ、みたいだの比較 -
mahengyang:
为什么用tomcat启动web工程时需要将用到的jar包都放在 ...
(tomcat中级)应用Tomcat的WebappClassLoader加载指定目录的jar文件 -
柏新星:
<div class="quote_title ...
derby+myBatis 入门 -
柏新星:
create table Person (id int pri ...
derby+myBatis 入门
要点
- 用WebappClassLoader::addRepository就可以实现。不用扩展WebappClassLoader类。
- 当ServletContextListener::contextInitialized时,调用addRepository。
- 在各个context-param中指定jar所在路径。
ServletContextListener
package cn.net.tianyu.classloader.servlet; import java.io.File; import java.io.FilenameFilter; import java.net.MalformedURLException; import java.util.StringTokenizer; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.apache.catalina.loader.WebappClassLoader; public class ClassLoadListener implements ServletContextListener { private static final String CONTEXT_PARAM_NAME_EXTLIBPATH = "net.tianyu.servlet.extlibs"; @Override public void contextInitialized(ServletContextEvent event) { ServletContext context = event.getServletContext(); addJar(context); } @Override public void contextDestroyed(ServletContextEvent event) { } synchronized private void addJar(ServletContext context) { String extlibs = context.getInitParameter(CONTEXT_PARAM_NAME_EXTLIBPATH); if (extlibs == null || extlibs.length() == 0) return; WebappClassLoader loader = (WebappClassLoader) getClass().getClassLoader(); StringTokenizer st = new StringTokenizer(extlibs, ","); while (st.hasMoreTokens()) { String jarPath = st.nextToken(); String jarRealPath = context.getRealPath(jarPath); File jarDir = new File(jarRealPath); if (!jarDir.isDirectory()) continue; File[] jarFiles = jarDir.listFiles(new JarFileNameFilter()); for (File jarFile : jarFiles) { try { loader.addRepository(jarFile.toURI().toURL().toString()); } catch (MalformedURLException e) { } } } } class JarFileNameFilter implements FilenameFilter { public boolean accept(File dir, String name) { return name.toLowerCase().endsWith(".jar"); } } }
web.xml
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <context-param> <param-name>net.tianyu.servlet.extlibs</param-name> <param-value>/../../extlib,/../../otherlib</param-value> </context-param> <listener> <listener-class>cn.net.tianyu.classloader.servlet.ClassLoadListener</listener-class> </listener> <servlet> <servlet-name>sample</servlet-name> <servlet-class>cn.net.tianyu.classloader.servlet.SampleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>sample</servlet-name> <url-pattern>/sample</url-pattern> </servlet-mapping> </web-app>
评论
4 楼
mahengyang
2011-09-16
为什么用tomcat启动web工程时需要将用到的jar包都放在WEB-INF/lib目录下呢?我在工程里的BuildPath里也设置了需要的jar包的路径,但是程序运行后还是会报出CLASSNOTFOUNDEXCEPTION,当我把所有的jar包都放到WEB-INF/lib下面后就好了。
3 楼
stevendu
2009-09-10
问题找到了,我应该在部署后的lib中删除catalina.jar
2 楼
stevendu
2009-09-09
难道是我的jar包用错了? 我用的catalina.jar啊。
1 楼
stevendu
2009-09-09
执行到 WebappClassLoader loader = (WebappClassLoader) getClass().getClassLoader(); 时报错!
严重: Exception sending context initialized event to listener instance of class com.zoove.dcp.jars.JarLoaderListener
java.lang.ClassCastException: org.apache.catalina.loader.WebappClassLoader cannot be cast to org.apache.catalina.loader.WebappClassLoader
at com.zoove.dcp.jars.JarLoaderListener.addJar(JarLoaderListener.java:35)
at com.zoove.dcp.jars.JarLoaderListener.contextInitialized(JarLoaderListener.java:25)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:924)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:887)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1147)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2009-9-9 23:41:47 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2009-9-9 23:41:47 org.apache.catalina.core.StandardContext start
严重: Context [/dcp] startup failed due to previous errors
严重: Exception sending context initialized event to listener instance of class com.zoove.dcp.jars.JarLoaderListener
java.lang.ClassCastException: org.apache.catalina.loader.WebappClassLoader cannot be cast to org.apache.catalina.loader.WebappClassLoader
at com.zoove.dcp.jars.JarLoaderListener.addJar(JarLoaderListener.java:35)
at com.zoove.dcp.jars.JarLoaderListener.contextInitialized(JarLoaderListener.java:25)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:924)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:887)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1147)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2009-9-9 23:41:47 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2009-9-9 23:41:47 org.apache.catalina.core.StandardContext start
严重: Context [/dcp] startup failed due to previous errors
发表评论
-
WCF & WSDL
2014-07-16 09:25 593http://www.atmarkit. ... -
设定PNG的bKGD
2012-06-01 17:20 1022一,参考资料 PNG结构说明 http://home ... -
扩展ExtJS的【Ext.data.reader.Json】例子
2012-03-07 19:35 1910一,下面是扩展Class Ext.define('Dn ... -
Java合并PNG图像(保持背景透明)
2012-01-21 10:43 8131import java.awt.Graphics2D; im ... -
htmlcompressor介绍
2011-09-05 16:01 4173官网 : http://code.google.com/p/h ... -
(java入门)Velocity最简单例程
2011-08-26 06:51 1808一,前言 在编程中总会用到 “文本模板”+“数据” 来生 ... -
找出Web程序依赖的所有的JAR(中文)
2011-06-23 20:02 1013一,前言 开发Web应用程序时总会在lib目录下放很多J ... -
(java入门)创建SSL连接
2011-06-09 16:21 1544纯粹备忘录。 用Windows系统的证明书STORE ... -
Google的Mail地址簿的API的应用
2011-05-25 23:22 4297#前言 我用Gmail觉得地址簿操作不方便。幸好Goog ... -
gclog的分析方法
2011-04-21 19:17 1179一,概要 通过GC的LOG也能为判断内存泄漏提供些相关信 ... -
找出Web程序依赖的所有的JAR
2011-04-13 10:51 896■問題 WebAppを開発する際、Spring、Strut ... -
JConsole连接远程JVM的设定
2011-03-24 10:38 571■検測されたJVMのパラメータは、下記である。 -Dcom. ... -
derby+myBatis 入门
2010-10-15 13:00 37141, 下载derby, myBatis。 2, 设定DERB ... -
(java入门)用apache.poj读写Excel文件的例子(2)
2010-09-03 15:39 1171Excelファイル比較サンプル package net.ti ... -
(java入门)用apache.poj读写Excel文件的例子(1)
2010-06-08 16:17 1540本例用到以下Class,完成对Excel的基本读写。我用的Ex ... -
Cobertura 笔记
2010-05-07 13:56 13321,从 http://cobertura.sourceforg ... -
(Struts2)OGNL笔记 # 的用法三
2010-03-30 20:37 858在行选择等计算中,用 #this 代表迭代中的当前对象 Ac ... -
(Struts2)OGNL笔记 # 的用法二
2010-03-30 20:11 765可以作成一个Map JSP <s:s ... -
(Struts2)OGNL笔记 # 的用法一
2010-03-30 19:49 728可以用#访问 Request, Session, Applic ... -
(java入门) MyLog
2009-09-07 23:47 928package net.dncsoft.test; ...
相关推荐
Tomcat's WebappClassLoader is currently not instrumentable, so Spring provides a custom ClassLoader that can be used by placing spring-instrument-tomcat.jar in $TOMCAT_HOME/lib and putting a loader ...
这个要从热部署开始说起,因为tomcat提供了不必重启容器而只需重启web应用以达到热部署的功能,其实现是通过定义一个WebappClassLoader类加载器,当热部署时就将原来的类加载器废弃并重新实例化一个WebappCl
18.4.2 安装一个war文件或目录 147 18.4.3 启动context 148 18.4.4 停止一个context 149 第19章 Manager Servlet 150 19.1 概述 150 19.2 使用Manager应用 150 19.3 ContainerServlet接口 151 19.4 初始化...
18.4.2 安装一个war文件或目录 147 18.4.3 启动context 148 18.4.4 停止一个context 149 第19章 Manager Servlet 150 19.1 概述 150 19.2 使用Manager应用 150 19.3 ContainerServlet接口 151 19.4 初始化...
Error loading WebappClassLoader org.springframework.web.servlet.DispatcherServlet java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet at org.apache.catalina.loader....
NULL 博文链接:https://pingfang.iteye.com/blog/1178075
1、ehcache.xml和ehcache.xsd两个文件可以在下在下载下来的名为“ehcache-core-x.x.x-distribution.tar.gz”压缩文件中找到 2、由于要实现Ehcache缓存页面,所以必须要添加“ehcache-web-2.0.4.jar” jar包,该jar包...
改jar名称为:proxool-0.9.1.1,主要修改为以下3点: 1.解决不能Unregister jdbc driver的内存泄露问题。 十二月 02, 2013 8:19:43 上午 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc ...
JettyWebSocketTest2 此存储库说明了使用 Web 套接字时 Jetty 9.2.6 类加载中的问题。 要复制问题: git 克隆 cd JettyWebSocketTest2 ... 因此,从 Web 应用程序的 Jar 中查找类路径上的资源将失败。
java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap... at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) at org.apache.catalina....