TongWeb8.0默认开启了JNDI缓存,若遇到如下异常或线程阻塞在com.tongweb.naming.JndiCache上,则增加参数-Dtongweb.disableJndiCache=true关闭缓存。
#部署应用异常
Caused by: java.lang.IllegalStateExcception: Recursive update
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java)
at com.tongweb.naming.JndiCache.lookup(JndiCache.java:80)
#访问阻塞在JndiCache上
"TW-8088-2" #86 daemon prio=5 os_prio=0 tid=0x00000289a7373800 nid=0x69f4 runnable [0x000000bb038fb000]
java.lang.Thread.State: RUNNABLE
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1718)
at com.tongweb.naming.JndiCache.lookup(JndiCache.java:80)
at com.tongweb.tongejb.core.ivm.ContextHandler.lookup0(ContextHandler.java:47)
at com.tongweb.tongejb.core.ivm.ContextHandler.lookup(ContextHandler.java:42)
at com.tongweb.tongejb.core.ivm.naming.IvmContext.lookup0(IvmContext.java:192)
at com.tongweb.tongejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:159)
at com.tongweb.tongejb.core.ivm.ContextHandler.lookupInternal(ContextHandler.java:71)
at com.tongweb.tongejb.core.ivm.ContextHandler.lambda$lookup0$0(ContextHandler.java:47)
at com.tongweb.tongejb.core.ivm.ContextHandler$$Lambda$164/1730914651.lookup(Unknown Source)
at com.tongweb.naming.JndiCache.lambda$lookup$1(JndiCache.java:82)
at com.tongweb.naming.JndiCache$$Lambda$166/28020301.apply(Unknown Source)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
- locked <0x00000000d8f16a28> (a java.util.concurrent.ConcurrentHashMap$ReservationNode)
at com.tongweb.naming.JndiCache.lookup(JndiCache.java:80)
at com.tongweb.tongejb.core.ivm.ContextHandler.lookup0(ContextHandler.java:47)
at com.tongweb.tongejb.core.ivm.ContextHandler.lookup(ContextHandler.java:42)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
"TW-8088-5" #89 daemon prio=5 os_prio=0 tid=0x0000022a45da0800 nid=0x7d9c waiting for monitor entry [0x0000006a471fb000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1674)
- waiting to lock <0x00000000d9a443b0> (a java.util.concurrent.ConcurrentHashMap$ReservationNode)
at com.tongweb.naming.JndiCache.lookup(JndiCache.java:80)
at com.tongweb.tongejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:160)
at com.tongweb.tongejb.core.ivm.ContextHandler.lookup0(ContextHandler.java:62)
at com.tongweb.tongejb.core.ivm.ContextHandler.lookup(ContextHandler.java:41)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155)
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:179)