On Wed, 2008-01-16 at 14:16 -0800, David Blevins wrote:
> On Jan 16, 2008, at 12:15 PM, Dain Sundstrom wrote:
>
> > 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.Class.forName(Class.java:247)
> > at
> > javax
> > .security
> > .jacc
> > .PolicyConfigurationFactory
> > .getPolicyConfigurationFactory(PolicyConfigurationFactory.java:131)
> > ... 44 more
> >
> > But, if you look at our spec code for
> > javax.security.jacc.PolicyConfigurationFactory, there is no code on
> > line 131, and after browsing the full history of that file, there
> > has never been a call to Class.forName on line 247. Do you have a
> > second (possibly one from Sun), implementation of the JACC spec in
> > your lib directory or one of your applications?
>
> That's an interesting possibility. Could be there is another jar in
> your classpath providing the jacc api and it randomly ends up before
> ours (and presumably it's blowing up in it's static initializer).
>
> Looks like you're in maven2/surefire when this happens. It should be
> possible to get a list of the jars in your classpath via the code I
> posted earlier (surefire's classloader is a subclass of
> URLClassLoader). Then you should be able to look in them and see how
> many copies copy of javax/security/jacc/
> PolicyConfigurationFactory.class you have.
>
> I've got a script for grepping through jars that might be handy:
> http://docs.codehaus.org/display/ninja/grepjar
>
> -David
>
Hi all,
thanks again, you were right! There was javaee-1.4.jar in the
classpath along with geronimo-jacc implementation. When we removed
javaee-1.4.jar from classpath, OpenEJB started succesfully.
It was quite an interesting bug though, because on computer A it
worked even with javaee-1.4 on classpath (regardless of whether javaee
was first or last on the classpath), on computer B it failed. Perhaps
some classloader caused it - I don't know for sure. However, to fix this
issue just remove javaee (or other non-OpenEJB/Geronimo JACC
implementation) from classpath.
> > 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?
> >> Thanks!
> >> Martin
> >>
> >>
> >> 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
> >>
> >
> >
>
>
--
Mgr. Martin Vysny | mvy@whitestein.com
Software Engineer
Whitestein Technologies s.r.o | www.whitestein.com
Panenska 28 | 811 03 Bratislava | Slovak Republic
Main +421 2 5443-5502 | Direct +421 2 5930-0717
|