Compare commits

...
6 Commits
Author SHA1 Message Date
ReaJason 5047ab849f fix: h2 js classname $$ parse failed
Dev Deploy / Build Jar (ubuntu-latest) (push) Waiting to run
Dev Deploy / Build Jar (windows-latest) (push) Waiting to run
Dev Deploy / Docker Push (push) Blocked by required conditions
Dev Deploy / Deploy to Maven Central (push) Blocked by required conditions
Dev Deploy / Deploy to Northflank (push) Blocked by required conditions
MemShell IntegrationTest / jenkins (push) Waiting to run
MemShell IntegrationTest / xxljob (push) Waiting to run
MemShell IntegrationTest / dubbo (push) Waiting to run
MemShell IntegrationTest / springwebmvc (push) Waiting to run
MemShell IntegrationTest / springwebflux (push) Waiting to run
MemShell IntegrationTest / struts2 (push) Waiting to run
MemShell IntegrationTest / tomcat (push) Waiting to run
MemShell IntegrationTest / glassfish (push) Waiting to run
MemShell IntegrationTest / jbosseap (push) Waiting to run
MemShell IntegrationTest / payara (push) Waiting to run
MemShell IntegrationTest / wildfly (push) Waiting to run
MemShell IntegrationTest / jetty (push) Waiting to run
MemShell IntegrationTest / weblogic (push) Waiting to run
MemShell IntegrationTest / jbossas (push) Waiting to run
MemShell IntegrationTest / resin (push) Waiting to run
MemShell IntegrationTest / geronimo (push) Waiting to run
MemShell IntegrationTest / websphere7 (push) Waiting to run
MemShell IntegrationTest / websphere (push) Waiting to run
Probe IntegrationTest / springwebmvc (push) Waiting to run
Probe IntegrationTest / springwebflux (push) Waiting to run
Probe IntegrationTest / struts2 (push) Waiting to run
Probe IntegrationTest / tomcat (push) Waiting to run
Probe IntegrationTest / glassfish (push) Waiting to run
Probe IntegrationTest / jbosseap (push) Waiting to run
Probe IntegrationTest / payara (push) Waiting to run
Probe IntegrationTest / wildfly (push) Waiting to run
Probe IntegrationTest / jetty (push) Waiting to run
Probe IntegrationTest / jbossas (push) Waiting to run
Probe IntegrationTest / resin (push) Waiting to run
Probe IntegrationTest / weblogic (push) Waiting to run
Probe IntegrationTest / websphere7 (push) Waiting to run
Probe IntegrationTest / websphere (push) Waiting to run
Unit-Test / UniteTest (push) Waiting to run
2026-09-24 12:58:45 +08:00
ReaJason 6bb4a1c2e7 fix: groovy $$ execute failed 2026-09-24 12:57:56 +08:00
ReaJason 0589863c2b test: jdk assert failed 2026-09-24 12:22:40 +08:00
ReaJason 322f1b74a8 test: add lambdaSuffix(true) 2026-09-24 12:03:40 +08:00
ReaJason 17f930af1c fix: TongWeb 7.0.8.x+ probe failed 2026-09-13 14:43:57 +08:00
ReaJason fc18e28c7c chore: 2.11.0-SNAPSHOT 2026-09-13 14:43:28 +08:00
16 changed files with 904 additions and 12 deletions
@@ -47,6 +47,7 @@ class MemShellGeneratorControllerTest {
.shellTool(ShellTool.Godzilla) .shellTool(ShellTool.Godzilla)
.shrink(true) .shrink(true)
.debug(true) .debug(true)
.lambdaSuffix(true)
.serverVersion("Unknown") .serverVersion("Unknown")
.targetJreVersion(50) .targetJreVersion(50)
.build()); .build());
+1 -1
View File
@@ -9,7 +9,7 @@ idea {
} }
} }
version = "2.10.0" version = "2.11.0-SNAPSHOT"
tasks.register("publishAllToMavenCentral") { tasks.register("publishAllToMavenCentral") {
dependsOn(":memshell-party-common:publishToMavenCentral") dependsOn(":memshell-party-common:publishToMavenCentral")
@@ -18,6 +18,23 @@ public class TongWebWriter {
return; return;
} }
try { try {
// TongWeb 7.0.8.x+: RequestGroupInfo.processors stays empty unless the network
// monitor is enabled, but the RequestCapturer valve stores the current connector
// Request in a static ThreadLocal
try {
Class<?> tongWebMain = Class.forName("com.tongweb.main.TongWeb", false,
Thread.currentThread().getContextClassLoader());
Field requestsField = tongWebMain.getDeclaredField("requests");
requestsField.setAccessible(true);
Object threadLocal = requestsField.get(null);
if (threadLocal != null) {
Object request = invokeMethod(threadLocal, "get", null, null);
if (request != null && writeResponse(request)) {
return;
}
}
} catch (Throwable ignored) {
}
Set<Thread> threads = Thread.getAllStackTraces().keySet(); Set<Thread> threads = Thread.getAllStackTraces().keySet();
for (Thread thread : threads) { for (Thread thread : threads) {
Object poller = getFieldValue(thread, "target"); Object poller = getFieldValue(thread, "target");
@@ -76,6 +93,10 @@ public class TongWebWriter {
private boolean tryWriteRes(Object coyoteRequest) throws Exception { private boolean tryWriteRes(Object coyoteRequest) throws Exception {
Object request = invokeMethod(coyoteRequest, "getNote", new Class[]{Integer.TYPE}, new Object[]{1}); Object request = invokeMethod(coyoteRequest, "getNote", new Class[]{Integer.TYPE}, new Object[]{1});
return writeResponse(request);
}
private boolean writeResponse(Object request) throws Exception {
Object response = invokeMethod(request, "getResponse", null, null); Object response = invokeMethod(request, "getResponse", null, null);
String data = getDataFromReq(request); String data = getDataFromReq(request);
if (data != null && !data.isEmpty()) { if (data != null && !data.isEmpty()) {
+2
View File
@@ -14,6 +14,7 @@ jetbrains-annotations = "26.0.2"
alibaba-dubbo = "2.6.12" alibaba-dubbo = "2.6.12"
apache-dubbo = "2.7.6" apache-dubbo = "2.7.6"
tomcat = "8.5.85" tomcat = "8.5.85"
groovy = "2.4.21" # 与 Jenkins Script Console 的 Groovy 解析器版本对齐(仅测试用)
byte-buddy = "1.18.12" # https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy byte-buddy = "1.18.12" # https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy
commons-io = "2.22.0" # https://mvnrepository.com/artifact/commons-io/commons-io commons-io = "2.22.0" # https://mvnrepository.com/artifact/commons-io/commons-io
@@ -52,6 +53,7 @@ commons-lang3 = { module = "org.apache.commons:commons-lang3", version.ref = "co
commons-codec = { module = "commons-codec:commons-codec", version.ref = "commons-codec" } commons-codec = { module = "commons-codec:commons-codec", version.ref = "commons-codec" }
logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" }
bcel = { module = "org.apache.bcel:bcel", version.ref = "bcel" } bcel = { module = "org.apache.bcel:bcel", version.ref = "bcel" }
groovy = { module = "org.codehaus.groovy:groovy", version.ref = "groovy" }
java-websocket = { module = "org.java-websocket:Java-WebSocket", version.ref = "java-websocket" } java-websocket = { module = "org.java-websocket:Java-WebSocket", version.ref = "java-websocket" }
okhttp3 = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp3" } okhttp3 = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp3" }
fastjson2 = { module = "com.alibaba.fastjson2:fastjson2", version.ref = "fastjson2" } fastjson2 = { module = "com.alibaba.fastjson2:fastjson2", version.ref = "fastjson2" }
@@ -395,6 +395,7 @@ public class ShellAssertion {
.byPassJavaModule(targetJdkVersion >= Opcodes.V9) .byPassJavaModule(targetJdkVersion >= Opcodes.V9)
.debug(true) .debug(true)
.shrink(true) .shrink(true)
.lambdaSuffix(true)
.build(); .build();
return MemShellGenerator.generate(shellConfig, injectorConfig, shellToolConfig); return MemShellGenerator.generate(shellConfig, injectorConfig, shellToolConfig);
} }
@@ -472,8 +473,9 @@ public class ShellAssertion {
.shellType(shellType) .shellType(shellType)
.shellTool(shellTool) .shellTool(shellTool)
.targetJreVersion(targetJdkVersion) .targetJreVersion(targetJdkVersion)
.debug(false) .debug(true)
.probe(true) .probe(true)
.lambdaSuffix(true)
.build(); .build();
InjectorConfig injectorConfig = InjectorConfig.builder() InjectorConfig injectorConfig = InjectorConfig.builder()
.urlPattern(urlPattern) .urlPattern(urlPattern)
@@ -18,7 +18,7 @@ import java.time.Duration;
public class OpenLiberty25ContainerTest extends AbstractProbeContainerTest { public class OpenLiberty25ContainerTest extends AbstractProbeContainerTest {
private static final ProbeTestConfig CONFIG = ProbeTestConfig.openLiberty("open-liberty:25.0.0.12-full-java17-openj9") private static final ProbeTestConfig CONFIG = ProbeTestConfig.openLiberty("open-liberty:25.0.0.12-full-java17-openj9")
.expectedJdkVersion("JRE|17.0.20|61") .expectedJdkVersion("JRE|17.0.20.1|61")
.targetJdkVersion(Opcodes.V1_8) .targetJdkVersion(Opcodes.V1_8)
.waitStrategy(Wait.forHttp("/app/").forPort(9080).withStartupTimeout(Duration.ofMinutes(5))) .waitStrategy(Wait.forHttp("/app/").forPort(9080).withStartupTimeout(Duration.ofMinutes(5)))
.privilegedMode(true) .privilegedMode(true)
@@ -0,0 +1,690 @@
# Generated At 2026-09-12 07:53:12
SystemProps:
java.vendor: Temurin
sun.java.launcher: SUN_STANDARD
sun.management.compiler: HotSpot 64-Bit Tiered Compilers
os.name: Linux
sun.boot.class.path: /opt/java/openjdk/jre/lib/resources.jar:/opt/java/openjdk/jre/lib/rt.jar:/opt/java/openjdk/jre/lib/sunrsasign.jar:/opt/java/openjdk/jre/lib/jsse.jar:/opt/java/openjdk/jre/lib/jce.jar:/opt/java/openjdk/jre/lib/charsets.jar:/opt/java/openjdk/jre/lib/jfr.jar:/opt/java/openjdk/jre/classes
javax.security.jacc.PolicyConfigurationFactory.provider: com.tongweb.tongejb.core.security.JaccProvider$Factory
java.vm.specification.vendor: Oracle Corporation
java.runtime.version: 1.8.0_502-b07
org.apache.security.jacc.EJBMethodPermission.methodInterfaces: BusinessLocalHome,BusinessRemoteHome,BusinessRemote,BusinessLocal
user.name: root
tongweb.home: /opt/tweb7
user.language: en
java.naming.factory.initial: com.tongweb.tongejb.core.ivm.naming.java.javaURLContextFactory
derby.system.home: /opt/tweb7/domains/domain1
sun.boot.library.path: /opt/java/openjdk/jre/lib/aarch64
java.version: 1.8.0_502
java.util.logging.manager: com.tongweb.logger.JulLogManager
user.timezone: Etc/UTC
sun.arch.data.model: 64
java.util.concurrent.ForkJoinPool.common.threadFactory: com.tongweb.server.startup.SafeForkJoinWorkerThreadFactory
java.endorsed.dirs: /opt/java/openjdk/jre/lib/endorsed
sun.cpu.isalist:
sun.jnu.encoding: UTF-8
file.encoding.pkg: sun.io
file.separator: /
java.specification.name: Java Platform API Specification
tongejb.version: 8
java.class.version: 52.0
user.country: US
java.home: /opt/java/openjdk/jre
java.vm.info: mixed mode
os.version: 7.0.14-orbstack-00380-ga7e0a2dc9535
sun.font.fontmanager: sun.awt.X11FontManager
path.separator: :
java.vm.version: 25.502-b07
bval.in-container: true
java.awt.printerjob: sun.print.PSPrinterJob
sun.io.unicode.encoding: UnicodeLittle
java.specification.maintenance.version: 6
awt.toolkit: sun.awt.X11.XToolkit
tongweb.base: /opt/tweb7/domains/domain1
java.naming.factory.url.pkgs: com.tongweb.tongejb.core.ivm.naming
java.security.egd: file:/dev/./urandom
user.home: /root
java.specification.vendor: Oracle Corporation
java.library.path: /usr/java/packages/lib/aarch64:/lib:/usr/lib:/usr/lib64:/lib64
java.vendor.url: https://adoptium.net/
java.vm.vendor: Temurin
java.runtime.name: OpenJDK Runtime Environment
sun.java.command: com.tongweb.main.TongWebMain start
java.class.path: /opt/tweb7/version7.0.8.81/boot/tongweb-bootstrap.jar:/opt/tweb7/version7.0.8.81/tools/license/license-client-4.5.1.3.jar:/opt/tweb7/version7.0.8.81/boot/tongweb-bootstrap.jar
java.vm.specification.name: Java Virtual Machine Specification
java.vm.specification.version: 1.8
sun.cpu.endian: little
sun.os.patch.level: unknown
java.awt.headless: true
tongweb.TONGWEB_STARTED_FLAG: true
java.net.preferIPv6Addresses: false
java.io.tmpdir: /opt/tweb7/domains/domain1/temp
java.vendor.url.bug: https://github.com/adoptium/adoptium-support/issues
java.rmi.server.hostname: 127.0.0.1
os.arch: aarch64
java.awt.graphicsenv: sun.awt.X11GraphicsEnvironment
java.ext.dirs: /opt/java/openjdk/jre/lib/ext:/usr/java/packages/lib/ext
user.dir: /opt/tweb7/domains/domain1
line.separator:
java.vm.name: OpenJDK 64-Bit Server VM
com.tongweb.tongejb.core.security.JaccProvider: com.tongweb.tongejb.core.security.jacc.BasicJaccProvider
tongweb.version: 8
file.encoding: UTF-8
noBanner: true
java.specification.version: 1.8
===========================================
ThreadStacks:
"TW-0.0.0.0-9060-2" #91 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@4f894cca
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"auto-server" #126 daemon [TIMED_WAITING] on java.util.TaskQueue@414ebb4b
java.lang.Thread.State: TIMED_WAITING
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
at java.util.TimerThread.run(Timer.java:505)
"TW-Console-Thread-1" #118 daemon [WAITING] on java.util.concurrent.SynchronousQueue$TransferStack@457127ba
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:458)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
at java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:924)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-8080-5" #105 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@73b170
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-9060-5" #94 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@4f894cca
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-periodic-5" #115 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@59952a8
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"InstanceSyncRunnable" #125 daemon [TIMED_WAITING] on java.util.TaskQueue@31b935b3
java.lang.Thread.State: TIMED_WAITING
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
at java.util.TimerThread.run(Timer.java:505)
"TW-0.0.0.0-9060-4" #93 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@4f894cca
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-Console-Thread-2" #120 daemon [WAITING] on java.util.concurrent.SynchronousQueue$TransferStack@457127ba
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:458)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
at java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:924)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
"TW-periodic-2" #99 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@59952a8
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-9060-ClientPoller-1" #96 daemon [RUNNABLE]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at com.tongweb.web.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1318)
at java.lang.Thread.run(Thread.java:750)
"Thread-62" #131 daemon [RUNNABLE]
java.lang.Thread.State: RUNNABLE
at sun.nio.fs.LinuxWatchService.poll(Native Method)
at sun.nio.fs.LinuxWatchService.access$600(LinuxWatchService.java:47)
at sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:314)
at java.lang.Thread.run(Thread.java:750)
"TW-LogWriting" #15 daemon [TIMED_WAITING]
java.lang.Thread.State: TIMED_WAITING
at java.lang.Thread.sleep(Native Method)
at com.tongweb.logger.impl.core.WritingThread.run(Unknown Source)
"TW-0.0.0.0-9060-ClientPoller-0" #95 daemon [RUNNABLE]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at com.tongweb.web.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1318)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-9060-1" #90 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@4f894cca
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-9060-3" #92 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@4f894cca
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-8080-3" #103 daemon [RUNNABLE]
java.lang.Thread.State: RUNNABLE
at java.lang.Thread.dumpThreads(Native Method)
at java.lang.Thread.getAllStackTraces(Thread.java:1615)
at com.google.gso.hufOW.ErrorKqstzHandler.toString(BasicInfoPrinter.java:26)
at java.lang.String.valueOf(String.java:2994)
at com.tongweb.server.connector.CoyoteWriter.print(CoyoteWriter.java:237)
at Base64ClassLoaderServlet.service(Base64ClassLoaderServlet.java:26)
at com.tongweb.server.core.ApplicationFilterChain.enterApp(ApplicationFilterChain.java:366)
at com.tongweb.server.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:236)
at com.tongweb.server.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at ServletNameTestFilter.doFilter(ServletNameTestFilter.java:16)
at com.tongweb.server.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:197)
at com.tongweb.server.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at EmptyFilter.doFilter(EmptyFilter.java:12)
at com.tongweb.server.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:197)
at com.tongweb.server.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at UrlMappingTestFilter.doFilter(UrlMappingTestFilter.java:21)
at com.tongweb.server.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:197)
at com.tongweb.server.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at com.tongweb.server.core.StandardWrapperValve.invoke(StandardWrapperValve.java:155)
at com.tongweb.server.core.StandardContextValve.invoke(StandardContextValve.java:78)
at com.tongweb.ee.server.OpenEJBValve.invoke(OpenEJBValve.java:29)
at com.tongweb.server.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:487)
at com.tongweb.server.core.StandardHostValve.invoke(StandardHostValve.java:117)
at com.tongweb.server.valves.ErrorReportValve.invoke(ErrorReportValve.java:64)
at com.tongweb.ee.server.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:80)
at com.tongweb.server.core.StandardEngineValve.invoke(StandardEngineValve.java:58)
at com.tongweb.server.connector.CoyoteAdapter.service(CoyoteAdapter.java:500)
at com.tongweb.coyote.http11.Http11Processor.service(Http11Processor.java:352)
at com.tongweb.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:48)
at com.tongweb.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:735)
at com.tongweb.web.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1644)
at com.tongweb.web.util.net.SocketProcessorBase.run(SocketProcessorBase.java:33)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-8080-9" #109 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@73b170
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"Finalizer" #3 daemon [WAITING] on java.lang.ref.ReferenceQueue$Lock@7db988c9
java.lang.Thread.State: WAITING
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:188)
"TW-0.0.0.0-8080-8" #108 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@73b170
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-8080-7" #107 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@73b170
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-9060-BlockPoller" #39 daemon [RUNNABLE]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at com.tongweb.web.util.net.NioBlockingSelector$BlockPoller.run(NioBlockingSelector.java:295)
"TW-0.0.0.0-8080-6" #106 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@73b170
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-8080-1" #101 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@73b170
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-periodic-1" #98 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@59952a8
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"main" #1 [TIMED_WAITING]
java.lang.Thread.State: TIMED_WAITING
at java.lang.Thread.sleep(Native Method)
at com.tongweb.server.core.StandardServer.await(StandardServer.java:571)
at com.tongweb.main.TongWeb.await(TongWeb.java:480)
at com.tongweb.main.TongWeb.start(TongWeb.java:436)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.tongweb.main.TongWebMain.main(Unknown Source)
"cacheAllServerState" #119 daemon [TIMED_WAITING] on java.util.TaskQueue@605c4e3f
java.lang.Thread.State: TIMED_WAITING
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
at java.util.TimerThread.run(Timer.java:505)
"TW-periodic-10" #133 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@59952a8
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"Reference Handler" #2 daemon [WAITING] on java.lang.ref.Reference$Lock@2f1f5c8e
java.lang.Thread.State: WAITING
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
"TW-0.0.0.0-8080-BlockPoller" #40 daemon [RUNNABLE]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at com.tongweb.web.util.net.NioBlockingSelector$BlockPoller.run(NioBlockingSelector.java:295)
"TW-0.0.0.0-8080-10" #110 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@73b170
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-periodic-3" #100 daemon [TIMED_WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@59952a8
java.lang.Thread.State: TIMED_WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-8080-4" #104 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@73b170
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-9060-Acceptor" #97 daemon [RUNNABLE]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:421)
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:249)
at com.tongweb.web.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:501)
at com.tongweb.web.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:48)
at com.tongweb.web.util.net.Acceptor.run(Acceptor.java:79)
at java.lang.Thread.run(Thread.java:750)
"TW-Timer-Cache" #12 daemon [TIMED_WAITING]
java.lang.Thread.State: TIMED_WAITING
at java.lang.Thread.sleep(Native Method)
at com.tongweb.server.util.Utils$b$a.run(Unknown Source)
"TW-0.0.0.0-8080-2" #102 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@73b170
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:102)
at com.tongweb.web.util.threads.TaskQueue.take(TaskQueue.java:17)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"Signal Dispatcher" #4 daemon [RUNNABLE]
java.lang.Thread.State: RUNNABLE
"GC Daemon" #38 daemon [TIMED_WAITING] on sun.misc.GC$LatencyLock@57f3e073
java.lang.Thread.State: TIMED_WAITING
at java.lang.Object.wait(Native Method)
at sun.misc.GC$Daemon.run(GC.java:117)
"TW-periodic-9" #132 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@59952a8
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"Thread-59" #128 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@66bdc584
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)
at sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118)
at com.tongweb.ext.ConfigFileTamperProof.start0(ConfigFileTamperProof.java:97)
at com.tongweb.ext.ConfigFileTamperProof.lambda$start$0(ConfigFileTamperProof.java:35)
at com.tongweb.ext.ConfigFileTamperProof$$Lambda$201/1367672657.run(Unknown Source)
at java.lang.Thread.run(Thread.java:750)
"TW-periodic-8" #123 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@59952a8
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"check-license-expiration" #122 daemon [TIMED_WAITING] on java.util.TaskQueue@641252da
java.lang.Thread.State: TIMED_WAITING
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
at java.util.TimerThread.run(Timer.java:505)
"TW-0.0.0.0-8080-ClientPoller-1" #112 daemon [RUNNABLE]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at com.tongweb.web.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1318)
at java.lang.Thread.run(Thread.java:750)
"DaemonMonitorTask" #129 daemon [TIMED_WAITING] on java.util.TaskQueue@313c99fa
java.lang.Thread.State: TIMED_WAITING
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
at java.util.TimerThread.run(Timer.java:505)
"TW-0.0.0.0-8080-Acceptor" #113 daemon [RUNNABLE]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:421)
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:249)
at com.tongweb.web.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:501)
at com.tongweb.web.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:48)
at com.tongweb.web.util.net.Acceptor.run(Acceptor.java:79)
at java.lang.Thread.run(Thread.java:750)
"SDOSFilter" #130 daemon [TIMED_WAITING] on java.util.TaskQueue@798417d6
java.lang.Thread.State: TIMED_WAITING
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
at java.util.TimerThread.run(Timer.java:505)
"HealthListener" #127 daemon [TIMED_WAITING] on java.util.TaskQueue@719d6c87
java.lang.Thread.State: TIMED_WAITING
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
at java.util.TimerThread.run(Timer.java:505)
"TW-periodic-7" #121 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@59952a8
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-periodic-4" #114 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@59952a8
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
"TW-0.0.0.0-8080-ClientPoller-0" #111 daemon [RUNNABLE]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at com.tongweb.web.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1318)
at java.lang.Thread.run(Thread.java:750)
"TW-periodic-6" #116 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@59952a8
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at com.tongweb.web.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:47)
at java.lang.Thread.run(Thread.java:750)
===========================================
StackClassNames:
Base64ClassLoaderServlet
EmptyFilter
ServletNameTestFilter
UrlMappingTestFilter
com.google.gso.hufOW.ErrorKqstzHandler
com.tongweb.coyote.AbstractProcessorLight
com.tongweb.coyote.AbstractProtocol$ConnectionHandler
com.tongweb.coyote.http11.Http11Processor
com.tongweb.ee.server.OpenEJBSecurityListener$RequestCapturer
com.tongweb.ee.server.OpenEJBValve
com.tongweb.ext.ConfigFileTamperProof
com.tongweb.ext.ConfigFileTamperProof$$Lambda$201/1367672657
com.tongweb.logger.impl.core.WritingThread
com.tongweb.main.TongWeb
com.tongweb.main.TongWebMain
com.tongweb.server.authenticator.AuthenticatorBase
com.tongweb.server.connector.CoyoteAdapter
com.tongweb.server.connector.CoyoteWriter
com.tongweb.server.core.ApplicationFilterChain
com.tongweb.server.core.StandardContextValve
com.tongweb.server.core.StandardEngineValve
com.tongweb.server.core.StandardHostValve
com.tongweb.server.core.StandardServer
com.tongweb.server.core.StandardWrapperValve
com.tongweb.server.util.Utils$b$a
com.tongweb.server.valves.ErrorReportValve
com.tongweb.web.util.net.Acceptor
com.tongweb.web.util.net.NioBlockingSelector$BlockPoller
com.tongweb.web.util.net.NioEndpoint
com.tongweb.web.util.net.NioEndpoint$Poller
com.tongweb.web.util.net.NioEndpoint$SocketProcessor
com.tongweb.web.util.net.SocketProcessorBase
com.tongweb.web.util.threads.TaskQueue
com.tongweb.web.util.threads.TaskThread$WrappingRunnable
+1
View File
@@ -18,6 +18,7 @@ dependencies {
implementation("commons-collections:commons-collections:3.2.1") implementation("commons-collections:commons-collections:3.2.1")
implementation("org.apache.commons:commons-collections4:4.0") implementation("org.apache.commons:commons-collections4:4.0")
testImplementation(libs.junit.jupiter) testImplementation(libs.junit.jupiter)
testImplementation(libs.groovy)
testRuntimeOnly(libs.junit.platform.launcher) testRuntimeOnly(libs.junit.platform.launcher)
} }
@@ -14,6 +14,12 @@ public class H2JSPacker implements Packer {
@Override @Override
public String pack(ClassPackerConfig config) { public String pack(ClassPackerConfig config) {
String script = Packers.ScriptEngine.getInstance().pack(config); String script = Packers.ScriptEngine.getInstance().pack(config);
// H2 的 $$..$$ 美元引用字符串没有转义机制,类名(如 SOAPUtils$Proxy0$$Lambda$1)中的
// $$ 会提前闭合字面量。$$ 只会出现在 JS 的字符串字面量中,拆成 "$"+"$" 拼接即可,
// 既不残留 $$,又能还原出原类名
while (script.contains("$$")) {
script = script.replace("$$", "$\"+\"$");
}
return template.replace("{{script}}", script.replaceAll(";", "\\\\;")); return template.replace("{{script}}", script.replaceAll(";", "\\\\;"));
} }
} }
@@ -21,8 +21,8 @@ public class DemoGlueJobHandler extends IJobHandler {
} }
public ReturnT<String> execute(String param) throws Exception { public ReturnT<String> execute(String param) throws Exception {
String base64Str = "{{base64Str}}"; String base64Str = '{{base64Str}}';
String className = "{{className}}"; String className = '{{className}}';
try { try {
Class.forName(className); Class.forName(className);
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
@@ -14,8 +14,8 @@ class ClassDefiner extends ClassLoader {
@Override @Override
public String toString() { public String toString() {
String className = "{{className}}"; String className = '{{className}}';
String base64Str = "{{base64Str}}"; String base64Str = '{{base64Str}}';
ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
try { try {
classLoader.loadClass(className).newInstance(); classLoader.loadClass(className).newInstance();
@@ -0,0 +1,42 @@
package com.reajason.javaweb.packer.groovy;
import com.reajason.javaweb.packer.ClassPackerConfig;
import groovy.lang.GroovyClassLoader;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* @author ReaJason
* @since 2026/9/24
*/
class GroovyClassDefinerPackerTest {
@Test
void pack() {
ClassPackerConfig config = new ClassPackerConfig();
config.setClassName("com.reajason.javaweb.ErrorAbcdHandler");
config.setClassBytesBase64Str("aGVsbG8=");
String script = new GroovyClassDefinerPacker().pack(config);
assertTrue(script.contains("'com.reajason.javaweb.ErrorAbcdHandler'"));
compile(script);
}
@Test
void packClassNameWithLambdaSuffix() {
ClassPackerConfig config = new ClassPackerConfig();
config.setClassName("le.gso.SzyHj.SOAPUtils$Proxy0$$Lambda$1");
config.setClassBytesBase64Str("aGVsbG8=");
String script = new GroovyClassDefinerPacker().pack(config);
assertTrue(script.contains("'le.gso.SzyHj.SOAPUtils$Proxy0$$Lambda$1'"));
compile(script);
}
private void compile(String script) {
try (GroovyClassLoader classLoader = new GroovyClassLoader()) {
classLoader.parseClass(script);
} catch (Exception e) {
throw new AssertionError("groovy script should compile, script: " + script, e);
}
}
}
@@ -3,6 +3,14 @@ package com.reajason.javaweb.packer.h2;
import com.reajason.javaweb.packer.ClassPackerConfig; import com.reajason.javaweb.packer.ClassPackerConfig;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import javax.script.Compilable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
/** /**
* @author ReaJason * @author ReaJason
* @since 2025/6/28 * @since 2025/6/28
@@ -10,10 +18,56 @@ import org.junit.jupiter.api.Test;
class H2JSPackerTest { class H2JSPackerTest {
@Test @Test
void test() { void pack() throws Exception {
H2JSPacker h2JSPacker = new H2JSPacker();
ClassPackerConfig classPackerConfig = new ClassPackerConfig(); ClassPackerConfig classPackerConfig = new ClassPackerConfig();
classPackerConfig.setClassBytesBase64Str("bebe"); classPackerConfig.setClassName("com.reajason.javaweb.ErrorAbcdHandler");
System.out.println(h2JSPacker.pack(classPackerConfig)); classPackerConfig.setClassBytesBase64Str("aGVsbG8=");
String url = new H2JSPacker().pack(classPackerConfig);
String js = extractJs(url);
assertFalse(js.contains("$$"), "dollar-quoted body should not contain $$: " + js);
compileJs(js);
assertClassName(js, "com.reajason.javaweb.ErrorAbcdHandler");
}
@Test
void packClassNameWithLambdaSuffix() throws Exception {
ClassPackerConfig classPackerConfig = new ClassPackerConfig();
classPackerConfig.setClassName("le.gso.SzyHj.SOAPUtils$Proxy0$$Lambda$1");
classPackerConfig.setClassBytesBase64Str("aGVsbG8=");
String url = new H2JSPacker().pack(classPackerConfig);
String js = extractJs(url);
assertFalse(js.contains("$$"), "dollar-quoted body should not contain $$: " + js);
compileJs(js);
assertClassName(js, "le.gso.SzyHj.SOAPUtils$Proxy0$$Lambda$1");
}
/**
* 提取 $$..$$ 美元引用字符串中的 JS 源码,并还原 H2 连接串层面的 \; 转义
*/
private String extractJs(String url) {
String body = url.substring(url.indexOf("$$") + 2, url.lastIndexOf("$$"));
return body.substring("//javascript\n".length()).replace("\\;", ";");
}
/**
* 只解析不执行,验证拼接后的 JS 语法仍然合法
*/
private void compileJs(String js) throws Exception {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
assertNotNull(engine, "need a JDK with Nashorn to run this test");
((Compilable) engine).compile(js);
}
/**
* 只执行 className 赋值语句,验证 $$ 拆分成 "$"+"$" 后仍能还原出原类名
*/
private void assertClassName(String js, String expectedClassName) throws Exception {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
int start = js.indexOf("var className");
if (start < 0) {
throw new AssertionError("className assignment not found in: " + js);
}
engine.eval(js.substring(start, js.indexOf(';', start)));
assertEquals(expectedClassName, engine.get("className"));
} }
} }
@@ -0,0 +1,53 @@
package com.reajason.javaweb.packer.xxljob;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.reajason.javaweb.packer.ClassPackerConfig;
import groovy.lang.GroovyClassLoader;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* @author ReaJason
* @since 2026/9/24
*/
class XxlJobJsonPackerTest {
private final ObjectMapper objectMapper = new ObjectMapper();
@Test
void pack() throws Exception {
ClassPackerConfig config = new ClassPackerConfig();
config.setClassName("com.reajason.javaweb.ErrorAbcdHandler");
config.setClassBytesBase64Str("aGVsbG8=");
String glueSource = extractGlueSource(config);
assertTrue(glueSource.contains("'com.reajason.javaweb.ErrorAbcdHandler'"));
compile(glueSource);
}
@Test
void packClassNameWithLambdaSuffix() throws Exception {
ClassPackerConfig config = new ClassPackerConfig();
config.setClassName("le.gso.SzyHj.SOAPUtils$Proxy0$$Lambda$1");
config.setClassBytesBase64Str("aGVsbG8=");
String glueSource = extractGlueSource(config);
assertTrue(glueSource.contains("'le.gso.SzyHj.SOAPUtils$Proxy0$$Lambda$1'"));
compile(glueSource);
}
private String extractGlueSource(ClassPackerConfig config) throws Exception {
String payload = new XxlJobJsonPacker().pack(config);
JsonNode jsonNode = objectMapper.readTree(payload);
assertEquals("GLUE_GROOVY", jsonNode.get("glueType").asText());
return jsonNode.get("glueSource").asText();
}
private void compile(String glueSource) {
try (GroovyClassLoader classLoader = new GroovyClassLoader()) {
classLoader.parseClass(glueSource);
} catch (Exception e) {
throw new AssertionError("glue source should compile, source: " + glueSource, e);
}
}
}
@@ -0,0 +1,10 @@
package com.xxl.job.core.biz.model;
import java.io.Serializable;
/**
* 精简版 ReturnT,仅用于在测试中编译 GLUE 源码
*/
public class ReturnT<T> implements Serializable {
public static final ReturnT<String> SUCCESS = new ReturnT<>();
}
@@ -0,0 +1,10 @@
package com.xxl.job.core.handler;
import com.xxl.job.core.biz.model.ReturnT;
/**
* 精简版 IJobHandler,仅用于在测试中编译 GLUE 源码
*/
public abstract class IJobHandler {
public abstract ReturnT<String> execute(String param) throws Exception;
}