[ 
https://issues.apache.org/jira/browse/DERBY-3187?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12540763
 ] 

John H. Embretsen commented on DERBY-3187:
------------------------------------------

I'm wondering how the DERBY-2216 J2ME change was tested in a J2ME environment 
in the first place. Wouldn't the statement "import java.sql.DriverManager" 
cause an error in a CDC environment? At least it fails (with 
NoClassDefFoundError: java.sql.DriverManager) with the phoneME cvm (CDC/FP), 
even if I make sure the check for J2ME (which in its current state is 
inadequate) is true.

Anyway, I am planning to fix this for 10.3.2 as part of a major overhaul of the 
simple demo (DERBY-3118). I'm currently considering two options:

1) Revert the J2ME changes introduced in DERBY-2216. Instead, we may create a 
separate simple demo for the mobile platform.

2) Always keep the datasource's static type as javax.sql.DataSource, which is 
available in all environments. When access to methods in 
EmbeddedSimpleDataSource is required (only in Java ME environments), do a cast 
from DataSource to EmbeddedSimpleDataSource, e.g. like this:

((org.apache.derby.jdbc.EmbeddedSimpleDataSource)ds).setCreateDatabase("create");

instead of this:

ds.setCreateDatabase("create");


Option 2 works (runtime errors in non-mobile environments are avoided), at 
least in the JVM's I've tried so far, but:
  a) I'm not sure it will work in all "supported" JVMs (need to refresh and 
extend my Java spec knowledge a bit I guess).
  b) The code looks less elegant, which partly defeats the purpose of a 
*simple* demo.

So I'm inclined to go for option 1.

Any opinions? Or does anyone have any other options we could use to solve this?


> SimpleApp (demo) does not work in a client setting
> --------------------------------------------------
>
>                 Key: DERBY-3187
>                 URL: https://issues.apache.org/jira/browse/DERBY-3187
>             Project: Derby
>          Issue Type: Sub-task
>          Components: Demos/Scripts
>    Affects Versions: 10.3.1.4
>         Environment: derbyclient (no derby.jar in the classpath)
>            Reporter: John H. Embretsen
>            Assignee: John H. Embretsen
>
> Since J2ME support was added to the simple demo (bin-releases: 
> demo/programs/simple/SimpleApp.java) in DERBY-2216 (first available in 
> 10.3.1.4), the demo has not worked in a pure client setting as described in 
> the documentation (bin-releases: demo/programs/simple/example.html). This is 
> a regression from 10.2.2.0.
> $ export CLASSPATH=.:$DERBY_INSTALL/lib/derbyclient.jar
> $ cd $DERBY_INSTALL/demo/programs/simple
> 10.2.2.0:
> $ java SimpleApp derbyclient
> SimpleApp starting in derbyclient mode.
> Loaded the appropriate driver.
> Connected to and created database derbyDB
> Created table derbyDB
> Inserted 1956 Webster
> Inserted 1910 Union
> Updated 1956 Webster to 180 Grand
> Updated 180 Grand to 300 Lakeshore
> Verified the rows
> Dropped table derbyDB
> Closed result set and statement
> Committed transaction and closed connection
> SimpleApp finished
> 10.3.1.4:
> $ java SimpleApp derbyclient
> Exception in thread "main" java.lang.NoClassDefFoundError: 
> org/apache/derby/jdbc/EmbeddedSimpleDataSource

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to