Do you think it would be a good idea to provide a "NAGGING" log?

The idea being that it will log warnings about potentially stupid configurations
or feature uses
to a separate log that can be turned off if people really know what they are 
doing.

e.g. The follow code points out the commonly seen misconfiguration
read-only + commit-option B. i.e. The data is reloaded on every finegrained
invocation on the entity bean.

NOTE: This one is a difficult example, since such a configuration works just 
fine
with the DTO pattern and getDTO() is the only invocation on the ejb for each 
transaction.


  | Index: EntitySynchronizationInterceptor.java
  | ===================================================================
  | RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/EntitySynchronizationInterceptor.java,v
  | retrieving revision 1.86
  | diff -u -r1.86 EntitySynchronizationInterceptor.java
  | --- EntitySynchronizationInterceptor.java   10 Aug 2004 17:12:58 -0000      
1.86
  | +++ EntitySynchronizationInterceptor.java   14 Apr 2005 20:16:30 -0000
  | @@ -21,6 +21,7 @@
  |  import org.jboss.ejb.EntityEnterpriseContext;
  |  import org.jboss.ejb.GlobalTxEntityMap;
  |  import org.jboss.invocation.Invocation;
  | +import org.jboss.logging.Logger;
  |  import org.jboss.metadata.ConfigurationMetaData;
  |  import org.jboss.util.NestedRuntimeException;
  |  
  | @@ -45,6 +46,8 @@
  |  public class EntitySynchronizationInterceptor
  |          extends AbstractInterceptor
  |  {
  | +   private static final Logger nag = Logger.getLogger("org.jboss.nagging");
  | +   
  |     /**
  |      * The variable <code>vcrThread</code> holds the valid context 
refresher thread for
  |      * this interceptor, so it may be shut down in stop.
  | @@ -66,6 +69,9 @@
  |      */
  |     protected EntityContainer container;
  |  
  | +   /** Whether we have warned about non performant synchronization */
  | +   private boolean warnedSynchronizationFAQ = false;
  | +
  |     public Container getContainer()
  |     {
  |        return container;
  | @@ -296,11 +302,13 @@
  |                       // Keep instance active, but invalidate state
  |                       case ConfigurationMetaData.B_COMMIT_OPTION:
  |                          // Invalidate state (there might be other points 
of entry)
  | +                        logSynchronizationFAQ();
  |                          ctx.setValid(false);
  |                          break;
  |  
  |                          // Invalidate everything AND Passivate instance
  |                       case ConfigurationMetaData.C_COMMIT_OPTION:
  | +                        logSynchronizationFAQ();
  |                          try
  |                          {
  | @@ -349,11 +357,13 @@
  |                    // Keep instance active, but invalidate state
  |                    case ConfigurationMetaData.B_COMMIT_OPTION:
  |                       // Invalidate state (there might be other points of 
entry)
  | +                     logSynchronizationFAQ();
  |                       ctx.setValid(false);
  |                       break;
  |  
  |                       // Invalidate everything AND Passivate instance
  |                    case ConfigurationMetaData.C_COMMIT_OPTION:
  | +                     logSynchronizationFAQ();
  |                       try
  |                       {
  |                          // Do not call release if getId() is null.  This 
means that
  | @@ -384,7 +394,19 @@
  |           }
  |        }
  |     }
  | -
  | +   
  | +   private void logSynchronizationFAQ()
  | +   {
  | +      if (warnedSynchronizationFAQ == false)
  | +      {
  | +         warnedSynchronizationFAQ = true;
  | +         nag.warn("The use of read-only or lack of a transaction and not 
using a cache (commit-option B/C) " + 
  | +                  "will mean reloading of data on every entity bean 
invocation! ejb-name=" 
  | +                  + container.getBeanMetaData().getEjbName());
  | +         
  | +      }
  | +   }
  | +   
  |     protected class InstanceSynchronization
  |             implements Synchronization
  |     {
  | 

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3873995#3873995

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3873995


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
JBoss-Development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to