tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Blevins <david.blev...@visi.com>
Subject Re: ClassNotFoundException: JaccProvider$Factory
Date Wed, 16 Jan 2008 20:30:44 GMT

On Jan 16, 2008, at 1:34 AM, Martin Vysny wrote:

> Hi guys,
> can you please help me with this one? Rarely, the OpenEJB startup
> fails with the exception ClassNotFoundException: JaccProvider$Factory
> (full stacktrace is below). The interesting point is, that you can  
> just
> rerun the OpenEJB and the server would start normally. We are using
> OpenEJB 3.0-beta-1, and I could swear that the
> org.apache.openejb.core.security.JaccProvider$Factory is on the
> classpath. We are using java6 x86 on linux:
> java version "1.6.0_03"
> Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
> Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing)
> We are not using any special classloader hierarchy (well, not before
> OpenEJB is fully started). Perhaps a java bug?


That's pretty strange.  My only guess is that the Thread context  
classloader is getting changed to something else (seemingly randomly)  
and the factory class becomes no longer visible.  I've implemented  
this particular fix forces it to load earlier and forces a specific  
classloader when using our default factory:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java?r1=612547&r2=612546&pathrev=612547

We could test this theory out on the code you have now if you catch  
the exception you posted below and in the catch clause do something  
like this:

        ClassLoader classLoader =  
Thread.currentThread().getContextClassLoader();
        System.out.println("classLoader" + classLoader);
        System.out.println("classLoader.class" +  
classLoader.getClass().getName());
        if (classLoader instanceof URLClassLoader) {
            URLClassLoader urlClassLoader = (URLClassLoader)  
classLoader;
            URL[] urls = urlClassLoader.getURLs();
            for (URL url : urls) {
                System.out.println("url = " + url.toExternalForm());
            }
        }

-David


> PolicyConfigurationFactory class not found: JACC:Error
> PolicyConfigurationFactory : cannot find class :
> org.apache.openejb.core.security.JaccProvider$Factory
>       at
> org 
> .apache 
> .openejb 
> .assembler.classic.Assembler.createApplication(Assembler.java:558)
>       at
> org 
> .apache 
> .openejb 
> .assembler.classic.Assembler.buildContainerSystem(Assembler.java:299)
>       at
> org.apache.openejb.assembler.classic.Assembler.build(Assembler.java: 
> 207)
>       at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:149)
>       at org.apache.openejb.OpenEJB.init(OpenEJB.java:293)
>       at org.apache.openejb.OpenEJB.init(OpenEJB.java:272)
>       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:597)
>       at
> org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java: 
> 36)
>       at
> org 
> .apache 
> .openejb 
> .client 
> .LocalInitialContextFactory.init(LocalInitialContextFactory.java:59)
>       at
> org 
> .apache 
> .openejb 
> .client 
> .LocalInitialContextFactory 
> .getInitialContext(LocalInitialContextFactory.java:45)
>       at
> javax.naming.spi.NamingManager.getInitialContext(NamingManager.java: 
> 667)
>       at
> javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
>       at javax.naming.InitialContext.init(InitialContext.java:223)
>       at javax.naming.InitialContext.<init>(InitialContext.java:197)
>       at
> com 
> .whitestein 
> .fe 
> .embedded 
> .launcher 
> .OpenEjbAndJettyLauncher.initOpenEJB(OpenEjbAndJettyLauncher.java:223)
>       at
> com 
> .whitestein 
> .fe 
> .embedded 
> .launcher 
> .OpenEjbAndJettyLauncher.launch(OpenEjbAndJettyLauncher.java:146)
>       at
> com.whitestein.fe.embedded.launcher.Launcher.launch(Launcher.java:107)
>       at com.whitestein.fe.it.cal.CalUtils.newComm(CalUtils.java:45)
>       at
> com.whitestein.fe.it.cal.AbstractCalTest.setUp(AbstractCalTest.java: 
> 35)
>       at junit.framework.TestCase.runBare(TestCase.java:125)
>       at junit.framework.TestResult$1.protect(TestResult.java:106)
>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>       at junit.framework.TestResult.run(TestResult.java:109)
>       at junit.framework.TestCase.run(TestCase.java:118)
>       at junit.framework.TestSuite.runTest(TestSuite.java:208)
>       at junit.framework.TestSuite.run(TestSuite.java:203)
>       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:597)
>       at
> org 
> .apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java: 
> 213)
>       at
> org 
> .apache 
> .maven 
> .surefire 
> .suite 
> .AbstractDirectoryTestSuite 
> .executeTestSet(AbstractDirectoryTestSuite.java:138)
>       at
> org 
> .apache 
> .maven 
> .surefire 
> .suite 
> .AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java: 
> 125)
>       at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
>       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:597)
>       at
> org 
> .apache 
> .maven 
> .surefire 
> .booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:290)
>       at
> org 
> .apache 
> .maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:818)
> Caused by: org.apache.openejb.OpenEJBException:
> PolicyConfigurationFactory class not found: JACC:Error
> PolicyConfigurationFactory : cannot find class :
> org.apache.openejb.core.security.JaccProvider$Factory
>       at
> org 
> .apache 
> .openejb 
> .assembler 
> .classic.JaccPermissionsBuilder.install(JaccPermissionsBuilder.java: 
> 62)
>       at
> org 
> .apache 
> .openejb 
> .assembler.classic.Assembler.createApplication(Assembler.java:436)
>       ... 42 more
> Caused by: java.lang.ClassNotFoundException: JACC:Error
> PolicyConfigurationFactory : cannot find class :
> org.apache.openejb.core.security.JaccProvider$Factory
>       at
> javax 
> .security 
> .jacc 
> .PolicyConfigurationFactory 
> .getPolicyConfigurationFactory(PolicyConfigurationFactory.java:143)
>       at
> org 
> .apache 
> .openejb 
> .assembler 
> .classic.JaccPermissionsBuilder.install(JaccPermissionsBuilder.java: 
> 48)
>       ... 43 more
> Caused by: java.lang.ClassNotFoundException:
> org.apache.openejb.core.security.JaccProvider$Factory
>       at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>       at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>       at java.lang.Class.forName0(Native Method)
>       at java.lang.Class.forName(Class.java:247)
>       at
> javax 
> .security 
> .jacc 
> .PolicyConfigurationFactory 
> .getPolicyConfigurationFactory(PolicyConfigurationFactory.java:131)
>       ... 44 more
>


Mime
View raw message