从Shell脚本启动Java服务器

时间:2013-03-18 13:19:07

标签: java sockets shell shell-exec

我使用Java套接字开发了一个服务器/客户端应用程序。我的服务器始终运行,如此代码所示。

while(SERVER_STATUT) //Server Statut is always true unless the client launches the stop script
    {
        try {

            Socket sockcli = sockserv.accept();


        } catch (IOException e) 
        {
            e.printStackTrace();
        }
    }

客户端与服务器交互并向服务器发送消息。 我的问题是我想要使用脚本shell启动和停止服务器。当客户端想要停止服务器时,他调用停止脚本。当服务器停止时,他可以通过调用启动脚本再次进行午餐。

启动和停止脚本存储在.sh文件中。

谢谢

2 个答案:

答案 0 :(得分:1)

您需要2个接口 一个接口用于连接到服务器的客户端,例如在港口8080中 另一种是从您的用户接收止损,例如在港口8081中 因此,您停止脚本只会向端口8081中的服务器发送请求以停止您的服务器(基本上更新SERVER_STATUT

答案 1 :(得分:0)

我无法为您编写完整的工作代码,但我可以说出一些想法。

  • 如果有帮助的话,你可能想看看现有的东西。 jboss/tomcat/apache...启动/停止脚本

  • 基本思路是,当您的start.sh首次执行 时,脚本会创建一个tmp文件(例如yourapp.pid)来存储processId。如果此文件存在,则表示您的服务器已启动,如果用户多次启动start.sh,您可能会显示错误消息

  • 同样使用该pid文件,您可以获取服务器的processId,并从shutdown.sh中删除它(不是优雅的方式来停止服务器),这可能是shutdown.sh -fkillforce。更好的方法是,您的服务器侦听特定端口,以处理关闭。例如存储一些临时文件,或根据您的逻辑需要进行一些预停止处理。

  • 实际上你只需要一个脚本,比如myConsle.sh,在这个单个文件中实现我上面所说的,并且使用“switch case like”结构,这样你就可以:

myConsole.sh start|restart|stop|forcekill|status来管理您的服务器。

希望有所帮助