虽然我试图阻止tomcat服务器给出这样的错误.
[root@server classes]# service tomcat restart
Stopping Tomcat service: Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
Apr 17, 2011 10:11:53 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:381)
at java.net.Socket.connect(Socket.java:537)
at java.net.Socket.connect(Socket.java:487)
at java.net.Socket.<init>(Socket.java:384)
at java.net.Socket.<init>(Socket.java:198)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:421)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:337)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415)
[ OK ]
Starting Tomcat service: Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using …Run Code Online (Sandbox Code Playgroud) 这与这篇文章有关.
我认为我的H2意思是它没有正确关闭.
我怀疑这是因为我看到myDB.lock.db我关闭tomcat并且进程没有停止.
我使用Tomcat的连接池,数据库的URL是:
url="jdbc:h2:file:/opt/myOrg/tomcat/webapps/MyApplication/db/myDatabase;SCHEMA=myschema"
从文件关闭H2:
通常,数据库在最后一次连接关闭时关闭....默认情况下,数据库在最后一个连接关闭时关闭.但是,如果它从未关闭,则在虚拟机使用关闭挂钩正常退出时,数据库将关闭
我无法理解我是否做错了什么.
我应该通过命令强制关闭数据库吗?这是关机钩子的意思吗?
我在这做错了什么?
注意:
我在Google中找不到如何H2正确关闭的示例(除了它在上次连接关闭时自动关闭的声明).我应该给SHUTDOWN自己打电话吗 这是正确的方法吗?
我已经看到投票来结束这个问题了,但我正在研究的一个例子没有理由或联系
更新:
在Joonas Pulakka回答一些额外信息之后:
从javacore我使用kill -3我看到的线程:
"H2 Log Writer MYAPPLICATION"J9VMThread:0x08DC6F00,j9thread_t:0x08C9B790,java/lang/Thread:0xE7206CC8,状态:CW,prio = 5 3XMTHREADINFO1(本机线程ID:0xA32,原生优先级:0x5,本机策略:UNKNOWN)3XMTHREADINFO2
(原生)堆栈地址范围从:0xE5E26000,到:0xE5E67000,大小:0x41000)3XMTHREADINFO3 Java callstack:
java/lang/Object.wait上的
4XESTACKTRACE (本机方法)java/lang/Object.wait上的4XESTACKTRACE(Object.java:196(编译代码) ))4xESTACKTRACE at org/h2/store/WriterThread.run(WriterThread.java:102)
4XESTACKTRACE at java/lang/Thread.run(Thread.java:736)3XMTHREADINFO"pool-8-thread-1"J9VMThread:0x087C0200,j9thread_t:0x0840566C,java/lang/Thread:0xE79BFC80,state:P,
prio = 5 3XMTHREADINFO1(本机线程ID:0xE1A,本机优先级:0x5,本机策略:UNKNOWN )3XMTHREADINFO2
(本机堆栈地址范围:0xE5F69000,至:0xE5FAA000,大小:0x41000)3XMTHREADINFO3 Java callstack:
4XESTACKTRACE at sun/misc/Unsafe.park(本机方法)
4XESTACKTRACE at java/util/concurrent/locks/LockSupport.park( LockSupport.java:184(Compiled Code))4XESTACKTRACE at java/util/concurrent/locks/AbstractQueuedSynchronizer $ ConditionObject.await(AbstractQueuedSynchronizer.java:1998(Compiled Code))4XESTACKTRACE at java/util/concurrent/LinkedBlockingQueue.take(LinkedBlockingQueue. java:413(编译代码))4XESTACKTRACE at …
我开发了一个在Tomcat中运行的多线程Web应用程序.但我不能用
shutdown.bat
Run Code Online (Sandbox Code Playgroud)
Tomcat没有优雅地停下来.在调试器中,我看到线程在shutdown命令后继续运行.我是否必须修复我的应用程序代码以满足特殊要求?谢谢.
我开始使用tomcat 7,
cd /opt/tomcat7/bin
$/opt/tomcat7/bin ./startup.sh
Run Code Online (Sandbox Code Playgroud)
它显示进程正在运行
root 23206 130 3.4 1323956 572880 pts/2 Sl 07:58 1:05 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dspring.profiles.active=mongo1,maxListenersAllowed -DST_SERVER=mongo1 -Djava.endorsed.dirs=/opt/tomcat7/endorsed -classpath /opt/tomcat7/bin/bootstrap.jar:/opt/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat7 -Dcatalina.home=/opt/tomcat7 -Djava.io.tmpdir=/opt/tomcat7/temp org.apache.catalina.startup.Bootstrap start
Run Code Online (Sandbox Code Playgroud)
如果我使用它关闭它
$/opt/tomcat7/bin ./shutdown.sh
Run Code Online (Sandbox Code Playgroud)
它给出了这个信息
Using CATALINA_BASE: /opt/tomcat7
Using CATALINA_HOME: /opt/tomcat7
Using CATALINA_TMPDIR: /opt/tomcat7/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/tomcat7/bin/bootstrap.jar:/opt/tomcat7/bin/tomcat-juli.jar
Run Code Online (Sandbox Code Playgroud)
但如果我检查上面的过程,它仍会显示它正在运行.Tomcat没有关闭.我也尝试使用root用户,但仍然没有成功.
Manully我可以杀死进程,但我想创建部署脚本,所以想要使用shutdown.sh和startup.sh来做
如果我尝试使用同样的事情
/opt/tomcat7/bin/catalina.sh start
/opt/tomcat7/bin/catalina.sh stop
Run Code Online (Sandbox Code Playgroud)
日志
Jul 23, 2014 8:26:17 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was …Run Code Online (Sandbox Code Playgroud)