Hi Rickard,
You have removed source filter from the JMX ObjectName for
FileLogging, so now my several FileLogging entries in jboss.conf cause
javax.management.InstanceAlreadyExistsException.
So, what should I do? Where should I set different JMX ObjectNames?
Wouldn't it be better to leave the same default name for FileLogging?
I guess, jbossweb/manual/adv_config.html should be updated...
And I get errors during shutdown for all datasources, like this:
[jdbc/IT_Core] Stopping
[jdbc/IT_Core] XA Connection pool jdbc/IT_Core removed from JNDI
[jdbc/IT_Core] XA Connection pool jdbc/IT_Core shut down
[jdbc/IT_Core] Error stopping service 'DefaultDomain:name=jdbc/IT_Core,service=X
ADataSource': javax.management.RuntimeMBeanException: RuntimeException thrown in
operation destroy
[jdbc/IT_Core] Unable to stop MBean 'DefaultDomain:name=jdbc/IT_Core,service=XAD
ataSource'
What does that mean?
Best regards,
Oleg
jBoss CVS Development wrote:
jCD> User: oberg
jCD> Date: 00/11/07 04:26:20
jCD> Modified: src/main/org/jboss/logging FileLogging.java
jCD> Log:
jCD> Now uses ServiceMBeanSupport. Cleeeaner
jCD> Allow user to set JMX ObjectName, but has decent default
jCD> Changed file handling
jCD> Revision Changes Path
jCD> 1.8 +43 -38 jboss/src/main/org/jboss/logging/FileLogging.java
jCD> Index: FileLogging.java
jCD> ===================================================================
jCD> RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/logging/FileLogging.java,v
jCD> retrieving revision 1.7
jCD> retrieving revision 1.8
jCD> diff -u -r1.7 -r1.8
jCD> --- FileLogging.java 2000/10/17 15:39:49 1.7
jCD> +++ FileLogging.java 2000/11/07 12:26:19 1.8
jCD> @@ -16,17 +16,19 @@
jCD> import java.util.StringTokenizer;
jCD> import javax.management.*;
jCD> +import org.jboss.util.ServiceMBeanSupport;
jCD> +
jCD> /**
jCD> *
jCD> * @see <related>
jCD> * @author Rickard �berg ([EMAIL PROTECTED])
jCD> - * @version $Revision: 1.7 $
jCD> + * @version $Revision: 1.8 $
jCD> */
jCD> public class FileLogging
jCD> + extends ServiceMBeanSupport
jCD> implements FileLoggingMBean, MBeanRegistration, NotificationListener
jCD> {
jCD> // Constants -----------------------------------------------------
jCD> - public static final String OBJECT_NAME =
"DefaultDomain:service=Logging,type=File";
jCD> // Attributes ----------------------------------------------------
jCD> PrintStream out, err;
jCD> @@ -35,12 +37,13 @@
jCD> boolean verbose = false;
jCD> - Log log = new Log("File logging");
jCD> -
jCD> String filter = "Information,Debug,Warning,Error";
jCD> - String logName = "server.log";
jCD> + String logName = "server";
jCD> String sources;
jCD> boolean append;
jCD> +
jCD> + ObjectName name;
jCD> + MBeanServer server;
jCD> // Static --------------------------------------------------------
jCD> @@ -82,16 +85,20 @@
jCD> this.format = format;
jCD> msgFmt = new MessageFormat(format);
jCD> }
jCD> +
jCD> public String getFormat() { return format; }
jCD> public void setLogName(String logName) throws FileNotFoundException
jCD> {
jCD> - if(!logName.equals(this.logName)) {
jCD> + if(!logName.equals(this.logName))
jCD> + {
jCD> this.logName = logName;
jCD> if (out != null)
jCD> + {
jCD> out = null;
jCD> - openLogFile();
jCD> + openLogFile();
jCD> + }
jCD> }
jCD> }
jCD> public String getLogName() { return logName; }
jCD> @@ -100,6 +107,8 @@
jCD> public void handleNotification(Notification n,
jCD> java.lang.Object handback)
jCD> {
jCD> + if (out == null) return; // Not started yet
jCD> +
jCD> if (sources == null || sources.length() == 0 ||
sources.indexOf(n.getUserData().toString()) != -1)
jCD> {
jCD> if (filter.indexOf(n.getType()) != -1)
jCD> @@ -110,48 +119,44 @@
jCD> }
jCD> }
jCD> - // MBeanRegistration implementation ------------------------------
jCD> - public ObjectName preRegister(MBeanServer server, ObjectName name)
jCD> - throws java.lang.Exception
jCD> + // ServiceMBeanSupport implementation ----------------------------
jCD> + public ObjectName getObjectName(MBeanServer server, ObjectName name)
jCD> + throws javax.management.MalformedObjectNameException
jCD> {
jCD> - String objectName;
jCD> -
jCD> - objectName = OBJECT_NAME + ",sources=" + (sources == null ? "All" :
sources);
jCD> - try
jCD> - {
jCD> - openLogFile();
jCD> - server.addNotificationListener(new
ObjectName(server.getDefaultDomain(),"service","Log"),this,null,null);
jCD> -
jCD> - log.log("Logging started");
jCD> - return new ObjectName(objectName);
jCD> -
jCD> - } catch (Throwable e)
jCD> - {
jCD> - Logger.exception(e);
jCD> - }
jCD> - return new ObjectName(objectName);
jCD> + this.server = server;
jCD> + this.name = name == null ? new ObjectName(OBJECT_NAME) : name;
jCD> + return this.name;
jCD> }
jCD> -
jCD> - public void postRegister(java.lang.Boolean registrationDone)
jCD> +
jCD> + public String getName()
jCD> {
jCD> + return "File logging";
jCD> }
jCD> -
jCD> - public void preDeregister()
jCD> +
jCD> + public void initService()
jCD> throws java.lang.Exception
jCD> - {}
jCD> + {
jCD> + String objectName;
jCD> - public void postDeregister() {}
jCD> + openLogFile();
jCD> + server.addNotificationListener(new
ObjectName(server.getDefaultDomain(),"service","Log"),this,null,null);
jCD> + }
jCD> - // Private --------------------------------------------------
jCD> - private void openLogFile() throws FileNotFoundException {
jCD> + // Private -------------------------------------------------------
jCD> + private void openLogFile()
jCD> + throws FileNotFoundException
jCD> + {
jCD> URL properties = getClass().getResource("/log.properties");
jCD> if(properties == null)
jCD> - System.err.println("Unable to identify logging directory!");
jCD> + throw new FileNotFoundException("Unable to identify logging
directory!");
jCD> +
jCD> File parent = new File(properties.getFile()).getParentFile();
jCD> - File logFile = new File(parent, logName);
jCD> - try {
jCD> + File logFile = new File(parent, logName+".log");
jCD> + try
jCD> + {
jCD> out = new PrintStream(new
FileOutputStream(logFile.getCanonicalPath(), append));
jCD> - } catch (IOException e) {
jCD> + } catch (IOException e)
jCD> + {
jCD> throw new FileNotFoundException(e.getMessage());
jCD> }
jCD> }