Author: rmannibucau
Date: Mon Aug 13 00:00:19 2012
New Revision: 1372217
URL: http://svn.apache.org/viewvc?rev=1372217&view=rev
Log:
OPENEJB-1886 adding statsinterceptor before starting the timer in a better way
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContainer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContainer.java?rev=1372217&r1=1372216&r2=1372217&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContainer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonContainer.java
Mon Aug 13 00:00:19 2012
@@ -31,6 +31,7 @@ import org.apache.openejb.core.timer.Ejb
import org.apache.openejb.core.transaction.TransactionPolicy;
import org.apache.openejb.core.webservices.AddressingSupport;
import org.apache.openejb.core.webservices.NoAddressingSupport;
+import org.apache.openejb.monitoring.StatsInterceptor;
import org.apache.openejb.spi.SecurityService;
import org.apache.openejb.util.Duration;
import org.apache.openejb.util.LogCategory;
@@ -111,6 +112,12 @@ public class SingletonContainer implemen
beanContext.setContainer(this);
}
+ // add it before starting the timer (@PostCostruct)
+ if (StatsInterceptor.isStatsActivated()) {
+ StatsInterceptor stats = new
StatsInterceptor(beanContext.getBeanClass());
+ beanContext.addFirstSystemInterceptor(stats);
+ }
+
EjbTimerService timerService = beanContext.getEjbTimerService();
if (timerService != null) {
timerService.start();
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java?rev=1372217&r1=1372216&r2=1372217&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java
Mon Aug 13 00:00:19 2012
@@ -24,6 +24,7 @@ import org.apache.openejb.core.InstanceC
import org.apache.openejb.core.Operation;
import org.apache.openejb.core.ThreadContext;
import org.apache.openejb.core.interceptor.InterceptorData;
+import org.apache.openejb.core.interceptor.InterceptorInstance;
import org.apache.openejb.core.interceptor.InterceptorStack;
import org.apache.openejb.core.timer.TimerServiceWrapper;
import org.apache.openejb.core.transaction.EjbTransactionUtil;
@@ -291,23 +292,30 @@ public class SingletonInstanceManager {
// Create stats interceptor
if (StatsInterceptor.isStatsActivated()) {
- StatsInterceptor stats = new
StatsInterceptor(beanContext.getBeanClass());
- beanContext.addFirstSystemInterceptor(stats);
- MBeanServer server = LocalMBeanServer.get();
+ StatsInterceptor stats = null;
+ for (InterceptorInstance interceptor :
beanContext.getUserAndSystemInterceptors()) {
+ if (interceptor.getInterceptor() instanceof StatsInterceptor) {
+ stats = (StatsInterceptor) interceptor.getInterceptor();
+ }
+ }
+ if (stats == null) { // normally useless
+ stats = new StatsInterceptor(beanContext.getBeanClass());
+ beanContext.addFirstSystemInterceptor(stats);
+ }
ObjectNameBuilder jmxName = new
ObjectNameBuilder("openejb.management");
jmxName.set("J2EEServer", "openejb");
jmxName.set("J2EEApplication", null);
jmxName.set("EJBModule", beanContext.getModuleID());
jmxName.set("SingletonSessionBean", beanContext.getEjbName());
- jmxName.set("j2eeType", "");
jmxName.set("name", beanContext.getEjbName());
+ jmxName.set("j2eeType", "Invocations");
// register the invocation stats interceptor
try {
- ObjectName objectName = jmxName.set("j2eeType",
"Invocations").build();
- server.registerMBean(new ManagedMBean(stats), objectName);
+ ObjectName objectName = jmxName.build();
+ LocalMBeanServer.get().registerMBean(new ManagedMBean(stats),
objectName);
data.add(objectName);
} catch (Exception e) {
logger.error("Unable to register MBean ", e);
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java?rev=1372217&r1=1372216&r2=1372217&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessContainer.java
Mon Aug 13 00:00:19 2012
@@ -32,6 +32,7 @@ import javax.ejb.EJBLocalHome;
import javax.ejb.EJBLocalObject;
import javax.ejb.EJBObject;
import javax.interceptor.AroundInvoke;
+import javax.management.ObjectName;
import org.apache.openejb.ApplicationException;
import org.apache.openejb.BeanContext;
@@ -49,6 +50,9 @@ import org.apache.openejb.core.timer.Ejb
import org.apache.openejb.core.transaction.TransactionPolicy;
import org.apache.openejb.core.webservices.AddressingSupport;
import org.apache.openejb.core.webservices.NoAddressingSupport;
+import org.apache.openejb.monitoring.LocalMBeanServer;
+import org.apache.openejb.monitoring.ManagedMBean;
+import org.apache.openejb.monitoring.StatsInterceptor;
import org.apache.openejb.spi.SecurityService;
import org.apache.openejb.util.Duration;
import org.apache.openejb.util.Pool;
@@ -101,6 +105,12 @@ public class StatelessContainer implemen
beanContext.setContainer(this);
}
+ // add it before starting the timer (@PostCostruct)
+ if (StatsInterceptor.isStatsActivated()) {
+ StatsInterceptor stats = new
StatsInterceptor(beanContext.getBeanClass());
+ beanContext.addFirstSystemInterceptor(stats);
+ }
+
// do it after the instance deployment
EjbTimerService timerService = beanContext.getEjbTimerService();
if (timerService != null) {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java?rev=1372217&r1=1372216&r2=1372217&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
Mon Aug 13 00:00:19 2012
@@ -47,7 +47,9 @@ import org.apache.openejb.SystemExceptio
import org.apache.openejb.core.InstanceContext;
import org.apache.openejb.core.Operation;
import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.core.interceptor.Interceptor;
import org.apache.openejb.core.interceptor.InterceptorData;
+import org.apache.openejb.core.interceptor.InterceptorInstance;
import org.apache.openejb.core.interceptor.InterceptorStack;
import org.apache.openejb.core.timer.TimerServiceWrapper;
import org.apache.openejb.loader.Options;
@@ -328,15 +330,23 @@ public class StatelessInstanceManager {
jmxName.set("J2EEApplication", null);
jmxName.set("EJBModule", beanContext.getModuleID());
jmxName.set("StatelessSessionBean", beanContext.getEjbName());
- jmxName.set("j2eeType", "");
jmxName.set("name", beanContext.getEjbName());
final MBeanServer server = LocalMBeanServer.get();
// Create stats interceptor
if (StatsInterceptor.isStatsActivated()) {
- StatsInterceptor stats = new
StatsInterceptor(beanContext.getBeanClass());
- beanContext.addFirstSystemInterceptor(stats);
+
+ StatsInterceptor stats = null;
+ for (InterceptorInstance interceptor :
beanContext.getUserAndSystemInterceptors()) {
+ if (interceptor.getInterceptor() instanceof StatsInterceptor) {
+ stats = (StatsInterceptor) interceptor.getInterceptor();
+ }
+ }
+ if (stats == null) { // normally useless
+ stats = new StatsInterceptor(beanContext.getBeanClass());
+ beanContext.addFirstSystemInterceptor(stats);
+ }
// register the invocation stats interceptor
try {