You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Jon Pearson <Jo...@sixnet.com> on 2009/06/11 19:13:32 UTC

Classloader Issues

I am encountering an odd problem with Tomcat (6.0.18). When the Java
security manager is enabled, I get a ClassNotFoundException when I try
to load the Postgres database driver using Class.forName() and a URL
classloader pointed at a jar; its parent classloader is the Webapp
classloader.

But, when the Java security manager is disabled, everything works
smoothly and no ClassNotFoundException is thrown.

I've stepped through the code (using Eclipse's debugger) and not found
anything that stands out, and I've set a general breakpoint on all
SecurityExceptions, caught or uncaught. None are thrown.

Has anyone else encountered a problem like this? Is there a way for the
Java security manager to block a class from loading without a
SecurityException being thrown?

Jonathan P. Pearson - Software Engineer
-------------------------------------------------- 
SIXNET - Solutions for Your Industrial Networking Challenges
331 Ushers Road, Ballston Lake, NY 12019
Tel: 1.518.877.5173, Fax: 1.518.877.8346
www.sixnet.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


RE: Classloader Issues

Posted by Jon Pearson <Jo...@sixnet.com>.
Stack trace:

 java.lang.Exception: Unable to start: Cannot load database driver:
Cannot load PostgreSQL JDBC driver: org.postgresql.Driver

    com.sixnetio.BVB.Web.DB.connect(DB.java:72)
    com.sixnetio.BVB.Web.DB.getDB(DB.java:94)
    com.sixnetio.BVB.Web.LoginAction.execute(LoginAction.java:45)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
 
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActi
onInvocation.java:440)
 
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(Default
ActionInvocation.java:279)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:242)
 
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doInterce
pt(DefaultWorkflowInterceptor.java:163)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(Vali
dationInterceptor.java:249)
 
org.apache.struts2.interceptor.validation.AnnotationValidationIntercepto
r.doIntercept(AnnotationValidationInterceptor.java:68)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept
(ConversionErrorInterceptor.java:122)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Pa
rametersInterceptor.java:195)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Pa
rametersInterceptor.java:195)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercep
t(StaticParametersInterceptor.java:148)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInt
erceptor.java:93)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploa
dInterceptor.java:235)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(Mod
elDrivenInterceptor.java:89)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.interce
pt(ScopedModelDrivenInterceptor.java:128)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(
ProfilingActivationInterceptor.java:104)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(
DebuggingInterceptor.java:267)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(Chaini
ngInterceptor.java:126)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(Prepa
reInterceptor.java:138)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterc
eptor.java:148)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(Servle
tConfigInterceptor.java:164)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInte
rceptor.java:128)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercep
t(ExceptionMappingInterceptor.java:176)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java
:52)
 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:4
68)
 
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher
.java:395)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
 
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
    java.security.AccessController.doPrivileged(Native Method)
    javax.security.auth.Subject.doAsPrivileged(Unknown Source)
 
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
 
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.jav
a:218)
 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:230)
 
org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFi
lterChain.java:56)
 
org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterC
hain.java:189)
    java.security.AccessController.doPrivileged(Native Method)
 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:185)
 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:233)
 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:191)
 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:128)
 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:102)
 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:109)
 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2
86)
 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:84
5)
 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(
Http11Protocol.java:583)
 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Unknown Source)
    

com.sixnetio.BVB.Database.DriverException: Cannot load PostgreSQL JDBC
driver: org.postgresql.Driver

 
com.sixnetio.BVB.Database.DatabaseProviders.PostgreSQLDatabase.(PostgreS
QLDatabase.java:59)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
Source)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
    java.lang.reflect.Constructor.newInstance(Unknown Source)
    com.sixnetio.BVB.Database.Database.getInstance(Database.java:123)
    com.sixnetio.BVB.Web.DB.connect(DB.java:66)
    com.sixnetio.BVB.Web.DB.getDB(DB.java:94)
    com.sixnetio.BVB.Web.LoginAction.execute(LoginAction.java:45)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
 
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActi
onInvocation.java:440)
 
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(Default
ActionInvocation.java:279)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:242)
 
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doInterce
pt(DefaultWorkflowInterceptor.java:163)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(Vali
dationInterceptor.java:249)
 
org.apache.struts2.interceptor.validation.AnnotationValidationIntercepto
r.doIntercept(AnnotationValidationInterceptor.java:68)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept
(ConversionErrorInterceptor.java:122)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Pa
rametersInterceptor.java:195)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Pa
rametersInterceptor.java:195)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercep
t(StaticParametersInterceptor.java:148)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInt
erceptor.java:93)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploa
dInterceptor.java:235)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(Mod
elDrivenInterceptor.java:89)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.interce
pt(ScopedModelDrivenInterceptor.java:128)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(
ProfilingActivationInterceptor.java:104)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(
DebuggingInterceptor.java:267)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(Chaini
ngInterceptor.java:126)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(Prepa
reInterceptor.java:138)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterc
eptor.java:148)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(Servle
tConfigInterceptor.java:164)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInte
rceptor.java:128)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercep
t(ExceptionMappingInterceptor.java:176)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java
:52)
 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:4
68)
 
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher
.java:395)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
 
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
    java.security.AccessController.doPrivileged(Native Method)
    javax.security.auth.Subject.doAsPrivileged(Unknown Source)
 
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
 
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.jav
a:218)
 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:230)
 
org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFi
lterChain.java:56)
 
org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterC
hain.java:189)
    java.security.AccessController.doPrivileged(Native Method)
 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:185)
 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:233)
 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:191)
 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:128)
 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:102)
 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:109)
 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2
86)
 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:84
5)
 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(
Http11Protocol.java:583)
 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Unknown Source)
    

java.lang.ClassNotFoundException: org.postgresql.Driver

    java.net.URLClassLoader$1.run(Unknown Source)
    java.security.AccessController.doPrivileged(Native Method)
    java.net.URLClassLoader.findClass(Unknown Source)
    java.lang.ClassLoader.loadClass(Unknown Source)
    java.net.FactoryURLClassLoader.loadClass(Unknown Source)
    java.lang.ClassLoader.loadClass(Unknown Source)
    java.lang.ClassLoader.loadClassInternal(Unknown Source)
    java.lang.Class.forName0(Native Method)
    java.lang.Class.forName(Unknown Source)
 
com.sixnetio.BVB.Database.DatabaseProviders.PostgreSQLDatabase.(PostgreS
QLDatabase.java:57)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
Source)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
    java.lang.reflect.Constructor.newInstance(Unknown Source)
    com.sixnetio.BVB.Database.Database.getInstance(Database.java:123)
    com.sixnetio.BVB.Web.DB.connect(DB.java:66)
    com.sixnetio.BVB.Web.DB.getDB(DB.java:94)
    com.sixnetio.BVB.Web.LoginAction.execute(LoginAction.java:45)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
 
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActi
onInvocation.java:440)
 
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(Default
ActionInvocation.java:279)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:242)
 
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doInterce
pt(DefaultWorkflowInterceptor.java:163)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(Vali
dationInterceptor.java:249)
 
org.apache.struts2.interceptor.validation.AnnotationValidationIntercepto
r.doIntercept(AnnotationValidationInterceptor.java:68)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept
(ConversionErrorInterceptor.java:122)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Pa
rametersInterceptor.java:195)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Pa
rametersInterceptor.java:195)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercep
t(StaticParametersInterceptor.java:148)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInt
erceptor.java:93)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploa
dInterceptor.java:235)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(Mod
elDrivenInterceptor.java:89)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.interce
pt(ScopedModelDrivenInterceptor.java:128)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(
ProfilingActivationInterceptor.java:104)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(
DebuggingInterceptor.java:267)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(Chaini
ngInterceptor.java:126)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(Prepa
reInterceptor.java:138)
 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Me
thodFilterInterceptor.java:87)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterc
eptor.java:148)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(Servle
tConfigInterceptor.java:164)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInte
rceptor.java:128)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercep
t(ExceptionMappingInterceptor.java:176)
 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvo
cation.java:236)
 
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java
:52)
 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:4
68)
 
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher
.java:395)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
 
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
    java.security.AccessController.doPrivileged(Native Method)
    javax.security.auth.Subject.doAsPrivileged(Unknown Source)
 
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
 
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.jav
a:218)
 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:230)
 
org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFi
lterChain.java:56)
 
org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterC
hain.java:189)
    java.security.AccessController.doPrivileged(Native Method)
 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:185)
 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:233)
 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:191)
 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:128)
 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:102)
 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:109)
 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2
86)
 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:84
5)
 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(
Http11Protocol.java:583)
 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Unknown Source)
    
 
The jar containing the class that then loads the PostgreSQL driver is in
/etc/BlueVueBatch/BVBDatabases/PostgreSQLDatabase.jar on Linux (Ubuntu
9.04), and it is in
C:\Projects\Java\Eclipse\dist\BVBDatabases\PostgreSQLDatabase.jar on
Windows XP. I see the same problem on both operating systems.

> -----Original Message-----
> From: Caldarale, Charles R [mailto:Chuck.Caldarale@unisys.com] 
> Sent: Thursday, June 11, 2009 2:21 PM
> To: Tomcat Users List
> Subject: RE: Classloader Issues
> 
> > From: Jon Pearson [mailto:Jon.Pearson@sixnet.com]
> > Subject: Classloader Issues
> > 
> > When the Java security manager is enabled, I get a 
> > ClassNotFoundException when I try to load the Postgres
> > database driver using Class.forName() and a URL
> > classloader pointed at a jar; its parent classloader
> > is the Webapp classloader.
> 
> Stack trace?  (Please post.)
> 
> Location of the jar of interest?  (Please specify.)
> 
>  - Chuck
> 
> 
> THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE 
> PROPRIETARY MATERIAL and is thus for use only by the intended 
> recipient. If you received this in error, please contact the 
> sender and delete the e-mail and its attachments from all computers.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


RE: Classloader Issues

Posted by "Caldarale, Charles R" <Ch...@unisys.com>.
> From: Jon Pearson [mailto:Jon.Pearson@sixnet.com]
> Subject: Classloader Issues
> 
> When the Java security manager is enabled, I get a 
> ClassNotFoundException when I try to load the Postgres
> database driver using Class.forName() and a URL
> classloader pointed at a jar; its parent classloader
> is the Webapp classloader.

Stack trace?  (Please post.)

Location of the jar of interest?  (Please specify.)

 - Chuck


THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


RE: Classloader Issues (SOLVED)

Posted by Jon Pearson <Jo...@sixnet.com>.
Apparently there was some kind of silent failure going on behind the
scenes. It seems that the dynamically loaded JAR needed filesystem read
access to the JAR in WEB-INF/lib, and that both the webapp and the other
JAR needed to have java.net.SocketPermission for connect and resolve
against the database server.

Not sure why this manifested itself as a ClassNotFoundException instead
of a SecurityException telling me that I can't read the PostgreSQL
Driver JAR...

Thanks for your help, everyone!

> -----Original Message-----
> From: Jon Pearson 
> Sent: Thursday, June 11, 2009 1:14 PM
> To: Tomcat Users List
> Subject: Classloader Issues
> 
> I am encountering an odd problem with Tomcat (6.0.18). When the Java
> security manager is enabled, I get a ClassNotFoundException when I try
> to load the Postgres database driver using Class.forName() and a URL
> classloader pointed at a jar; its parent classloader is the Webapp
> classloader.
> 
> But, when the Java security manager is disabled, everything works
> smoothly and no ClassNotFoundException is thrown.
> 
> I've stepped through the code (using Eclipse's debugger) and not found
> anything that stands out, and I've set a general breakpoint on all
> SecurityExceptions, caught or uncaught. None are thrown.
> 
> Has anyone else encountered a problem like this? Is there a 
> way for the
> Java security manager to block a class from loading without a
> SecurityException being thrown?
> 
> Jonathan P. Pearson - Software Engineer
> -------------------------------------------------- 
> SIXNET - Solutions for Your Industrial Networking Challenges
> 331 Ushers Road, Ballston Lake, NY 12019
> Tel: 1.518.877.5173, Fax: 1.518.877.8346
> www.sixnet.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


RE: Classloader Issues

Posted by Jon Pearson <Jo...@sixnet.com>.
My last message included the stack trace. The Postgresql jar is in the
WEB-INF/lib directory of my webapp
(/var/lib/tomcat6/webapps/BVWeb/WEB-INF/lib/postgresql-8.3-604.jdbc4.jar
on Linux,
C:\Projects\Java\Eclipse\.metadata\.plugins\org.eclipse.wst.server.core\
tmp1\webapps\BVWeb\WEB-INF\lib\postgresql-8.3-604.jdbc4.jar on Windows).

Also, here is the relevant section of my catalina.policy file for
Windows:

grant codeBase "file:${catalina.base}/webapps/BVWeb/-" {
	permission java.util.PropertyPermission "*", "read";
	
	permission java.io.FilePermission "${user.home}/Application
Data/BlueVueBatch/-", "read";
	permission java.io.FilePermission "C:/Documents and Settings/All
Users/Application Data/BlueVueBatch/-", "read";
	permission java.io.FilePermission "${bvb.databases}/-", "read";
	permission java.io.FilePermission
"${catalina.base}/work/Catalina/localhost/BVWeb/-", "write";
	permission java.io.FilePermission "template/-", "read";
	
	permission java.lang.reflect.ReflectPermission
"suppressAccessChecks";
	permission java.lang.RuntimePermission "getenv.APPDATA";
	permission java.lang.RuntimePermission "getenv.ALLUSERSPROFILE";
	permission java.lang.RuntimePermission "getenv.USERNAME";
	permission java.lang.RuntimePermission "getClassLoader";
	permission java.net.SocketPermission "*", "connect,resolve";
	permission java.lang.RuntimePermission "accessDeclaredMembers";
	permission ognl.OgnlInvokePermission "*";
};


And for Linux:

// These permissions are granted to the BlueVueBatch Web UI application

grant codeBase "file:${catalina.base}/webapps/BVWeb/-" {
        permission java.io.FilePermission "${user.home}/.bvb/-",
"read";
        permission java.io.FilePermission "/etc/BlueVueBatch/-",
"read";
        permission java.io.FilePermission
"${catalina.base}/work/Catalina/localhost/BlueVueWeb/-", "write";
        permission java.io.FilePermission "template/-",
"read";

        permission java.lang.reflect.ReflectPermission
"suppressAccessChecks";

        permission java.lang.RuntimePermission "getClassLoader";
        permission java.lang.RuntimePermission "accessDeclaredMembers";

        permission java.net.SocketPermission "*", "connect,resolve";

        permission java.util.PropertyPermission "*", "read";

        permission ognl.OgnlInvokePermission "*";

        // For logging
        permission java.io.FilePermission "/var/log/tomcat6/*",
"read,write,delete";
};

// Allow the Database plugins to load properly
grant codeBase "file:/etc/BlueVueBatch/BVBDatabases/-" {
        permission java.lang.RuntimePermission "getClassLoader";
};


 

> -----Original Message-----
> From: Caldarale, Charles R [mailto:Chuck.Caldarale@unisys.com] 
> Sent: Thursday, June 11, 2009 3:20 PM
> To: Tomcat Users List
> Subject: RE: Classloader Issues
> 
> > From: Jon Pearson [mailto:Jon.Pearson@sixnet.com]
> > Subject: RE: Classloader Issues
> > 
> > That blurb was already in the catalina.policy file.
> 
> I think Martin was just using that as an example; you likely 
> need to grant some permission(s) to your own classloader code.
> 
> Again, posting the stack trace and the location of the MySQL 
> jar would help to diagnose your problem.
> 
>  - Chuck
> 
> 
> THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE 
> PROPRIETARY MATERIAL and is thus for use only by the intended 
> recipient. If you received this in error, please contact the 
> sender and delete the e-mail and its attachments from all computers.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


RE: Classloader Issues

Posted by "Caldarale, Charles R" <Ch...@unisys.com>.
> From: Jon Pearson [mailto:Jon.Pearson@sixnet.com]
> Subject: RE: Classloader Issues
> 
> That blurb was already in the catalina.policy file.

I think Martin was just using that as an example; you likely need to grant some permission(s) to your own classloader code.

Again, posting the stack trace and the location of the MySQL jar would help to diagnose your problem.

 - Chuck


THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


RE: Classloader Issues

Posted by Jon Pearson <Jo...@sixnet.com>.
That blurb was already in the catalina.policy file.

> -----Original Message-----
> From: Martin Gainty [mailto:mgainty@hotmail.com] 
> Sent: Thursday, June 11, 2009 2:39 PM
> To: Tomcat Users List
> Subject: RE: Classloader Issues
> 
> 
> inside TC you have to grant the container access to Jar 
> assuming your class is located in commons-daemon.jar in 
> $CATALINA_HOME/conf/catalina.policy
> 
> // These permissions apply to the daemon code
> grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {
>         permission java.security.AllPermission;
> };
> 
> HTH!
> Martin Gainty 
> ______________________________________________ 
> Verzicht und Vertraulichkeitanmerkung/Note de déni et de 
> confidentialité
>  
> Diese Nachricht ist vertraulich. Sollten Sie nicht der 
> vorgesehene Empfaenger sein, so bitten wir hoeflich um eine 
> Mitteilung. Jede unbefugte Weiterleitung oder Fertigung einer 
> Kopie ist unzulaessig. Diese Nachricht dient lediglich dem 
> Austausch von Informationen und entfaltet keine rechtliche 
> Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von 
> E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
> Ce message est confidentiel et peut être privilégié. Si vous 
> n'êtes pas le destinataire prévu, nous te demandons avec 
> bonté que pour satisfaire informez l'expéditeur. N'importe 
> quelle diffusion non autorisée ou la copie de ceci est 
> interdite. Ce message sert à l'information seulement et 
> n'aura pas n'importe quel effet légalement obligatoire. Étant 
> donné que les email peuvent facilement être sujets à la 
> manipulation, nous ne pouvons accepter aucune responsabilité 
> pour le contenu fourni.
> 
> 
> 
> 
> > Subject: Classloader Issues
> > Date: Thu, 11 Jun 2009 13:13:32 -0400
> > From: Jon.Pearson@sixnet.com
> > To: users@tomcat.apache.org
> > 
> > I am encountering an odd problem with Tomcat (6.0.18). When the Java
> > security manager is enabled, I get a ClassNotFoundException 
> when I try
> > to load the Postgres database driver using Class.forName() and a URL
> > classloader pointed at a jar; its parent classloader is the Webapp
> > classloader.
> > 
> > But, when the Java security manager is disabled, everything works
> > smoothly and no ClassNotFoundException is thrown.
> > 
> > I've stepped through the code (using Eclipse's debugger) 
> and not found
> > anything that stands out, and I've set a general breakpoint on all
> > SecurityExceptions, caught or uncaught. None are thrown.
> > 
> > Has anyone else encountered a problem like this? Is there a 
> way for the
> > Java security manager to block a class from loading without a
> > SecurityException being thrown?
> > 
> > Jonathan P. Pearson - Software Engineer
> > -------------------------------------------------- 
> > SIXNET - Solutions for Your Industrial Networking Challenges
> > 331 Ushers Road, Ballston Lake, NY 12019
> > Tel: 1.518.877.5173, Fax: 1.518.877.8346
> > www.sixnet.com
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> > For additional commands, e-mail: users-help@tomcat.apache.org
> > 
> 
> _________________________________________________________________
> Insert movie times and more without leaving Hotmail®. 
> http://windowslive.com/Tutorial/Hotmail/QuickAdd?ocid=TXT_TAGL
> M_WL_HM_Tutorial_QuickAdd_062009
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


RE: Classloader Issues

Posted by Martin Gainty <mg...@hotmail.com>.
inside TC you have to grant the container access to Jar 
assuming your class is located in commons-daemon.jar in 
$CATALINA_HOME/conf/catalina.policy

// These permissions apply to the daemon code
grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {
        permission java.security.AllPermission;
};

HTH!
Martin Gainty 
______________________________________________ 
Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité
 
Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le destinataire prévu, nous te demandons avec bonté que pour satisfaire informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est interdite. Ce message sert à l'information seulement et n'aura pas n'importe quel effet légalement obligatoire. Étant donné que les email peuvent facilement être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité pour le contenu fourni.




> Subject: Classloader Issues
> Date: Thu, 11 Jun 2009 13:13:32 -0400
> From: Jon.Pearson@sixnet.com
> To: users@tomcat.apache.org
> 
> I am encountering an odd problem with Tomcat (6.0.18). When the Java
> security manager is enabled, I get a ClassNotFoundException when I try
> to load the Postgres database driver using Class.forName() and a URL
> classloader pointed at a jar; its parent classloader is the Webapp
> classloader.
> 
> But, when the Java security manager is disabled, everything works
> smoothly and no ClassNotFoundException is thrown.
> 
> I've stepped through the code (using Eclipse's debugger) and not found
> anything that stands out, and I've set a general breakpoint on all
> SecurityExceptions, caught or uncaught. None are thrown.
> 
> Has anyone else encountered a problem like this? Is there a way for the
> Java security manager to block a class from loading without a
> SecurityException being thrown?
> 
> Jonathan P. Pearson - Software Engineer
> -------------------------------------------------- 
> SIXNET - Solutions for Your Industrial Networking Challenges
> 331 Ushers Road, Ballston Lake, NY 12019
> Tel: 1.518.877.5173, Fax: 1.518.877.8346
> www.sixnet.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
> 

_________________________________________________________________
Insert movie times and more without leaving Hotmail®. 
http://windowslive.com/Tutorial/Hotmail/QuickAdd?ocid=TXT_TAGLM_WL_HM_Tutorial_QuickAdd_062009