[ 
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

        

Reply via email to