[ http://issues.apache.org/jira/browse/TAPESTRY-964?page=comments#action_12449540 ] lionel gomez commented on TAPESTRY-964: ---------------------------------------
Alternate fix in bug TAPESTRY-1148 > Tapestry web app (including workbench example) fails in Tomcat with security > manager enabled > -------------------------------------------------------------------------------------------- > > Key: TAPESTRY-964 > URL: http://issues.apache.org/jira/browse/TAPESTRY-964 > Project: Tapestry > Issue Type: Bug > Components: Framework > Affects Versions: 4.0.2 > Environment: Linux (2.6 kernel), Tomcat 5.0.28, Sun Java SDK > 1.5.0_02, Tapestry 4.0.2 > Reporter: Paul Homes > Attachments: ClassPool.java.patch > > > Web apps that use Tapestry 4.0 in Tomcat with the security manager enabled > fail with a "java.lang.NoClassDefFoundError: > org.apache.hivemind.ServiceImplementationFactory" exception. > To simplify testing I only have the Tapestry 4.0.2 example workbench web app > deployed in a new Tomcat 5.0.28 install. The workbench example works fine > when Tomcat is started without the security manager, but when the security > manager is enabled you can see the following stack trace: > 2006-05-25 17:32:57 StandardContext[/workbench]Servlet /workbench threw > load() exception javax.servlet.ServletException: > org.apache.hivemind.ServiceImplementationFactory > at > org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:286) > at > org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:157) > at > org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:110) > at > org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1024) > at > org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862) > at > org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4013) > at > org.apache.catalina.core.StandardContext.start(StandardContext.java:4357) > at > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823) > at > org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:121) > at > org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:143) > at java.security.AccessController.doPrivileged(Native Method) > at > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:805) > at > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595) > at > org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277) > at > org.apache.catalina.core.StandardHost.install(StandardHost.java:832) > at > org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:625) > at > org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:431) > at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983) > at > org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349) > at > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091) > at org.apache.catalina.core.StandardHost.start(StandardHost.java:789) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083) > at > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478) > at > org.apache.catalina.core.StandardService.start(StandardService.java:480) > at > org.apache.catalina.core.StandardServer.start(StandardServer.java:2313) > at org.apache.catalina.startup.Catalina.start(Catalina.java:556) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425) > ----- Root Cause ----- > java.lang.NoClassDefFoundError: > org.apache.hivemind.ServiceImplementationFactory > at > org.apache.hivemind.impl.InvokeFactoryServiceConstructor.class$(InvokeFactoryServiceConstructor.java:83) > at > org.apache.hivemind.impl.InvokeFactoryServiceConstructor.setupFactoryAndParameters(InvokeFactoryServiceConstructor.java:82) > at > org.apache.hivemind.impl.InvokeFactoryServiceConstructor.constructCoreServiceImplementation(InvokeFactoryServiceConstructor.java:55) > at > org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl.constructCoreServiceImplementation(AbstractServiceModelImpl.java:108) > at > org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl.constructNewServiceImplementation(AbstractServiceModelImpl.java:158) > at > org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl.constructServiceImplementation(AbstractServiceModelImpl.java:140) > at > org.apache.hivemind.impl.servicemodel.SingletonServiceModel.getActualServiceImplementation(SingletonServiceModel.java:69) > at $Runnable_10b6a75df19._service($Runnable_10b6a75df19.java) > at $Runnable_10b6a75df19.run($Runnable_10b6a75df19.java) > at $Runnable_10b6a75df18.run($Runnable_10b6a75df18.java) > at > org.apache.hivemind.impl.RegistryInfrastructureImpl.startup(RegistryInfrastructureImpl.java:436) > at > org.apache.hivemind.impl.RegistryBuilder.constructRegistry(RegistryBuilder.java:154) > at > org.apache.tapestry.ApplicationServlet.constructRegistry(ApplicationServlet.java:253) > at > org.apache.tapestry.ApplicationServlet.init(ApplicationServlet.java:194) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:239) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) > at > org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:268) > at > org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:157) > at > org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:110) > at > org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1024) > at > org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862) > at > org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4013) > at > org.apache.catalina.core.StandardContext.start(StandardContext.java:4357) > at > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823) > at > org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:121) > at > org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:143) > at java.security.AccessController.doPrivileged(Native Method) > at > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:805) > at > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595) > at > org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277) > at > org.apache.catalina.core.StandardHost.install(StandardHost.java:832) > at > org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:625) > at > org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:431) > at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983) > at > org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349) > at > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091) > at org.apache.catalina.core.StandardHost.start(StandardHost.java:789) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083) > at > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478) > at > org.apache.catalina.core.StandardService.start(StandardService.java:480) > at > org.apache.catalina.core.StandardServer.start(StandardServer.java:2313) > at org.apache.catalina.startup.Catalina.start(Catalina.java:556) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425) > The catalina.policy file in use is the standard Tomcat one with the following > appended to grant all permissions to the Tapestry workbench example: > grant codeBase "file:${catalina.home}/webapps/workbench/-" { > permission java.security.AllPermission; > }; > Tomcat has been started like so: > catalina.sh start -security > Not sure if this helps much, but I enabled some java security debugging with: > export CATALINA_OPTS=-Djava.security.debug=access:failure > catalina.sh start -security > ... that generates: > access: access allowed (java.io.FilePermission > /usr/local/jakarta-tomcat-5.0.28/webapps/workbench/WEB-INF/classes/org/apache/hivemind/impl/servicemodel/SingletonInnerProxy.class > read) > access: access allowed (java.io.FilePermission > /usr/local/jakarta-tomcat-5.0.28/webapps/workbench/WEB-INF/lib/hivemind-1.1.1.jar > read) > access: access allowed (java.io.FilePermission > /usr/local/jakarta-tomcat-5.0.28/webapps/workbench/WEB-INF/lib/hivemind-1.1.1.jar > read) > access: access allowed (java.io.FilePermission > /usr/local/jakarta-tomcat-5.0.28/webapps/workbench/WEB-INF/lib/hivemind-1.1.1.jar > read) > access: access allowed (java.lang.RuntimePermission accessDeclaredMembers) > access: access allowed (java.lang.reflect.ReflectPermission > suppressAccessChecks) > access: access allowed (java.lang.reflect.ReflectPermission > suppressAccessChecks) > access: access allowed (java.lang.reflect.ReflectPermission > suppressAccessChecks) > access: access denied (java.io.FilePermission > /usr/local/jakarta-tomcat-5.0.28/webapps/workbench/WEB-INF/classes/org/apache/hivemind/ServiceImplementationFactory.class > read) > java.lang.Exception: Stack trace > at java.lang.Thread.dumpStack(Thread.java:1158) > at > java.security.AccessControlContext.checkPermission(AccessControlContext.java:253) > at > java.security.AccessController.checkPermission(AccessController.java:427) > at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) > at java.lang.SecurityManager.checkRead(SecurityManager.java:871) > at java.io.File.exists(File.java:700) > at > org.apache.naming.resources.FileDirContext.file(FileDirContext.java:826) > at > org.apache.naming.resources.FileDirContext.lookup(FileDirContext.java:208) > at > org.apache.naming.resources.ProxyDirContext.lookup(ProxyDirContext.java:287) > at > org.apache.catalina.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:1707) > at > org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1575) > at > org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:860) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1307) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189) > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:164) > at > org.apache.hivemind.impl.InvokeFactoryServiceConstructor.class$(InvokeFactoryServiceConstructor.java:83) > at > org.apache.hivemind.impl.InvokeFactoryServiceConstructor.setupFactoryAndParameters(InvokeFactoryServiceConstructor.java:82) > at > org.apache.hivemind.impl.InvokeFactoryServiceConstructor.constructCoreServiceImplementation(InvokeFactoryServiceConstructor.java:55) > at > org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl.constructCoreServiceImplementation(AbstractServiceModelImpl.java:108) > at > org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl.constructNewServiceImplementation(AbstractServiceModelImpl.java:158) > at > org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl.constructServiceImplementation(AbstractServiceModelImpl.java:140) > at > org.apache.hivemind.impl.servicemodel.SingletonServiceModel.getActualServiceImplementation(SingletonServiceModel.java:69) > at $Runnable_10b6b1bdd89._service($Runnable_10b6b1bdd89.java) > at $Runnable_10b6b1bdd89.run($Runnable_10b6b1bdd89.java) > at $Runnable_10b6b1bdd88.run($Runnable_10b6b1bdd88.java) > at > org.apache.hivemind.impl.RegistryInfrastructureImpl.startup(RegistryInfrastructureImpl.java:436) > at > org.apache.hivemind.impl.RegistryBuilder.constructRegistry(RegistryBuilder.java:154) > at > org.apache.tapestry.ApplicationServlet.constructRegistry(ApplicationServlet.java:253) > at > org.apache.tapestry.ApplicationServlet.init(ApplicationServlet.java:194) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:239) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) > at > org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:268) > at > org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:157) > at > org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:110) > at > org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1024) > at > org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862) > at > org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4013) > at > org.apache.catalina.core.StandardContext.start(StandardContext.java:4357) > at > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823) > at > org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:121) > at > org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:143) > at java.security.AccessController.doPrivileged(Native Method) > at > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:805) > at > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595) > at > org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277) > at > org.apache.catalina.core.StandardHost.install(StandardHost.java:832) > at > org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:625) > at > org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:431) > at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983) > at > org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349) > at > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091) > at org.apache.catalina.core.StandardHost.start(StandardHost.java:789) > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083) > at > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478) > at > org.apache.catalina.core.StandardService.start(StandardService.java:480) > at > org.apache.catalina.core.StandardServer.start(StandardServer.java:2313) > at org.apache.catalina.startup.Catalina.start(Catalina.java:556) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425) > access: access allowed (java.security.SecurityPermission getPolicy) > access: domain that failed ProtectionDomain (null <no signer certificates>) > [EMAIL PROTECTED] > <no principals> > [EMAIL PROTECTED] ( > (java.lang.RuntimePermission accessClassInPackage.org.apache.jasper.runtime) > (java.lang.RuntimePermission > accessClassInPackage.org.apache.jasper.runtime.*) > (java.lang.RuntimePermission getAttribute) > (java.util.PropertyPermission java.version read) > (java.util.PropertyPermission java.home read) > (java.util.PropertyPermission java.vm.name read) > (java.util.PropertyPermission java.vm.vendor read) > (java.util.PropertyPermission javax.sql.* read) > (java.util.PropertyPermission os.name read) > (java.util.PropertyPermission java.vendor.url read) > (java.util.PropertyPermission java.vm.specification.vendor read) > (java.util.PropertyPermission java.specification.vendor read) > (java.util.PropertyPermission os.version read) > (java.util.PropertyPermission java.specification.name read) > (java.util.PropertyPermission java.class.version read) > (java.util.PropertyPermission file.separator read) > (java.util.PropertyPermission java.vm.version read) > (java.util.PropertyPermission os.arch read) > (java.util.PropertyPermission java.naming.* read) > (java.util.PropertyPermission jaxp.debug read) > (java.util.PropertyPermission java.vm.specification.name read) > (java.util.PropertyPermission java.vm.specification.version read) > (java.util.PropertyPermission java.specification.version read) > (java.util.PropertyPermission java.vendor read) > (java.util.PropertyPermission path.separator read) > (java.util.PropertyPermission line.separator read) > ) > There is a similar problem with security manager enabled Tomcat 4.1.31, Java > SDK 1.4.2_10 on Windows XP where the class loading problem shows up this time > as: > > javax.servlet.ServletException: Unable to initialize application servlet: > Unable to construct service hivemind.Startup: Error at > jar:file:/C:/jakarta-tomcat-4.1.31/webapps/futrix5dev/WEB-INF/lib/hivemind-1.1.jar!/META-INF/hivemodule.xml, > line 599, column 43: Unable to process attribute autowire-services (of > element construct): Unable to construct configuration hivemind.Translators: > Error at > jar:file:/C:/jakarta-tomcat-4.1.31/webapps/futrix5dev/WEB-INF/lib/hivemind-1.1.jar!/META-INF/hivemodule.xml, > line 555, column 62: Unable to process attribute service-id (of element > translator): Unable to lookup java.lang.Class: java.lang.Class > at > org.apache.tapestry.ApplicationServlet.init(ApplicationServlet.java:206) > at > org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:888) > ..... > Caused by: org.apache.hivemind.ApplicationRuntimeException: Unable to lookup > java.lang.Class: java.lang.Class > at > org.apache.hivemind.service.impl.CtClassSource.getCtClass(CtClassSource.java:56) > at > org.apache.hivemind.service.impl.AbstractFab.convertClass(AbstractFab.java:83) > at > org.apache.hivemind.service.impl.AbstractFab.convertClasses(AbstractFab.java:66) > at > org.apache.hivemind.service.impl.ClassFabImpl.addMethod(ClassFabImpl.java:280) > at > org.apache.hivemind.impl.ProxyBuilder.addServiceMethods(ProxyBuilder.java:139) > at > org.apache.hivemind.impl.servicemodel.SingletonServiceModel.createSingletonProxyClass(SingletonServiceModel.java:183) > at > org.apache.hivemind.impl.servicemodel.SingletonServiceModel.createSingletonProxy(SingletonServiceModel.java:103) > ... 73 more > Caused by: javassist.NotFoundException: java.lang.Class > at javassist.ClassPool.get(ClassPool.java:301) > at > org.apache.hivemind.service.impl.CtClassSource.getCtClass(CtClassSource.java:52) > ... 79 more > The only existing JIRA issue I can find which sounds similar is TAPESTRY-150 > but that is with Tapestry 3.0 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
