Not a problem.  Hopefully this email will contain the requested info.  BTW, I'm not even sure I was asking for a new ClassLoader.  I saw a significant amount of code in MBeanServerImpl.invoke() and ServiceCreator.install() that seemed to imply that the intention was to have a ClassLoader for each deployed SAR.  This made sense considering the issues I think I am running into.  Although the below SAR info is for the Castor MBean, I also have several MBean(s) I have been writing to convert from my DeploymentNotification approach under JBoss 2.4.x.  The problem is being able to read configuration files from the startService() method of an MBean such as CastorJDOImpl.java (in the varia module).  My aiab-common.sar has the following files in it:

aiab-common.jar
castor-jdo-plugin.jar            <---including this file or putting in in jboss/lib makes no difference.
meta-inf/jboss-service.xml
meta-inf/Manifest.mf
meta-inf/database.xml
meta-inf/mapping.xml

The jboss-service.xml file is:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Author: Frederick N. Brier -->
<!DOCTYPE server>
<!-- $Id: jboss-service.xml,v 1.12 2002/04/27 Exp $ -->
<server>
  <classpath codebase="lib" archives="castor.jar, jboss-system.jar, jboss-jmx.jar, jndi.jar, xercesImpl.jar"/>
  <mbean code="org.jboss.jdo.castor.CastorJDOImpl"  name="DefaultDomain:service=CastorJDO,name=AIAB-Common">
    <attribute name="Configuration">file:/META-INF/database.xml</attribute>
    <attribute name="JndiName">jdo/aiabcommon</attribute>
    <attribute name="LockTimeout">10000</attribute>
    <attribute name="LoggingEnabled">true</attribute>
    <attribute name="CommonClassPath">false</attribute>
        <attribute name="AutoStore">false</attribute>
  </mbean>
</server>

The Configuration attribute becomes the CastorJDOImpl data member _dbConf.  Which is passed into the unmarshal() method.  What I was hoping was that a ClassLoader.getResource( "file:/META-INF/database.xml") call would return a java.net.URL object that would have the proper njar: syntax that could be passed to the unmarshal() method.  Also note, I just did a CVS update and built/deployed it so this is the latest code.  The actual exception dump from server.log is:

java.io.FileNotFoundException: /META-INF/database.xml
        at org.jboss.net.protocol.file.FileURLConnection.connect(FileURLConnection.java:65)
        at org.jboss.net.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:72)
        at java.net.URL.openStream(URL.java:798)
        at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.java:740)
        at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(XMLEntityManager.java:685)
        at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(XMLDocumentScannerImpl.java:252)
        at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:503)
        at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:585)
        at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:147)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1148)
        at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:338)
        at org.jboss.jdo.castor.CastorJDOImpl.startService(CastorJDOImpl.java:151)
        at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:198)
        at java.lang.reflect.Method.invoke(Native Method)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
        at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:867)
        at $Proxy0.start(Unknown Source)
        at org.jboss.system.ServiceController.start(ServiceController.java:339)
        at java.lang.reflect.Method.invoke(Native Method)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
        at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
        at $Proxy3.start(Unknown Source)
        at org.jboss.deployment.SARDeployer.start(SARDeployer.java:341)
        at org.jboss.deployment.MainDeployer.start(MainDeployer.java:686)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:522)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:489)
        at java.lang.reflect.Method.invoke(Native Method)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
        at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
        at $Proxy4.deploy(Unknown Source)
        at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:405)
        at org.jboss.deployment.scanner.URLDeploymentScanner.scanDirectory(URLDeploymentScanner.java:586)
        at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:465)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:237)
        at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:198)
        at java.lang.reflect.Method.invoke(Native Method)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
        at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:867)
        at $Proxy0.start(Unknown Source)
        at org.jboss.system.ServiceController.start(ServiceController.java:339)
        at java.lang.reflect.Method.invoke(Native Method)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
        at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
        at $Proxy3.start(Unknown Source)
        at org.jboss.deployment.SARDeployer.start(SARDeployer.java:341)
        at org.jboss.deployment.MainDeployer.start(MainDeployer.java:686)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:522)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:489)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:472)
        at java.lang.reflect.Method.invoke(Native Method)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
        at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:318)
        at org.jboss.system.server.ServerImpl.start(ServerImpl.java:216)
        at org.jboss.Main.boot(Main.java:148)
        at org.jboss.Main$1.run(Main.java:381)
        at java.lang.Thread.run(Thread.java:484)
2002-05-20 20:38:05,347 DEBUG [org.jboss.deployment.SARDeployer] undeploying document file:/usr/local/jboss/server/default/deploy/aiab-common.sar


At 12:18 PM 5/20/2002, you wrote:
It is still not clear what the structure of the sar that is failing is.
Answer that question before we start talking about introducing
new class loaders.

xxxxxxxxxxxxxxxxxxxxxxxx
Scott Stark
Chief Technology Officer
JBoss Group, LLC
xxxxxxxxxxxxxxxxxxxxxxxx
----- Original Message -----
From: "Frederick N. Brier" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, May 20, 2002 6:57 AM
Subject: Re: [JBoss-dev] MBean ClassLoader ?revisited?


> I'd be glad to use the DeploymentInfo if an MBean had access to it.  The
> startService() method has no parameters.  The MBean only has access to the
> primitive values initialized from its XML attributes.  So how would the
> MBean get a hold of it?
>
> I do not understand why you feel that having a ClassLoader for the MBean
> would fail to solve my problem.  Shouldn't the ClassLoader, in conjunction
> with the njar protocol, be able to resolve a relative "file:" protocol
> address within an archive to a fully explicit "njar:" URL that could be
> used to create an InputStream [ClassLoader.get*Resource*()
> methods].  Please explain.  And don't worry, I won't be making changes
> unless a senior developer says go.  I am definitely the new kid on the
> block and nervous about modifying anything.  My contribution was going to
> be to JBoss.net.  On the other hand, we have to deliver an application and
> I'm trying to figure out how to make it work.
>
> Fred.
>
> At 07:46 AM 5/20/2002, you wrote:
> >Please do not bring back a classloader/mbean.  I don't think it will do
> >what you want anyway.
> >
> >What is wrong with using the DeploymentInfo for the package that has the
> >info you want in it? DeploymentInfo already has a reference to the
> >classloader that loads everything in that package.
> >
> >david jencks



_______________________________________________________________
Hundreds of nodes, one monster rendering program.
Now that's a super model! Visit http://clustering.foundries.sf.net/

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to