|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.jamonapi.proxy.MonProxyFactory
public class MonProxyFactory
MonProxyFactory allows developers to monitor ANY interface by simply passing the Object implementing the interface to the monitor method. (note the object passed MUST implement an interface or it will be a runtime error). A great use of this is to monitor jdbc interfaces and to aid in this there are overloaded methods that take Connections, Statements, PreparedStatements, CallableStatements, and ResultSets. These overloaded methods take advantage of knowledege of SQL and track additional statistics. The following capabilities can be acquired by using MonProxyFactory. All can individually be enabled/disabled. 0) Overall monitoring can be enabled/disabled by calling MonProxyFactory.enable(...). This will enable/disable monitors. You can start out by enabling all monitors and disabling the ones you wish or vice versa. 1) All methods of a given interface will have a jamon rows. Any jamon row will have the label (in this case the method signature), hits, avg/min/max execution time, active/avg active/max active, last value and more. By default interface monitoring is on. It can be enabled/disabled by calling MonProxyFactory.enableInterfaceM(...). JDBC classes such as Connections, Statements, PreparedStatemetns, CallableStatements, and ResultsSets will also automatically be monitored if the class returning them was monitored. If you don't wish this to occur then you can use the monitor method that takes an Object. 2) ResultSet interfaces can be monitored however methods like getObject and next are called so much and typically don't cause performance problems, so there is a seperate enable/disable capability for them. Note for ResultSet monitoring to occur interface monitoring must also be enabled. However it can be enabled if interface monitoring is enabled and MonProxyFactory.enabledResultSets(true) is called. ResultSet's are by default not monitored. 3) SQLSummary will add a jamon row for all sql text issued against a PreparedStatement, CallableStatement, or Statement. Argument values are replaced with ? for Statements to ensure the logical queries are matched. PreparedStatements need not be changed to do this, but Statements may look a little different For example: select * from table where name='jeff beck' would become select * from table where name=? This is a powerful monitor as it allows you to see hits, avg/min/max query times for all queries in your application. This is enabled/disabled by calling MonProxyFactory.enableSQLSummary(...). 4) SQLDetail puts the last N (configurable) queries that have been run into a rolling buffer. The SQL buffer will have the actual query in the case of a Statement and the version with ? for PreparedStatements. In addition other stats will be in this buffer such as how long the query took to execute, how many times has the PreparedStatement been reused, the jdbc method that executed the sql, and the exception stack trace if it occured. This can be enabled/disabled by calling MonProxyFactory.enableSQLDetail(...) 5) Exception Summary will add several jamon rows when an exception occurs. Note the Exception buffer is used for any kind of Exception including SQLExceptions. The exceptions added are 1. One containing the method that through the exception as well as the exception. 2. One indicating how many exceptions total have been thrown through proxies, 3) One containing the exception type that was thrown. This can be enabled/disabled by calling MonProxyFactory.enableExceptionSummary(...) 6) ExceptionDetail puts the last N (configurable) exceptions that have occured to any interface that is being monitored into a buffer. The stack trace is in the row as well as when it was thrown and what method threw it. This can be enabled/disabled by calling MonProxyFactory.enableExceptionDetail(...). Sample code: ResultSet rs= MonProxyFactory.monitor(resultSet); Connection conn=MonProxyFactory.monitor(connection); MyInterface my=(MyInterface) MonProxyFactory.monitor(myObject);//myObject implements MyInterface YourInterface your=(YourInterface) MonProxyFactory.monitor(yourObject);//myObject implements MyInterface
Constructor Summary | |
---|---|
MonProxyFactory()
|
Method Summary | |
---|---|
static void |
enable(boolean enable)
Enables all monitors except ResultSet monitoring. |
static void |
enableAll(boolean enable)
Enables all monitors. |
static void |
enableExceptionDetail(boolean enable)
Enables/Disables whether exceptions are tracked in a rolling buffer |
static void |
enableExceptionSummary(boolean enable)
Enables/disables jamon summary stats for exceptions |
static void |
enableInterface(boolean enable)
Enables/disables whether methods of the interface are monitored or not |
static void |
enableResultSet(boolean enable)
Enables/disables whether ResultSet methods are monitored. |
static void |
enableSQLDetail(boolean enable)
Enables/disables whether sql command details (time, sql, stack trace, ...) are kept in a rolling buffer |
static void |
enableSQLSummary(boolean enable)
Enables/Disables jamon summary stats for SQL |
static int |
getExceptionBufferSize()
Get the number of Exceptions that can be stored in the buffer before the oldest entries must be removed. |
static java.lang.Object[][] |
getExceptionDetail()
Get the exception buffer as an array, so it can be displayed |
static java.lang.String[] |
getExceptionDetailHeader()
Get the header that can be used to display the Exceptions buffer |
static java.lang.Class[] |
getInterfaces(java.lang.Class cls)
For every class in the Object/Interface heirarchy find its implemented interfaces. |
static java.util.List |
getMatchStrings()
Get a list of the strings to match in the parsed query. |
static int |
getSQLBufferSize()
Get the number of SQL statements that can be stored in the buffer before the oldest entries must be removed. |
static java.lang.Object[][] |
getSQLDetail()
Get the sql buffer as an array, so it can be displayed |
static java.lang.String[] |
getSQLDetailHeader()
Get the header that can be used to display the SQL buffer |
static boolean |
isAllEnabled()
|
static boolean |
isEnabled()
Returns true if MonProxyFactory is enabled. |
static boolean |
isExceptionDetailEnabled()
Indicates whether exceptions are tracked in a rolling buffer |
static boolean |
isExceptionSummaryEnabled()
Indicates whether jamon summary stats are kept for exceptions |
static boolean |
isInterfaceEnabled()
Inidicates whether methods of the interface are monitored or not |
static boolean |
isResultSetEnabled()
Indicates whether ResultSet methods are monitored. |
static boolean |
isSQLDetailEnabled()
Indicates whether sql command details (time, sql, stack trace, ...) are kept in a rolling buffer |
static boolean |
isSQLSummaryEnabled()
Indicates whether jamon summary stats are kept for SQL |
static java.sql.CallableStatement |
monitor(java.sql.CallableStatement statement)
Monitor a CallableStatements methods, as well as any ResultSets it returns (assuming the proper monitoring options are enabled) |
static java.sql.Connection |
monitor(java.sql.Connection conn)
Note if a connection object is monitored any Statements, PreparedStatements, CallableStatements, and optionally ResultSets that it creates will automatically be monitored. |
static java.lang.Object |
monitor(java.lang.Object object)
By passing any interface to the monitor method, all public method calls and exceptions will be monitored. |
static java.lang.Object |
monitor(java.lang.Object object,
java.lang.Class iface)
By passing any interface to the monitor method, and an interface to implement then all public method calls and exceptions will be monitored. |
static java.lang.Object |
monitor(java.lang.Object object,
java.lang.Class[] interfaces)
By passing any interface to the monitor method, and an array of interfaces to implement then all public method calls and exceptions will be monitored. |
static java.sql.PreparedStatement |
monitor(java.sql.PreparedStatement statement)
Monitor a PreparedStatements methods, as well as any ResultSets it returns (assuming the proper monitoring options are enabled) |
static java.sql.ResultSet |
monitor(java.sql.ResultSet rs)
Monitor a resultSets methods. |
static java.sql.Statement |
monitor(java.sql.Statement statement)
Monitor a Statements methods, as well as any ResultSets it returns (assuming the proper monitoring options are enabled) |
static void |
resetExceptionDetail()
Remove all Exceptions from the buffer. |
static void |
resetSQLDetail()
Remove all SQL from the buffer. |
static void |
setExceptionBufferSize(int exceptionBufferSize)
Set the number of Exceptions that can be stored in the buffer before the oldest entries must be removed. |
static void |
setMatchStrings(java.util.List ms)
Set the strings to match |
static void |
setSQLBufferSize(int sqlBufferSize)
Set the number of SQL Statements that can be stored in the buffer before the oldest entries must be removed. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public MonProxyFactory()
Method Detail |
---|
public static java.lang.Object monitor(java.lang.Object object)
public static java.lang.Object monitor(java.lang.Object object, java.lang.Class[] interfaces)
public static java.lang.Object monitor(java.lang.Object object, java.lang.Class iface)
public static java.sql.Connection monitor(java.sql.Connection conn)
public static java.sql.ResultSet monitor(java.sql.ResultSet rs)
public static java.sql.Statement monitor(java.sql.Statement statement)
public static java.sql.PreparedStatement monitor(java.sql.PreparedStatement statement)
public static java.sql.CallableStatement monitor(java.sql.CallableStatement statement)
public static java.lang.Class[] getInterfaces(java.lang.Class cls)
public static int getExceptionBufferSize()
public static void setExceptionBufferSize(int exceptionBufferSize)
public static void resetExceptionDetail()
public static boolean isInterfaceEnabled()
public static void enableInterface(boolean enable)
public static boolean isExceptionSummaryEnabled()
public static void enableExceptionSummary(boolean enable)
public static boolean isExceptionDetailEnabled()
public static void enableExceptionDetail(boolean enable)
public static boolean isSQLSummaryEnabled()
public static void enableSQLSummary(boolean enable)
public static boolean isSQLDetailEnabled()
public static void enableSQLDetail(boolean enable)
public static boolean isResultSetEnabled()
public static void enableResultSet(boolean enable)
public static boolean isEnabled()
public static void enableAll(boolean enable)
public static boolean isAllEnabled()
public static void enable(boolean enable)
public static java.lang.String[] getExceptionDetailHeader()
public static java.lang.Object[][] getExceptionDetail()
public static int getSQLBufferSize()
public static void setSQLBufferSize(int sqlBufferSize)
public static void resetSQLDetail()
public static java.lang.String[] getSQLDetailHeader()
public static java.lang.Object[][] getSQLDetail()
public static java.util.List getMatchStrings()
public static void setMatchStrings(java.util.List ms)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |