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>       }



Reply via email to