Return-Path: X-Original-To: apmail-commons-issues-archive@minotaur.apache.org Delivered-To: apmail-commons-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9A561242C for ; Wed, 27 Apr 2011 15:33:42 +0000 (UTC) Received: (qmail 63371 invoked by uid 500); 27 Apr 2011 15:33:42 -0000 Delivered-To: apmail-commons-issues-archive@commons.apache.org Received: (qmail 63326 invoked by uid 500); 27 Apr 2011 15:33:42 -0000 Mailing-List: contact issues-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: issues@commons.apache.org Delivered-To: mailing list issues@commons.apache.org Received: (qmail 63318 invoked by uid 99); 27 Apr 2011 15:33:42 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 27 Apr 2011 15:33:42 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 27 Apr 2011 15:33:41 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 59EEFB6551 for ; Wed, 27 Apr 2011 15:33:03 +0000 (UTC) Date: Wed, 27 Apr 2011 15:33:03 +0000 (UTC) From: "Sebb (JIRA)" To: issues@commons.apache.org Message-ID: <1091297016.6145.1303918383364.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <28707719.348781294943867455.JavaMail.jira@thor> Subject: [jira] [Commented] (DISCOVERY-13) Problem with Oracle JVM classLoader MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/DISCOVERY-13?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13025844#comment-13025844 ] Sebb commented on DISCOVERY-13: ------------------------------- In my opinion, the fact that the Oracle JVM does not allow classes to be found using the getResource() method does not mean that the Oracle JVM is broken. Nor is it broken if ProtectionDomain#getCodeSource() returns null, as that is specifically allowed. As far as I can tell, the fact that the current code works for some JVMs is a by-product of their implementation, rather than a requirement. > Problem with Oracle JVM classLoader > ----------------------------------- > > Key: DISCOVERY-13 > URL: https://issues.apache.org/jira/browse/DISCOVERY-13 > Project: Commons Discovery > Issue Type: Improvement > Affects Versions: 0.2, 0.4 > Environment: Oracle Java stored procedure (oracle versions 8i -> 11g) Any OS > 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/ar.com.menhir.config.properties). > 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(),"ar.com.menhir.wstest.Test"); > ... > 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 = ar.com.menhir.oracle.resources.Utils.getResourcePrefix(className).replace('.','/') + ".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: http://www.atlassian.com/software/jira