Travis,
Thank you for the report! It does look like a reasonable change.
We'll see into including it into HiveMind 1.1.
--knut
On Sat, 23 Oct 2004 14:14:50 -0500, Travis Klotz <[EMAIL PROTECTED]> wrote:
> I have been having some problems getting HiveMind 1.0 to work inside
> of OC4J 9.0.4
>
> I have a very simple session bean that creats a default registry with
> RegistryBuilder
>
> Registry r = RegistryBuilder.constructDefaultRegistry();
>
> With Log4J set to DEBUG mode I get the following output
>
> 0 [RMICallHandler-6] DEBUG org.apache.hivemind.impl.RegistryBuilder
> - Processing modules visible to
> [EMAIL PROTECTED]
>
> 16 [RMICallHandler-6] DEBUG
> org.apache.hivemind.parse.DescriptorParser - Parsing
> jndi:C:\java-lib\hivemind-1.0\hivemind-1.0.jar/META-INF/hivemodule.xml
>
> 47 [RMICallHandler-6] ERROR org.apache.hivemind.impl.RegistryBuilder
> - Error: null
>
> java.lang.NullPointerException
>
> at
> org.apache.hivemind.parse.AbstractParser.getLocation(AbstractParser.java:158)
>
> at
> org.apache.hivemind.parse.DescriptorParser.parse(DescriptorParser.java:1420)
>
> at
> org.apache.hivemind.impl.RegistryBuilder.processModule(RegistryBuilder.java:216)
>
> at
> org.apache.hivemind.impl.RegistryBuilder.processModulesResources(RegistryBuilder.java:199)
>
> at
> org.apache.hivemind.impl.RegistryBuilder.processModules(RegistryBuilder.java:172)
>
> at
> org.apache.hivemind.impl.RegistryBuilder.constructDefaultRegistry(RegistryBuilder.java:709)
>
> at org.act.hivemind.test.SessionEJBBean.test(SessionEJBBean.java:31)
>
> at
> SessionEJB_StatelessSessionBeanWrapper0.test(SessionEJB_StatelessSessionBeanWrapper0.java:96)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:324)
>
> at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:124)
>
> at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:48)
>
> at
> com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)
>
> at java.lang.Thread.run(Thread.java:534)
>
> 63 [RMICallHandler-6] DEBUG
> org.apache.hivemind.parse.DescriptorParser - Parsing
> jndi:C:\java-lib\hivemind-1.0\hivemind-lib-1.0.jar/META-INF/hivemodule.xml
>
> 63 [RMICallHandler-6] ERROR org.apache.hivemind.impl.RegistryBuilder
> - Error: null
>
> java.lang.NullPointerException
>
> at
> org.apache.hivemind.parse.AbstractParser.getLocation(AbstractParser.java:158)
>
> at
> org.apache.hivemind.parse.DescriptorParser.parse(DescriptorParser.java:1420)
>
> at
> org.apache.hivemind.impl.RegistryBuilder.processModule(RegistryBuilder.java:216)
>
> at
> org.apache.hivemind.impl.RegistryBuilder.processModulesResources(RegistryBuilder.java:199)
>
> at
> org.apache.hivemind.impl.RegistryBuilder.processModules(RegistryBuilder.java:172)
>
> at
> org.apache.hivemind.impl.RegistryBuilder.constructDefaultRegistry(RegistryBuilder.java:709)
>
> at org.act.hivemind.test.SessionEJBBean.test(SessionEJBBean.java:31)
>
> at
> SessionEJB_StatelessSessionBeanWrapper0.test(SessionEJB_StatelessSessionBeanWrapper0.java:96)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:324)
>
> at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:124)
>
> at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:48)
>
> at
> com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)
>
> at java.lang.Thread.run(Thread.java:534)
>
> It appears that the DescriptorParser is having problems with the
> "jndi:/" URLs. (It doesn't have any problems parsing hivemodule.xml
> files that are not stored in a jar file, in that case they get a
> file:/ URL)
>
> I went and grabbed the lastest CVS code and built the project. It
> still has the same problem.
>
> I dove into DescriptorParser.java and tracked the problem to the
> parseXML method. Currently it takes the ExternalForm value from the
> resource's URL and uses it to create a SAX InputSource which i'm sure
> tries to open an InputStream. I'm assuming that the InputSource is
> having a problem with the jndi:/ style URL string. I went ahead and
> modified parseXML to call openStream on the URL and pass that stream
> directly into the InputSource.
> /**
> * Parses a document in the original format: unvalidated XML (with
> no document type).
> */
> private void parseXML(Resource resource) throws Exception
> {
> InputStream steam = null;
> URL url = resource.getResourceURL();
>
> if (url == null)
> throw new
> ApplicationRuntimeException(ParseMessages.missingResource(resource),
> resource, null, null);
>
> try
> {
> stream = url.openStream();
> InputSource source = new InputSource(stream);
> getSAXParser().parse(source, this);
> }
> catch (Exception ex)
> {
> _parser = null;
>
> throw ex;
> }
> finally
> {
> try
> {
> if(stream != null) {
> stream.close();
> }
> }
> catch(Exception e) {}
> }
> }
> built the project, it passed all the JUnit tests. Fired it up in
> OC4J and now i'm not haveing any problems putting together a registry.
>
> I think this solution should work in other App Servers as well.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]