Merge remote-tracking branch 'origin/master' into jetty-8
Conflicts: jetty-spdy/spdy-jetty-http-webapp/pom.xml jetty-spdy/spdy-jetty-http/pom.xml jetty-spdy/spdy-jetty/pom.xml
This commit is contained in:
commit
d8b1d80e4e
|
@ -276,6 +276,11 @@ class SelectConnector extends AggregateLifeCycle implements HttpClient.Connector
|
|||
_endp.shutdownOutput();
|
||||
}
|
||||
|
||||
public void dispatch()
|
||||
{
|
||||
_endp.asyncDispatch();
|
||||
}
|
||||
|
||||
public void asyncDispatch()
|
||||
{
|
||||
_endp.asyncDispatch();
|
||||
|
|
|
@ -103,6 +103,16 @@
|
|||
<outputDirectory>${assembly-directory}/webapps</outputDirectory>
|
||||
<destFileName>test.war</destFileName>
|
||||
</artifactItem>
|
||||
<artifactItem>
|
||||
<groupId>org.eclipse.jetty.spdy</groupId>
|
||||
<artifactId>spdy-jetty-http-webapp</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>war</type>
|
||||
<overWrite>true</overWrite>
|
||||
<includes>**</includes>
|
||||
<outputDirectory>${assembly-directory}/webapps</outputDirectory>
|
||||
<destFileName>spdy.war</destFileName>
|
||||
</artifactItem>
|
||||
<artifactItem>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>jetty-start</artifactId>
|
||||
|
@ -124,12 +134,24 @@
|
|||
</goals>
|
||||
<configuration>
|
||||
<includeGroupIds>org.eclipse.jetty</includeGroupIds>
|
||||
<excludeGroupIds>org.eclipse.jetty.orbit</excludeGroupIds>
|
||||
<excludeGroupIds>org.eclipse.jetty.orbit,org.eclipse.jetty.spdy</excludeGroupIds>
|
||||
<excludeArtifactIds>jetty-all,jetty-start,jetty-monitor,jetty-jsp</excludeArtifactIds>
|
||||
<includeTypes>jar</includeTypes>
|
||||
<outputDirectory>${assembly-directory}/lib</outputDirectory>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-lib-spdy-deps</id>
|
||||
<phase>generate-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<includeGroupIds>org.eclipse.jetty.spdy</includeGroupIds>
|
||||
<includeTypes>jar</includeTypes>
|
||||
<outputDirectory>${assembly-directory}/lib/spdy</outputDirectory>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-orbit-servlet-api-deps</id>
|
||||
<phase>generate-resources</phase>
|
||||
|
@ -222,7 +244,7 @@
|
|||
<goal>unpack-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<includeGroupIds>org.eclipse.jetty</includeGroupIds>
|
||||
<includeGroupIds>org.eclipse.jetty,org.eclipse.jetty.spdy</includeGroupIds>
|
||||
<classifier>config</classifier>
|
||||
<failOnMissingClassifierArtifact>false</failOnMissingClassifierArtifact>
|
||||
<excludes>META-INF/**</excludes>
|
||||
|
@ -398,6 +420,27 @@
|
|||
<artifactId>jetty-overlay-deployer</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.jetty.spdy</groupId>
|
||||
<artifactId>spdy-core</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.jetty.spdy</groupId>
|
||||
<artifactId>spdy-jetty</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.jetty.spdy</groupId>
|
||||
<artifactId>spdy-jetty-http</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.jetty.spdy</groupId>
|
||||
<artifactId>spdy-jetty-http-webapp</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>war</type>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.jetty.aggregate</groupId>
|
||||
<artifactId>jetty-all</artifactId>
|
||||
|
|
|
@ -19,7 +19,14 @@ public interface AsyncEndPoint extends ConnectedEndPoint
|
|||
{
|
||||
/* ------------------------------------------------------------ */
|
||||
/**
|
||||
* Dispatch the endpoint to a thread to attend to it.
|
||||
* Dispatch the endpoint if it is not already dispatched
|
||||
*
|
||||
*/
|
||||
public void dispatch();
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
/**
|
||||
* Dispatch the endpoint. If it is already dispatched, schedule a redispatch
|
||||
*
|
||||
*/
|
||||
public void asyncDispatch();
|
||||
|
|
|
@ -280,11 +280,7 @@ public class ChannelEndPoint implements EndPoint
|
|||
if (buf instanceof NIOBuffer)
|
||||
{
|
||||
final NIOBuffer nbuf = (NIOBuffer)buf;
|
||||
final ByteBuffer bbuf=nbuf.getByteBuffer();
|
||||
|
||||
//noinspection SynchronizationOnLocalVariableOrMethodParameter
|
||||
synchronized(bbuf)
|
||||
{
|
||||
final ByteBuffer bbuf=nbuf.getByteBuffer().asReadOnlyBuffer();
|
||||
try
|
||||
{
|
||||
bbuf.position(buffer.getIndex());
|
||||
|
@ -295,9 +291,6 @@ public class ChannelEndPoint implements EndPoint
|
|||
{
|
||||
if (len>0)
|
||||
buffer.skip(len);
|
||||
bbuf.position(0);
|
||||
bbuf.limit(bbuf.capacity());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (buf instanceof RandomAccessFileBuffer)
|
||||
|
@ -362,19 +355,12 @@ public class ChannelEndPoint implements EndPoint
|
|||
int length;
|
||||
|
||||
synchronized(this)
|
||||
{
|
||||
// We must sync because buffers may be shared (eg nbuf1 is likely to be cached content).
|
||||
//noinspection SynchronizationOnLocalVariableOrMethodParameter
|
||||
synchronized(bbuf0)
|
||||
{
|
||||
//noinspection SynchronizationOnLocalVariableOrMethodParameter
|
||||
synchronized(bbuf1)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Adjust position indexs of buf0 and buf1
|
||||
bbuf0=bbuf0.asReadOnlyBuffer();
|
||||
bbuf0.position(header.getIndex());
|
||||
bbuf0.limit(header.putIndex());
|
||||
bbuf1=bbuf1.asReadOnlyBuffer();
|
||||
bbuf1.position(buffer.getIndex());
|
||||
bbuf1.limit(buffer.putIndex());
|
||||
|
||||
|
@ -395,16 +381,6 @@ public class ChannelEndPoint implements EndPoint
|
|||
header.skip(length);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
bbuf0.position(0);
|
||||
bbuf1.position(0);
|
||||
bbuf0.limit(bbuf0.capacity());
|
||||
bbuf1.limit(bbuf1.capacity());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return length;
|
||||
}
|
||||
|
||||
|
|
|
@ -208,11 +208,7 @@ public class SelectChannelEndPoint extends ChannelEndPoint implements AsyncEndPo
|
|||
{
|
||||
synchronized(this)
|
||||
{
|
||||
if (_dispatched)
|
||||
{
|
||||
throw new IllegalStateException("dispatched");
|
||||
}
|
||||
else
|
||||
if (!_dispatched)
|
||||
{
|
||||
_dispatched = true;
|
||||
boolean dispatched = _manager.dispatch(_handler);
|
||||
|
|
|
@ -412,7 +412,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection
|
|||
|
||||
// If we are reading into the temp buffer and it has some content, then we should be dispatched.
|
||||
if (toFill==_unwrapBuf && _unwrapBuf.hasContent() && !_connection.isSuspended())
|
||||
_aEndp.asyncDispatch();
|
||||
_aEndp.dispatch();
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
@ -721,6 +721,11 @@ public class SslConnection extends AbstractConnection implements AsyncConnection
|
|||
process(null, null);
|
||||
}
|
||||
|
||||
public void dispatch()
|
||||
{
|
||||
_aEndp.dispatch();
|
||||
}
|
||||
|
||||
public void asyncDispatch()
|
||||
{
|
||||
_aEndp.asyncDispatch();
|
||||
|
|
|
@ -245,21 +245,37 @@ public class MongoSessionManager extends NoSqlSessionManager
|
|||
{
|
||||
for (String name : attrs.keySet())
|
||||
{
|
||||
if ( __METADATA.equals(name) )
|
||||
if (__METADATA.equals(name))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
String attr = decodeName(name);
|
||||
Object value = decodeValue(attrs.get(name));
|
||||
|
||||
if (attrs.keySet().contains(name))
|
||||
{
|
||||
session.doPutOrRemove(attr,value);
|
||||
session.bindValue(attr,value);
|
||||
}
|
||||
else
|
||||
{
|
||||
session.doPutOrRemove(attr,value);
|
||||
}
|
||||
}
|
||||
// cleanup, remove values from session, that don't exist in data anymore:
|
||||
for (String name : session.getNames())
|
||||
{
|
||||
if (!attrs.keySet().contains(name))
|
||||
{
|
||||
session.doPutOrRemove(name,null);
|
||||
session.unbindValue(name,session.getAttribute(name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
session.didActivate();
|
||||
|
||||
|
||||
return version;
|
||||
}
|
||||
catch (Exception e)
|
||||
|
|
|
@ -12,7 +12,7 @@ The easiest place to put these lines are in the start.ini file.
|
|||
For debugging the spengo authentication the following options are helpful:
|
||||
|
||||
-Dorg.eclipse.jetty.LEVEL=debug
|
||||
-Dsun.security.spnego.debug=all
|
||||
-Dsun.security.spnego.debug=true
|
||||
|
||||
|
||||
Spengo Authentication is enabled in the webapp with the following setup.
|
||||
|
@ -60,6 +60,3 @@ embedded, via the jetty.xml or in a context file for the webapp.
|
|||
</Set>
|
||||
<Set name="checkWelcomeFiles">true</Set>
|
||||
</Get>
|
||||
|
||||
|
||||
8
|
|
@ -254,7 +254,7 @@ public class DigestAuthenticator extends LoginAuthenticator
|
|||
Nonce nonce=_nonceQueue.peek();
|
||||
while (nonce!=null && nonce._ts<expired)
|
||||
{
|
||||
_nonceQueue.remove();
|
||||
_nonceQueue.remove(nonce);
|
||||
_nonceCount.remove(nonce._nonce);
|
||||
nonce=_nonceQueue.peek();
|
||||
}
|
||||
|
|
|
@ -32,18 +32,15 @@ import javax.servlet.http.HttpServletResponse;
|
|||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import org.eclipse.jetty.http.HttpParser;
|
||||
import org.eclipse.jetty.io.EndPoint;
|
||||
import org.eclipse.jetty.server.handler.AbstractHandler;
|
||||
import org.eclipse.jetty.util.IO;
|
||||
import org.eclipse.jetty.util.StringUtil;
|
||||
import org.eclipse.jetty.util.log.Log;
|
||||
import org.eclipse.jetty.util.log.StdErrLog;
|
||||
import org.hamcrest.CoreMatchers;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.junit.Test;
|
||||
import org.junit.matchers.JUnitMatchers;
|
||||
import org.mockito.internal.matchers.Contains;
|
||||
|
||||
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
|
|
@ -35,7 +35,6 @@ public class SelectChannelServerTest extends HttpServerTestBase
|
|||
@Override
|
||||
public void testSuspendedPipeline() throws Exception
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
super.testSuspendedPipeline();
|
||||
}
|
||||
|
||||
|
|
|
@ -15,20 +15,29 @@ package org.eclipse.jetty.server.ssl;
|
|||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.net.Socket;
|
||||
import java.security.KeyStore;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLEngine;
|
||||
import javax.net.ssl.TrustManagerFactory;
|
||||
|
||||
|
||||
import org.eclipse.jetty.io.AsyncEndPoint;
|
||||
import org.eclipse.jetty.io.Connection;
|
||||
import org.eclipse.jetty.io.nio.SslConnection;
|
||||
import org.eclipse.jetty.server.HttpServerTestBase;
|
||||
import org.eclipse.jetty.util.ssl.SslContextFactory;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.hamcrest.Matchers.lessThan;
|
||||
|
||||
/**
|
||||
* HttpServer Tester.
|
||||
|
@ -46,11 +55,28 @@ public class SelectChannelServerSslTest extends HttpServerTestBase
|
|||
return __sslContext.getSocketFactory().createSocket(host,port);
|
||||
}
|
||||
|
||||
private static final AtomicInteger _handlecount = new AtomicInteger();
|
||||
|
||||
@BeforeClass
|
||||
public static void init() throws Exception
|
||||
{
|
||||
SslSelectChannelConnector connector = new SslSelectChannelConnector();
|
||||
SslSelectChannelConnector connector = new SslSelectChannelConnector()
|
||||
{
|
||||
@Override
|
||||
protected SslConnection newSslConnection(AsyncEndPoint endPoint, SSLEngine engine)
|
||||
{
|
||||
return new SslConnection(engine, endPoint)
|
||||
{
|
||||
@Override
|
||||
public Connection handle() throws IOException
|
||||
{
|
||||
_handlecount.incrementAndGet();
|
||||
return super.handle();
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
String keystorePath = System.getProperty("basedir",".") + "/src/test/resources/keystore";
|
||||
SslContextFactory cf = connector.getSslContextFactory();
|
||||
cf.setKeyStorePath(keystorePath);
|
||||
|
@ -69,7 +95,6 @@ public class SelectChannelServerSslTest extends HttpServerTestBase
|
|||
__sslContext = SSLContext.getInstance("TLS");
|
||||
__sslContext.init(null, trustManagerFactory.getTrustManagers(), null);
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
HttpsURLConnection.setDefaultHostnameVerifier(__hostnameverifier);
|
||||
|
@ -105,7 +130,6 @@ public class SelectChannelServerSslTest extends HttpServerTestBase
|
|||
{
|
||||
OutputStream os=client.getOutputStream();
|
||||
|
||||
|
||||
int last=0;
|
||||
|
||||
// Write out the fragments
|
||||
|
@ -137,17 +161,17 @@ public class SelectChannelServerSslTest extends HttpServerTestBase
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Ignore
|
||||
public void testAvailable() throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void testSuspendedPipeline() throws Exception
|
||||
{
|
||||
_handlecount.set(0);
|
||||
super.testSuspendedPipeline();
|
||||
assertThat(_handlecount.get(),lessThan(50));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
<packaging>pom</packaging>
|
||||
<name>Jetty :: SPDY :: Parent</name>
|
||||
|
||||
<properties>
|
||||
<!--
|
||||
npn version only needs to change when there are changes in that binary, not
|
||||
with each and every release.
|
||||
-->
|
||||
<npn.version>7.6.2.v20120308</npn.version>
|
||||
</properties>
|
||||
|
||||
<modules>
|
||||
<module>spdy-core</module>
|
||||
<module>spdy-jetty</module>
|
||||
|
|
|
@ -9,10 +9,27 @@
|
|||
<artifactId>spdy-jetty-http-webapp</artifactId>
|
||||
<packaging>war</packaging>
|
||||
<name>Jetty :: SPDY :: Jetty HTTP Web Application</name>
|
||||
|
||||
<!--
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<descriptorRefs>
|
||||
<descriptorRef>config</descriptorRef>
|
||||
</descriptorRefs>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<!--
|
||||
|
||||
<plugin>
|
||||
<groupId>org.mortbay.jetty</groupId>
|
||||
<artifactId>jetty-maven-plugin</artifactId>
|
||||
|
@ -40,7 +57,7 @@
|
|||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
-->
|
||||
</plugins>
|
||||
</build>
|
||||
-->
|
||||
</project>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>org.eclipse.jetty.spdy</groupId>
|
||||
<artifactId>spdy-parent</artifactId>
|
||||
|
@ -10,11 +11,35 @@
|
|||
<name>Jetty :: SPDY :: Jetty HTTP Layer</name>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy</id>
|
||||
<phase>generate-resources</phase>
|
||||
<goals>
|
||||
<goal>copy</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>org.mortbay.jetty.npn</groupId>
|
||||
<artifactId>npn-boot</artifactId>
|
||||
<version>${npn.version}</version>
|
||||
<type>jar</type>
|
||||
<overWrite>false</overWrite>
|
||||
<outputDirectory>${build.directory}/npn</outputDirectory>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>true</skip>
|
||||
<argLine>-Xbootclasspath/p:${settings.localRepository}/org/mortbay/jetty/npn/npn-boot/${project.version}/npn-boot-${project.version}.jar </argLine>
|
||||
<argLine>-Xbootclasspath/p:${build.directory}/npn/npn-boot-${npn.version}.jar </argLine>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
|
|
@ -10,11 +10,35 @@
|
|||
<name>Jetty :: SPDY :: Jetty Binding</name>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy</id>
|
||||
<phase>generate-resources</phase>
|
||||
<goals>
|
||||
<goal>copy</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>org.mortbay.jetty.npn</groupId>
|
||||
<artifactId>npn-boot</artifactId>
|
||||
<version>${npn.version}</version>
|
||||
<type>jar</type>
|
||||
<overWrite>false</overWrite>
|
||||
<outputDirectory>${build.directory}/npn</outputDirectory>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>true</skip>
|
||||
<argLine>-Xbootclasspath/p:${settings.localRepository}/org/mortbay/jetty/npn/npn-boot/${project.version}/npn-boot-${project.version}.jar </argLine>
|
||||
<argLine>-Xbootclasspath/p:${build.directory}/npn/npn-boot-${npn.version}.jar </argLine>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
|
|
@ -32,6 +32,11 @@ public class EmptyAsyncEndPoint implements AsyncEndPoint
|
|||
private boolean closed;
|
||||
private int maxIdleTime;
|
||||
|
||||
@Override
|
||||
public void dispatch()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void asyncDispatch()
|
||||
{
|
||||
|
|
|
@ -349,12 +349,19 @@ public class AggregateLifeCycle extends AbstractLifeCycle implements Destroyable
|
|||
|
||||
/* ------------------------------------------------------------ */
|
||||
public static void dumpObject(Appendable out,Object o) throws IOException
|
||||
{
|
||||
try
|
||||
{
|
||||
if (o instanceof LifeCycle)
|
||||
out.append(String.valueOf(o)).append(" - ").append((AbstractLifeCycle.getState((LifeCycle)o))).append("\n");
|
||||
else
|
||||
out.append(String.valueOf(o)).append("\n");
|
||||
}
|
||||
catch(Throwable th)
|
||||
{
|
||||
out.append(" => ").append(th.toString()).append('\n');
|
||||
}
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
public void dump(Appendable out,String indent) throws IOException
|
||||
|
|
|
@ -465,14 +465,18 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo
|
|||
{
|
||||
final StackTraceElement[] trace=thread.getStackTrace();
|
||||
boolean inIdleJobPoll=false;
|
||||
// trace can be null on early java 6 jvms
|
||||
if (trace != null)
|
||||
{
|
||||
for (StackTraceElement t : trace)
|
||||
{
|
||||
if ("idleJobPoll".equals(t.getMethodName()))
|
||||
{
|
||||
inIdleJobPoll=true;
|
||||
inIdleJobPoll = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
final boolean idle=inIdleJobPoll;
|
||||
|
||||
if (_detailedDump)
|
||||
|
|
Loading…
Reference in New Issue