系统详细信息;
在jvm上设置javaagent(如下)之后,tomcat无法正确启动
javaagent:/usr/local/stackify/stackify-java-apm/stackify-java-apm.jar
根据我的观察,泽西岛不能正确初始化。
下面的日志显示了一个正常的tomcat启动;
19-Oct-2018 00:02:18.979 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.0.28
19-Oct-2018 00:02:18.981 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Nov 18 2015 23:50:41 UTC
19-Oct-2018 00:02:18.981 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number: 8.0.28.0
19-Oct-2018 00:02:18.981 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
19-Oct-2018 00:02:18.981 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 4.1.13-19.30.amzn1.x86_64
19-Oct-2018 00:02:18.981 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
19-Oct-2018 00:02:18.981 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-2.b17.7.amzn1.x86_64/jre
19-Oct-2018 00:02:18.981 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.8.0_65-b17
19-Oct-2018 00:02:18.982 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
19-Oct-2018 00:02:18.982 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/share/tomcat8
19-Oct-2018 00:02:18.982 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/share/tomcat8
19-Oct-2018 00:02:18.982 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -DIVW_CONFIG_SLACK_LOG_CHANNEL=#exceptions_alpha
19-Oct-2018 00:02:18.985 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=512m
19-Oct-2018 00:02:18.985 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx3700m
19-Oct-2018 00:02:18.985 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:-OmitStackTraceInFastThrow
19-Oct-2018 00:02:18.985 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+CMSClassUnloadingEnabled
19-Oct-2018 00:02:18.986 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseConcMarkSweepGC
19-Oct-2018 00:02:18.986 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+HeapDumpOnOutOfMemoryError
19-Oct-2018 00:02:18.986 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:HeapDumpPath=/tmp/logs
19-Oct-2018 00:02:18.986 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -javaagent:/usr/local/stackify/stackify-java-apm/stackify-java-apm.jar
19-Oct-2018 00:02:18.986 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms1024m
19-Oct-2018 00:02:18.986 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/share/tomcat8
19-Oct-2018 00:02:18.986 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/share/tomcat8
19-Oct-2018 00:02:18.986 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.awt.headless=true
19-Oct-2018 00:02:18.987 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=
19-Oct-2018 00:02:18.987 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/media/ivwStorage/javaTemp/
19-Oct-2018 00:02:18.987 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/share/tomcat8/conf/logging.properties
19-Oct-2018 00:02:18.987 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
19-Oct-2018 00:02:18.987 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
19-Oct-2018 00:02:19.191 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
19-Oct-2018 00:02:19.209 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
19-Oct-2018 00:02:19.254 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
19-Oct-2018 00:02:19.255 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
19-Oct-2018 00:02:19.264 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 945 ms
19-Oct-2018 00:02:19.298 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
19-Oct-2018 00:02:19.301 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.28
19-Oct-2018 00:02:19.352 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /var/lib/tomcat8/webapps/ROOT
19-Oct-2018 00:02:21.167 INFO [localhost-startStop-1] org.apache.catalina.core.StandardContext.checkUnusualURLPattern Suspicious url pattern: "*.css*" in context [] - see sections 12.1 and 12.2 of the Servlet specification
19-Oct-2018 00:02:21.168 INFO [localhost-startStop-1] org.apache.catalina.core.StandardContext.checkUnusualURLPattern Suspicious url pattern: "*.js*" in context [] - see sections 12.1 and 12.2 of the Servlet specification
Oct 19, 2018 12:02:21 AM org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Oct 19, 2018 12:02:22 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Shiro environment
Configuration keys:[IVW_CONFIG_DB_USERNAME, IVW_CONFIG_SIMPLE_DB_LOG_DOMAIN, IVW_CONFIG_SLACK_LOG_CHANNEL, IVW_CONFIG_S3_BUCKET_NAME, IVW_CONFIG_DEVELOPMENT_MODE, IVW_CONFIG_EMAIL_WHITE_LIST, IVW_CONFIG_DB_SCONPROP, IVW_CONFIG_CONFIGURATION_CACHE_ENABLED, IVW_CONFIG_DB_NAME, IVW_CONFIG_DB_MAX_CONNECTIONS, IVW_CONFIG_DB_HOST, IVW_CONFIG_DISK_CACHE_DIRECTORY, IVW_CONFIG_WEB_APP_URL, IVW_CONFIG_AWS_ACCESS_KEY, IVW_CONFIG_SERVER_NAME, IVW_CONFIG_NOTIFICATION_WHITE_LIST, IVW_CONFIG_DB_PASSWORD, IVW_CONFIG_TIMING_LOG_ENABLED, IVW_CONFIG_SLACK_LOG_TOKEN, IVW_CONFIG_AWS_SECRET_KEY]
Oct 19, 2018 12:02:44 AM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
com.***.rest
Oct 19, 2018 12:02:45 AM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:...
但是,当我添加stackify javaagent时,tomcat启动过程冻结,启动日志在显示以下行之前停止
com.sun.jersey.api.core.PackagesResourceConfig init
可能是相关的,每次遇到这样的问题后,当我重新启动tomcat时,我也会看到一些可能相关的内存泄漏警告。
INFO: Cleaning up Shiro Environment
19-Oct-2018 00:08:11.123 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
19-Oct-2018 00:08:11.124 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
19-Oct-2018 00:08:11.124 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [Thread-6] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
java.util.concurrent.DelayQueue.take(DelayQueue.java:211)
java.util.concurrent.DelayQueue.take(DelayQueue.java:70)
com.kikini.logging.simpledb.SimpleDBConsumer.run(SimpleDBConsumer.java:45)
java.lang.Thread.run(Thread.java:745)
19-Oct-2018 00:08:11.125 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:41)
19-Oct-2018 00:08:11.125 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [TracePostProcessorQueueHandler] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.lang.Thread.sleep(Native Method)
java.lang.Thread.sleep(Thread.java:340)
java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
com.stackify.apm.profiler.a.e$2.run(Unknown Source)
java.lang.Thread.run(Thread.java:745)
19-Oct-2018 00:08:11.126 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [StackifyTraceLinkCleanupThread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.lang.Thread.sleep(Native Method)
java.lang.Thread.sleep(Thread.java:340)
java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
com.stackify.apm.profiler.a.a$4.run(Unknown Source)
java.lang.Thread.run(Thread.java:745)
19-Oct-2018 00:08:11.127 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [ROOT] created a ThreadLocal with key of type [org.jsoup.helper.StringUtil$1] (value [org.jsoup.helper.StringUtil$1@f20c726]) and a value of type [java.lang.StringBuilder] ...
如果这是一个与泽西岛有关的问题,显然datadog和newrelic以前也有过类似的问题;
我还激活了tomcat上的fine log(添加
.level=好
到/etc/tomcat8/logging.properties)并查看tomcat日志,执行停止在;
22-Oct-2018 21:49:50.171 FINE [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.findResource findResource(javax/persistence/spi/PersistenceProviderResolverHolder.class)
22-Oct-2018 21:49:50.171 FINE [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.findResource --> Returning 'jar:file:/var/lib/tomcat8/webapps/ROOT/WEB-INF/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar!/javax/persistence/spi/PersistenceProviderResolverHolder.class'
22-Oct-2018 21:49:50.172 FINE [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.getResource --> Returning 'jar:file:/var/lib/tomcat8/webapps/ROOT/WEB-INF/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar!/javax/persistence/spi/PersistenceProviderResolverHolder.class'
22-Oct-2018 21:49:50.172 FINE [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream getResourceAsStream(javax/persistence/spi/PersistenceProviderResolverHolder.class)
22-Oct-2018 21:49:50.172 FINE [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream --> Returning stream from cache
22-Oct-2018 21:49:50.172 FINE [Thread-8] org.apache.catalina.loader.WebappClassLoaderBase.getResource getResource(java/nio/file/Path.class)
22-Oct-2018 21:49:50.172 FINE [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.loadClass Loading class from local repository
22-Oct-2018 21:49:50.172 FINE [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.loadClass loadClass(javax.persistence.spi.PersistenceProviderResolver, false)
22-Oct-2018 21:49:50.173 FINE [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.loadClass Searching local repositories
22-Oct-2018 21:49:50.173 FINE [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.findClass findClass(javax.persistence.spi.PersistenceProviderResolver)
然后我分析了内存使用和Java堆大小,但没有发现任何可疑的东西。
然后我尝试获取线程转储,注意到在retrace中有一个潜在的bug,因为它导致两个线程相互阻塞。下面是FastThread.io的线程转储分析:
Application is suffering from deadlock. Below are the threads which are causing deadlock
Thread-8 is in deadlock with localhost-startStop-1
Thread-8 - priority:5 - threadId:0x00007f589d57c000 - nativeId:0x7b11 - state:BLOCKED
stackTrace:
java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.catalina.loader.WebappClassLoaderBase.filter(WebappClassLoaderBase.java:2775)
- waiting to lock <0x00000006e5ad0a48> (a org.apache.catalina.loader.WebappClassLoader)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1033)
at com.stackify.bundled.javassist.LoaderClassPath.find(Unknown Source)
at com.stackify.bundled.javassist.ClassPoolTail.find(Unknown Source)
at com.stackify.bundled.javassist.ClassPool.find(Unknown Source)
at com.stackify.bundled.javassist.ClassPool.createCtClass(Unknown Source)
at com.stackify.bundled.javassist.ClassPool.get0(Unknown Source)
- locked <0x00000006e55cacd8> (a com.stackify.bundled.javassist.ClassPool)
at com.stackify.bundled.javassist.ClassPool.get(Unknown Source)
at com.stackify.bundled.javassist.CtClassType.getInterfaces(Unknown Source)
at com.stackify.apm.javassist.a.b(Unknown Source)
at com.stackify.apm.javassist.a.<init>(Unknown Source)
at com.stackify.apm.javassist.a.<init>(Unknown Source)
at com.stackify.apm.javassist.e.a(Unknown Source)
at com.stackify.apm.javassist.f.a(Unknown Source)
at com.stackify.apm.javassist.c.transform(Unknown Source)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
at sun.misc.Unsafe.defineAnonymousClass(Native Method)
at java.lang.invoke.InnerClassLambdaMetafactory.spinInnerClass(InnerClassLambdaMetafactory.java:326)
at java.lang.invoke.InnerClassLambdaMetafactory.buildCallSite(InnerClassLambdaMetafactory.java:194)
at java.lang.invoke.LambdaMetafactory.metafactory(LambdaMetafactory.java:304)
at java.lang.invoke.LambdaForm$DMH/1287071204.invokeStatic_L6_L(LambdaForm$DMH)
at java.lang.invoke.LambdaForm$BMH/2100450555.reinvoke(LambdaForm$BMH)
at java.lang.invoke.LambdaForm$MH/1996378445.invoke_MT(LambdaForm$MH)
at java.lang.invoke.CallSite.makeSite(CallSite.java:302)
at java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:307)
at java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:297)
at com.###.common.data.CustomerFacade.getAllCustomerInternalIdentifiers(CustomerFacade.java:70)
at com.###.common.ConfigurationHierarchyCacheHandler.getCustomerInternalIds(ConfigurationHierarchyCacheHandler.java:214)
at com.###.common.ConfigurationHierarchyCacheHandler.getApplicableKeys(ConfigurationHierarchyCacheHandler.java:359)
at com.###.common.ConfigurationHierarchyCacheHandler.refreshLocalCache(ConfigurationHierarchyCacheHandler.java:202)
at com.###.common.ConfigurationHierarchyCacheHandler.forceRefreshLocalCacheSync(ConfigurationHierarchyCacheHandler.java:194)
at com.###.common.ConfigurationHierarchyCacheHandler$$Lambda$166/382627531.run(Unknown Source)
at com.###.util.MDCRetainingRunnable.run(MDCRetainingRunnable.java:39)
at com.###.util.MDCRetainingRunnable.run(MDCRetainingRunnable.java:39)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:
- None
localhost-startStop-1 - priority:5 - threadId:0x00007f58b800c800 - nativeId:0x7af6 - state:BLOCKED
stackTrace:
java.lang.Thread.State: BLOCKED (on object monitor)
at com.stackify.bundled.javassist.ClassPool.get0(Unknown Source)
- waiting to lock <0x00000006e55cacd8> (a com.stackify.bundled.javassist.ClassPool)
at com.stackify.bundled.javassist.ClassPool.get(Unknown Source)
at com.stackify.bundled.javassist.CtClassType.getInterfaces(Unknown Source)
at com.stackify.apm.javassist.a.b(Unknown Source)
at com.stackify.apm.javassist.a.<init>(Unknown Source)
at com.stackify.apm.javassist.a.<init>(Unknown Source)
at com.stackify.apm.javassist.e.a(Unknown Source)
at com.stackify.apm.javassist.f.a(Unknown Source)
at com.stackify.apm.javassist.c.transform(Unknown Source)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2496)
- locked <0x00000006e5ad0a48> (a org.apache.catalina.loader.WebappClassLoader)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:860)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1302)
- locked <0x00000006e5ad0a48> (a org.apache.catalina.loader.WebappClassLoader)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
at org.hibernate.jpa.HibernatePersistenceProvider.<clinit>(HibernatePersistenceProvider.java:38)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at java.lang.Class.newInstance(Class.java:442)
at javax.persistence.spi.PersistenceProviderResolverHolder$PersistenceProviderResolverPerClassLoader$CachingPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:177)
- locked <0x00000006e21cac88> (a java.util.ArrayList)
at javax.persistence.spi.PersistenceProviderResolverHolder$PersistenceProviderResolverPerClassLoader.getPersistenceProviders(PersistenceProviderResolverHolder.java:84)
at javax.persistence.Persistence.getProviders(Persistence.java:69)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:53)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at com.###.common.MyEntityManagerFactory.createEntityManager(MyEntityManagerFactory.java:30)
- locked <0x00000006e21caf18> (a java.lang.Class for com.###.common.MyEntityManagerFactory)
at com.***.forms.data.ConfigurationHierarchyPackageSelector.createEntityManager(ConfigurationHierarchyPackageSelector.java:572)
at com.***.forms.data.ConfigurationHierarchyPackageSelector.getAllCustomerPackages(ConfigurationHierarchyPackageSelector.java:469)
at com.***.fieldticketing.data.FieldTicketStartupService.cacheInstalledPackagesLocally(FieldTicketStartupService.java:130)
at com.***.fieldticketing.data.FieldTicketStartupService.startup(FieldTicketStartupService.java:102)
at com.***.servlet.IVWServletContextListener.contextInitialized(IVWServletContextListener.java:24)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4738)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181)
- locked <0x00000006e48adfb8> (a org.apache.catalina.core.StandardContext)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
- locked <0x00000006e48adfb8> (a org.apache.catalina.core.StandardContext)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1101)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1816)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:
- <0x00000006e4a25700> (a java.util.concurrent.ThreadPoolExecutor$Worker)
在Cuffer-Futal.java中:70和CytaseStaleCypGeaseExcel。Java:572,我锁定一个对象
MyEntityManagerFactory类手动创建EntityManagerFactory实例。返回到tomcat日志,tomcat会随机停止一个与持久性相关的类的日志记录。
那么我的猜测是在回溯中有一个错误,它不能有效地处理锁。
如有任何反馈,我将不胜感激。