geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alan Cabrera (JIRA)" <...@geronimo.apache.org>
Subject [jira] Assigned: (GERONIMO-155) [proposal] XML resolving for kernel - containerwide Parser
Date Wed, 10 Nov 2004 15:38:24 GMT
     [ http://nagoya.apache.org/jira/browse/GERONIMO-155?page=history ]

Alan Cabrera reassigned GERONIMO-155:
-------------------------------------

    Assign To: David Jencks  (was: Alan Cabrera)

This is an old issue; my bad.  David has strong feelings on what should be done w/ this.

> [proposal] XML resolving for kernel - containerwide Parser
> ----------------------------------------------------------
>
>          Key: GERONIMO-155
>          URL: http://nagoya.apache.org/jira/browse/GERONIMO-155
>      Project: Apache Geronimo
>         Type: Improvement
>   Components: core
>     Reporter: Kristian Koehler
>     Assignee: David Jencks
>  Attachments: patch-02-19-2004-2.zip, patch-02-24-2004.zip, patch.zip, patch02192004.zip,
resolving-for-kernel.zip, things-in-action.txt
>
> Hi
> Building and running Geronimo offline or behind a firewall is nearly impossible. 
> Most problems araise from the fact that there are code requiring remote entity resolving.
The current LocalEntityResolver solves that problem for "Geronimo code". Every other module/
service could cause a similar problem. 
> Currently I have problems with the Jetty Module requiring a SUN schema file which is
not found by the SAXParser.
> One possible solution IMO is a ParserWrapper implementation which wraps the "normal"
implemention. This Wrapper should be made available to all services deployed in Geronimo.
A call to 
> 	SAXParserFactory.newInstance();
> should return a Wrapper implementation which returns all other Wrapper implementations
(SAXParserWrapper, XMLReaderWrapper, ...). 
> The normal lookup mechanism in the SAXParserFactory is as follows:
> * test SystemProperty "javax.xml.parsers.SAXParserFactory"
> * lookup in java.home jax.properties
> * test META-INF/services/javax.xml.parsers.SAXParserFactory file
> The last call could be redirected to the wrapper implementation ("ClassLoader hack").
The other both calls couldn't be redirected. But I think if a user had set a implementation
via SystemProperty or jaxp.properties file the wrapper implementation should be skipped (warning
message for the user).
> IMO all services/modules should be deployed with a ClassLoaderWrapper which redirects
all Parser lookups to a wrapper implementation which wraps the "normal implementation". This
"normal implementation" could be determined via the "normal lookup mechanism".
> something like that
> ------ 8< ------
> InputStream stream = localClassLoader.getResourceAsStream("META-INF/services/javax.xml.parsers.SAXParserFactory");
>  if (stream != null) {
>    InputStreamReader isr = new InputStreamReader(stream);
>    BufferedReader reader = new BufferedReader(isr);
>    factoryClassName = reader.readLine();
>  } else {
>    factoryClassName = "org.apache.crimson.jaxp.SAXParserFactoryImpl";
>  }
> ------ 8< ------
> So all resolving could be redirected to a LocalEntityResolver. 
> Something like the following code could be included in the doStart() method of the Configuration
class. So all deployed Beans should use the wrapper.
> ------ 8< ------
> Class clazz =  
>   wrappedClassLoader.loadClass(SAXParserFactoryWrapper.class.getName());
> Method setDelegate = clazz.getMethod("setDelegate", 
>                            new Class[]{String.class});
>         
> if (parent == null) {
>   setDelegate.invoke(clazz, new Object[]{...)});
> } else {
>   setDelegate.invoke(clazz, new Object[]{...)});
> }
> ------ 8< ------
> I hope my idea is understandable ;-)
> Comments?
> 	Kristian

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://nagoya.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


Mime
View raw message