[ http://issues.apache.org/jira/browse/DERBY-668?page=all ]

Bryan Pendleton updated DERBY-668:
----------------------------------

    Derby Info: [Release Note Needed]

Here's a release note:

      PROBLEM: Sysinfo classpath information was insufficiently detailed

      SYMPTOM: Sometimes it was hard to tell where the Derby classes were 
actually being loaded from in the JVM

      CAUSE: the algorithm that sysinfo used for analyzing and reporting on the 
application classpath was not robust.

      SOLUTION: The sysinfo tool now prints additional information about the 
origin of the classes and jars that it examines. The origin of a class might 
be: an entry in the application classpath, an entry in a class loader location
list, a jar fetched due to being listed in the manifest entry of another jar, a 
standard extension in the JRE's extensions directory, a jar installed into the 
application server, or any of various other possibilities.

      Note that when sysinfo runs under a Java security manager, it may need 
special permissions to access this additional information, including the 
permission to read the java.class.path property, and the permission to call 
getProtectionDomain on a class. If sysinfo is not granted these permissions, it 
will display an error message about the security problem in place of displaying 
the class origin information.

    SECURITY NOTE: The new permissions are optional. If you do not provide 
them, you will see a message such as the following in your sysinfo output: 
Unable to analyze class path: access denied (java.util.PropertyPermission 
java.class.path read). Such a message does not indicate an error; it simply 
means that the sysinfo tool was unable to provide detailed classpath 
information because it did not have permission to read the classpath. In prior 
releases, under these circumstances, sysinfo would silently print nothing, now 
it prints an informational message about the reason that it couldn't provide 
any classpath information.


> SysInfo does not print the right information when Derby is not loaded through 
> the classpath.
> --------------------------------------------------------------------------------------------
>
>          Key: DERBY-668
>          URL: http://issues.apache.org/jira/browse/DERBY-668
>      Project: Derby
>         Type: Bug

>   Components: Build tools
>     Versions: 10.1.1.0
>     Reporter: Bryan Pendleton
>     Assignee: Bryan Pendleton
>     Priority: Critical
>      Fix For: 10.2.0.0
>  Attachments: Derby-668.diff, derby-668-2.diff, derby-668-3.diff, 
> derby-668-4.diff, sysinfo_Feb27_2006.diff, sysinfo_Feb28_2006.diff, 
> with_andrews_feedback.diff
>
> There is a section in the SysInfo tool's output titled "Derby Information", 
> which prints location and version information for the major Derby jars. Here 
> is an example of that output:
> --------- Derby Information --------
> JRE - JDBC: J2SE 1.4.2 - JDBC 3.0
> [/home/bpendleton/src/derby-subversion/trunk/jars/insane/derby.jar] 10.2.0.0 
> alpha - (315052M)
> [/home/bpendleton/src/derby-subversion/trunk/jars/insane/derbytools.jar] 
> 10.2.0.0 alpha - (315052M)
> [/home/bpendleton/src/derby-subversion/trunk/jars/insane/derbynet.jar] 
> 10.2.0.0 alpha - (315052M)
> [/home/bpendleton/src/derby-subversion/trunk/jars/insane/derbyclient.jar] 
> 10.2.0.0 alpha - (315052M)
> [/home/bpendleton/downloads/derby/db2jcc/lib/db2jcc.jar] 2.4 - (17)
> [/home/bpendleton/downloads/derby/db2jcc/lib/db2jcc_license_c.jar] 2.4 - (17)
> Unfortunately, this tool can be fooled if you arrange for one of these jar 
> files to be loaded from a magic location like $JAVA_HOME/jre/lib/ext.
> For example, I had (accidentally) placed an old version of db2jcc.jar into 
> $JAVA_HOME/jre/lib/ext. When I ran SysInfo, it printed out: 
> --------- Derby Information --------
> JRE - JDBC: J2SE 1.4.2 - JDBC 3.0
> [/home/bpendleton/src/derby-subversion/trunk/jars/insane/derby.jar] 10.2.0.0 
> alpha - (315052M)
> [/home/bpendleton/src/derby-subversion/trunk/jars/insane/derbytools.jar] 
> 10.2.0.0 alpha - (315052M)
> [/home/bpendleton/src/derby-subversion/trunk/jars/insane/derbynet.jar] 
> 10.2.0.0 alpha - (315052M)
> [/home/bpendleton/src/derby-subversion/trunk/jars/insane/derbyclient.jar] 
> 10.2.0.0 alpha - (315052M)
> [/home/bpendleton/downloads/derby/db2jcc/lib/db2jcc.jar] 1.0 - (581)
> [/home/bpendleton/downloads/derby/db2jcc/lib/db2jcc_license_c.jar] 1.0 - (581)
> However, the "1.0 (581)" information actually came from 
> $JAVA_HOME/jre/lib/ext/db2jcc.jar, NOT from
> /home/bpendleton/downloads/derby/db2jcc/lib/db2jcc.jar.
> It would be nice if SysInfo could detect the difference between a jar file 
> being loaded via the application class loader using $CLASSPATH, and a jar 
> file being loaded via the system class loader using JDK library extensions.
> To reproduce the problem, simply:
> 1) Place an older version of db2jcc.jar into $JAVA_HOME/jre/lib/ext
> 2) Place a newer version of db2jcc.jar into your $CLASSPATH
> 3) Run SysInfo. You will see that it prints the name of the jarfile from 
> $CLASSPATH, but the version info from the JDK copy.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to