[ http://issues.apache.org/jira/browse/TAPESTRY-964?page=all ]
Jesse Kuhnert resolved TAPESTRY-964.
------------------------------------
Resolution: Invalid
If this gets fixed at all it'll be in hivemind itself, please file the issue
there.
https://issues.apache.org/jira/browse/HIVEMIND
> 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]