Author: lhein
Date: Wed Oct 13 19:11:44 2010
New Revision: 1022245
URL: http://svn.apache.org/viewvc?rev=1022245&view=rev
Log:
using now reflection to detect if Java version supports method
allowsCoreThreadTImeout of ThreadPoolExecutor (see SM-2001 and SMX4-606)
Modified:
servicemix/utils/trunk/src/main/java/org/apache/servicemix/executors/impl/ManagedExecutor.java
Modified:
servicemix/utils/trunk/src/main/java/org/apache/servicemix/executors/impl/ManagedExecutor.java
URL:
http://svn.apache.org/viewvc/servicemix/utils/trunk/src/main/java/org/apache/servicemix/executors/impl/ManagedExecutor.java?rev=1022245&r1=1022244&r2=1022245&view=diff
==============================================================================
---
servicemix/utils/trunk/src/main/java/org/apache/servicemix/executors/impl/ManagedExecutor.java
(original)
+++
servicemix/utils/trunk/src/main/java/org/apache/servicemix/executors/impl/ManagedExecutor.java
Wed Oct 13 19:11:44 2010
@@ -18,6 +18,8 @@
*/
package org.apache.servicemix.executors.impl;
+import java.lang.reflect.Method;
+import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
@@ -101,9 +103,20 @@ public class ManagedExecutor extends jav
}
public boolean isAllowCoreThreadTimeout() {
+ if (this.internalExecutor != null) {
+ ThreadPoolExecutor executor =
this.internalExecutor.getThreadPoolExecutor();
+ try {
+ Method m =
ThreadPoolExecutor.class.getMethod("allowsCoreThreadTimeOut", null);
+ try {
+ return (Boolean) m.invoke(executor, null);
+ } catch (Exception ex) {
+ // ignore
+ }
+ } catch (NoSuchMethodException ex) {
+ // ignore
+ }
+ }
return false;
- // TODO: put me back in after switchover to Java 6
- // return this.internalExecutor != null &&
this.internalExecutor.getThreadPoolExecutor().allowsCoreThreadTimeOut();
}
public long getNumberOfRejectedExecutions() {