[
https://issues.apache.org/jira/browse/DERBY-5419?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-5419:
--------------------------------------
Attachment: d5419-1a-check-for-cdc.diff
Derby tries to find out if the JVM is a Java ME variant in the JVMInfo class.
It uses the java.specification.name property to determine that. Currently, it
checks if the property value starts with "J2ME", in which case it's recognized
as IBM WCTME, or if it contains the two words "Profile" and "Specification", in
which case it's recognized as phoneME.
The property has this value on Oracle Java ME Embedded Client 1.0, which isn't
recognized by either of the two checks:
CDC 1.1.2 (JSR218)- FP 1.1.2 (JSR219) (SecOp 1.0)- PBP 1.1.2 (JSR217)- (RMI
JSR66)- (JDBC JSR169)- (WebServices JSR172)- (Specification
The attached patch makes JVMInfo also check if the value starts with CDC. With
that change, the engine doesn't try to load modules that require Java SE on
this platform, and I'm able to run some smaller tests. (I haven't managed to
run suites.All yet, as it fails with an OOME after a while.)
> Make Derby run on Oracle Java ME Embedded Client
> ------------------------------------------------
>
> Key: DERBY-5419
> URL: https://issues.apache.org/jira/browse/DERBY-5419
> Project: Derby
> Issue Type: Improvement
> Components: Services
> Affects Versions: 10.8.2.1
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
> Attachments: d5419-1a-check-for-cdc.diff
>
>
> I tried running Derby on Oracle Java ME Embedded Client 1.0, and booting the
> engine failed:
> Caused by: java.lang.NoClassDefFoundError:
> java.nio.channels.OverlappingFileLockException
> at
> org.apache.derby.impl.io.DirStorageFactory4.newPersistentFile(DirStorageFactory4.java:57)
> at
> org.apache.derby.impl.io.DirStorageFactory.newStorageFile(DirStorageFactory.java:58)
> at
> org.apache.derby.impl.services.monitor.StorageFactoryService$1.run(StorageFactoryService.java:96)
> at java.security.AccessController.doPrivileged(Compiled
> Method)(AccessController.java:351)
> at
> java.security.AccessController.doPrivileged(AccessController.java:320)
> at
> org.apache.derby.impl.services.monitor.StorageFactoryService.<init>(StorageFactoryService.java:86)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.getPersistentService(BaseMonitor.java:1630)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.access$100(BaseMonitor.java:99)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor$ProviderEnumeration.getNextStorageFactory(BaseMonitor.java:2146)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor$ProviderEnumeration.hasMoreElements(BaseMonitor.java:2159)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(BaseMonitor.java:1516)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(BaseMonitor.java:979)
> at
> org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Monitor.java:550)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:2697)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:385)
> This seems to happen because Derby recognizes it as a Java 1.4 platform,
> whereas it's actually a CDC/FP 1.1.2 platform.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira