Tag: shutdown

如何从命令行停止OSGI应用程序

我有一个运行的osgi(equinox容器)应用程序。 它将通过bash脚本启动。 见felix gogo shell java -jar … _osgi.jar -console 1234 & 这一切都很好,我也可以阻止它 telnet localhost 1234 stop 0 但我正在寻找的是如何将其嵌入到bash脚本中以停止osgi应用程序。 我已经试过了 echo stop 0 | telnet localhost 1234 但这不起作用。 因此,如果有人知道如何将其放入bash脚本中,请告诉我。

tomcat中的shutdown hook(必要)没有运行

我有一个长期运行的cpu和数据库密集型线程(以低优先级运行),可由管理员请求由我的tomcat应用程序触发。 我为此线程使用了一个关闭钩子,因此如果应用程序被强制停止,它可以在退出之前清理数据库状态。 在独立模式下完美运行,使用control-C并在eclipse控制台中取消。 但是当在tomcat下运行时,当我做一个: $ CATALINA_HOME / bin中/ shutdown.sh 我通过调试日志validation我的servlet contextDestroyed消息是由tomcat发送的,但是对于这个线程,消息无法阻止它,重要的是我的shutdown hook永远不会触发。 我注意到其他人说使用contextDestroyed消息,但这对我不起作用,并且一些问题和答案暗示关闭钩子在tomcat中为它们工作。 我正在使用tomcat 6.0.35。

JVM终止后会发生什么?

我在互联网上四处寻找这个问题的答案,但我必须得出结论,我必须要么在互联网上找东西,要么在错误的地方找东西。 现在我希望有人可以帮助我解决我的问题: 当JVM以System.exit(0)或^C或类似的东西终止时会发生什么? 我到处读到诸如“流程刚被吹走”和“每个线程都停止”之类的事情,但我想知道究竟发生了什么。 我已经知道有一些shutdownHook仍然会被执行,但之前发生了什么,并且在所有这些线程完成之后还有什么吗? 我的问题的真正原因是因为我想正确地实现这样的shutdownHook并对可能仍然执行的内容做出正确的假设。 更新: 一些代码: class SomeObject { private boolean stopped; SomeObject() { stopped = false; Thread hook = new Thread() { @Override public void run() { stopped = true; } }; hook.setPriority(Thread.MAX_PRIORITY); Runtime.getRuntime().addShutdownHook(hook); } boolean map(Iterator it) { while(it.hasNext() && !stopped) { writeToOtherObject(it.next()); it.remove(); } //have calculations finished? return !it.hasNext(); } […]

以编程方式关闭netty

我正在使用netty 4.0.24.Final。 我需要以编程方式启动/停止netty服务器。 启动服务器时,线程被阻止 f.channel().closeFuture().sync() 请帮助提供一些提示如何正确执行此操作。 下面是Main类调用的EchoServer。 谢谢。 package nettytests; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.handler.logging.LogLevel; import io.netty.handler.logging.LoggingHandler; public class EchoServer { private final int PORT = 8007; private EventLoopGroup bossGroup; private EventLoopGroup workerGroup; public void start() throws Exception { // Configure the […]

在最后一个窗口调用dispose后,java swing程序没有关闭

前言:这是我做过的第一个真正的挥杆计划。 我有一个swing程序,其中一个JButton应该退出该程序。 该按钮触发this.dispose();. 当我点击这个JButton时,它确实使窗口完全消失,但是看着调试器,程序本身仍在运行。 我的主要方法只包括: public static void main (String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new StartupGui().setVisible(true); } }); } 我的退出按钮看起来像操作按钮看起来像: private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); } 我也试过退出按钮: private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { dispose(); } }); } 按下退出按钮后查看调试器,我看到以下内容(仅限以下内容): Daemon Thread [AWT-XAWT] (running) Thread […]

如何正确关闭Derby内存数据库

我正在使用derby作为嵌入式数据库。 此外,我正在使用它的内存数据库选项进行unit testing。 我无法弄清楚的是如何正确关闭(快速查看代码) Derby数据库。 我相信我让它适用于标准数据库但我在内存数据库中尝试类似代码时会遇到不同的exception。 我将省略细节,如果需要其他感觉,我会添加它们。 基本上,我正试图以这两种方式关闭我的数据库,我的内存数据库一直被称为“呃”: DriverManager.getConnection(“jdbc:derby:memory:eh;shutdown=true”); 然后: DriverManager.getConnection(“jdbc:derby:eh;shutdown=true”); 前者导致exception但不是预期的exception 。 细节是: java.sql.SQLNonTransientConnectionException:数据库’内存:呃’关闭。 后者导致 java.sql.SQLException:找不到数据库’呃’。 基于我能够弄清楚的,我们想要一个SQLException而不是我们收到的那个。 另一方面, SQLNonTransientConnectionException错误似乎更合适,但不是正确的类型(虽然它是从SQLException派生的),也没有正确的状态代码。 州代码最终为: 08006 。 我的示例代码说明了一个SQL状态为“XJ015”的SQLException 。 注意:我引用的示例是: WwdEmbedded Program ( Java Code )。

确定java shutdown hook线程中的退出状态

我想确定关闭钩子运行时期间进程的退出状态。 我想要一个基于状态代码(0或非零)的逻辑 (例如:如果零则不执行其他非零发送警报电子邮件) 你知道我怎么能得到这些信息吗?