commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leo Blumencweig (JIRA)" <>
Subject [jira] [Commented] (DISCOVERY-13) Problem with Oracle JVM classLoader
Date Tue, 12 Apr 2011 18:02:05 GMT


Leo Blumencweig commented on DISCOVERY-13:

No joy.

It seems that the key is that the CodeSource is unable to obtain a "location" (ie, getLocation
returns null)

I'm not quite sure why is that happening, but I'm trying to dig a little bit deeper (it's
a hard to debug enviroment, only way to do it is's System.out.println(...) )

I think that for thusday I'll will have some more insights or (I hope) a solution

In the mean time, any ideas, no matter how improbale, will be VERY APPRECIATED!!!

> Problem with Oracle JVM classLoader
> -----------------------------------
>                 Key: DISCOVERY-13
>                 URL:
>             Project: Commons Discovery
>          Issue Type: Improvement
>    Affects Versions: 0.2, 0.4
>         Environment: Oracle Java stored procedure (oracle versions 8i -> 11g) Any
>            Reporter: Leo Blumencweig
>            Assignee: Simone Tripodi
>            Priority: Minor
>             Fix For: 0.2, 0.4
>   Original Estimate: 504h
>  Remaining Estimate: 504h
> First of all, excuse my bad english (I'm an spanish speaker)
> Starting in version 8i, Oracle provides an embedded JVM inside th databases, in order
to develop a stored procedure inJava language, later to be invoked via PL/SQL.
> Saddly, the JVM has some quirks, for example an somehow brain-damaged classLoader (oracle.aurora.rdbms.OracleClassLoader).
> This JVM stores the classes inside table objects (very reasonable).
> This leads to some problem: the resources haves some strange URL (example: jserver:/resource/schema/NAME_OF_THE_SCHEMA/
> It will be not problema at all except because it's brain damage insist in telling that
the above URL works only with RESOURCES and not with CLASSES!!
> for example, the following example
> 	  private static void getData ( ClassLoader cl , String str ){
> 		  System.out.println(str +".class" + "-> "+cl.getResource(str+".class"));
> 		  System.out.println(str +".class" + "-> "+ClassLoader.getSystemResource(str+".class"));
> 	  }
> ...
> getData(Test.class.getClassLoader(),"");
> ...
> gives this 2 results:
> with normal classLoader ( sun.misc.Launcher$AppClassLoader)
>     ar/com/menhir/wstest/Test.class-> file:/C:/Users/LeoB/workspace2/prueba/bin/ar/com/menhir/wstest/Test.class
>     ar/com/menhir/wstest/Test.class-> file:/C:/Users/LeoB/workspace2/prueba/bin/ar/com/menhir/wstest/Test.class
> with oracle classLoader (oracle.aurora.rdbms.OracleClassLoader)
>     ar/com/menhir/wstest/Test.class-> null
>     ar/com/menhir/wstest/Test.class-> null
> The problem arises in org.apache.commons.discovery.resource.classes.DiscoverClasses,
where the line 60 
> final String resourceName = className.replace('.','/') + ".class";
> points to a nonexistente resource.
> my workaround was to hack this class with the following:
> final String resourceName ='.','/')
+ ".class";
> where getResourcePrefix gets the correct prefix for this class.
> You must note that this is a somehow brutal way of solving. I'm interested in contribute
with the wright way, but I'm not very sure of where to start.
> Could you please help me?
> Thank you
>    Leo Blumencweig

This message is automatically generated by JIRA.
For more information on JIRA, see:

View raw message