I'm thinking about creating a jboss service that provides access to a
version of xindice embeded as a JBoss JMX service.

I want the mbean to manage the lifecycle of the database instance. So the
first place I looked was the XindiceServlet, but this doesn't seem to
register itself into the DatabaseManager environment (though the rest of
loading the config up looked good).

Next I thought about using the embeded driver. A couple of things have
stopped me there. The first is that the config is either loaded from the
location determined by the xindice.home system variable, or the default
config. A bit of refactoring would allow me to seperate the config loading
code into a protected method and load the config via a custom subclass so
that looked doable. The second was a call at the end of the constructor:

     this.db = Database.getDatabase(dbname);
      if (this.db == null) {
         this.db = new Database();
      }
      
      if (log.isInfoEnabled()) {
         log.info("Database name: '" + dbname + "'");
      }
      
      db.setConfig(config);

So it looked as though my database config would be over written if the
user constructed a new embeded.

Another issue with the embeded is shutdown. I'm not sure when it's called.
It's easy to see with the servlet and I want to make sure it's nicley
cleaned up when jboss shuts down.

So I'm a little unsure what I should do. Ideally I would be able to create
the instance and then users could call the normal register stuff (which
would be ignored as the database already existed). I suppose I could
create an embeded subclass on a different uri or an mbean iml, but I
thought I'd hit the list first.

-k.

Reply via email to