Kevin-

I don't think we've done extensive stand-alone testing with security enabled, but we have people using OpenJPA in so many different exotic containers with their attendant security settings, that I'd be a little surprised if there were essential doPriv checks that were missing.

The fact that it is an intermittent NPE from "java.io.Win32CanonicalPathComponentRetriever" gives me a little pause. Which JVM did you test on?

Also, it'd be nice to figure out what that file name being passed to File.exists() is. A println on the file name in URLMetaDataIterator.getFile() might show that it is a string with such crazy characters that it triggers some other bug with Windows file handing.



On Mar 13, 2007, at 5:55 AM, Kevin Sutter wrote:

Just curious,
Has there been any testing with Java 2 Security enabled and OpenJPA? I'm
hitting a semi-intermittent problem (it doesn't seem to show up on all
machines) which results in an NPE coming out of the
javax.persistence.Persistence.createEntityManager method. I know we have no control over this specific piece of code, but I'm wondering whether we need some doPriv blocks elsewhere in the code path. I reviewed the JIRA Issues and didn't see anything related to this. Before I go further, I thought I
would check to see if there's been any other experiences with Java 2
Security.  Thanks.

Kevin

P.S.  Here's the call stack if you are interested...

Caused by: java.lang.NullPointerException
   at java.io.Win32CanonicalPathComponentRetriever.nextComponent(
Win32CanonicalPath.java:318)
   at java.io.Win32CanonicalPath.equals(Win32CanonicalPath.java:117)
at java.io.FilePermission.impliesIgnoreMask(FilePermission.java: 373) at java.io.FilePermissionCollection.implies(FilePermission.java: 763)
   at
org.eclipse.osgi.framework.internal.core.ConditionalPermissionSet.impl ies(
ConditionalPermissionSet.java:224)
   at
org.eclipse.osgi.framework.internal.core.BundleCombinedPermissions.imp lies(
BundleCombinedPermissions.java:124)
at java.security.ProtectionDomain.implies(ProtectionDomain.java: 225) at java.security.AccessController.checkPermission (AccessController.java
:94)
at java.lang.SecurityManager.checkPermission (SecurityManager.java:547)
   at com.ibm.ws.security.core.SecurityManager.checkPermission(
SecurityManager.java:189)
   at java.lang.SecurityManager.checkRead(SecurityManager.java:886)
   at java.io.File.exists(File.java:726)
   at org.apache.openjpa.lib.meta.URLMetaDataIterator.getFile(
URLMetaDataIterator.java:68)
   at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(
XMLMetaDataParser.java:311)
   at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(
XMLMetaDataParser.java:289)
   at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(
XMLMetaDataParser.java:263)
   at
org.apache.openjpa.persistence.PersistenceProductDerivation $ConfigurationParser.parse
(PersistenceProductDerivation.java:419)
   at
org.apache.openjpa.persistence.PersistenceProductDerivation.parseResou rces(
PersistenceProductDerivation.java:287)
at org.apache.openjpa.persistence.PersistenceProductDerivation.load(
PersistenceProductDerivation.java:254)
at org.apache.openjpa.persistence.PersistenceProductDerivation.load(
PersistenceProductDerivation.java:152)
   at
org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityMan agerFactory
(PersistenceProviderImpl.java:66)
   at
org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityMan agerFactory
(PersistenceProviderImpl.java:78)
   at javax.persistence.Persistence.createEntityManagerFactory(
Persistence.java:83)
   at javax.persistence.Persistence.createEntityManagerFactory(
Persistence.java:60)

Reply via email to