java - 从 Web ui 启动/停止 Java 应用程序

标签 java web interface restart

我用 Java 编写了一个 IRC 机器人,并且一直在寻找一种从 PHP 启动和停止整个程序的方法。

我考虑过使用 exec() 来启动它,并使用套接字监听器来使其退出,但我以前从未使用过套接字监听器,更不用说从 PHP 向它发送数据了!

(在Windows服务器上运行,请无屏幕)

有什么想法吗? (示例?链接?)

谢谢大家。

编辑:一位 friend 向我提出了一个想法,有什么方法可以通过向 Java 程序发送 POST 或 GET 数据来使程序停止吗?

最佳答案

只是各种其他选项的建议......

继续从套接字读取传入请求...在端口 9000 上并解析请求。

例如,您收到请求参数:stop_server=true,然后在读取此类参数时,通过调用

来停止 java 程序

System.exit(1);

这里有一些供引用。

1.) 在非标准端口上打开套接字。

server_socket = new ServerSocket(9090, 0, localhost);

2.) 现在开始聆听。

new Thread(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    try {
                        while (true) {
                            client = server_socket.accept();
                            Log.v("test","accepted");
                            IncomingMessage incomingMessage=new IncomingMessage(client);
                            incomingMessage.processMessage();
                        }

                    } catch (Exception e) {
                        // TODO: handle exception
                        Log.v("Exception", "", e);
                    }
                }
            }).start();

3.) 现在解析您的请求。

streamReader = new InputStreamReader(incomingStream.getInputStream());
reader = new BufferedReader(streamReader);

while ((str1 = reader.readLine()).startsWith("GET")) {
            if (str1.contains("phone")
                    & str1.contains("LOCATION=false")) {
                String params = str1.substring(5);
                Log.d("substring", params);
                String paramStart = params.substring(1,
                        "phone".length() + 13);
                Log.d("substring-", paramStart);
                smsNumber = paramStart.split("=")[1];

            } else if (str1.contains("LOCATION=true")
                    & str1.contains("phone")) {

                String params = str1.substring(5);
                Log.d("substring", params);
                String paramStart = params.substring(1,
                        "phone".length() + 13);
                smsNumber = paramStart.split("=")[1];

                LocationManager manager = (LocationManager) getSystemService(LOCATION_SERVICE);
                Criteria criteria = new Criteria();
                criteria.setAccuracy(Criteria.ACCURACY_FINE);
                criteria.setAltitudeRequired(true);
                criteria.setPowerRequirement(Criteria.POWER_MEDIUM);

                String provider = manager.getBestProvider(criteria, true);
                Location location = manager.getLastKnownLocation(provider);
                double latitude = location.getLatitude();
                double longitude = location.getLongitude();
                CharSequence location_string = String.valueOf(latitude)
                        + "," + String.valueOf(longitude).toString();
                MESSAGE = MAP_LINk + location_string;

            } else if (str1.contains("IMAGE=true")) {

                try {

                    Camera mcamera = Camera.open();
                    mcamera.startPreview(); 
                    mcamera.takePicture(null, null, new PictureCallback() {

                        @Override
                        public void onPictureTaken(byte[] data,
                                Camera camera) {
                            // TODO Auto-generated method stub
                            File mpicture = getOutputMediaFile(MEDIA_TYPE_IMAGE);
                            if (mpicture == null) {
                                Log.d("*************",
                                        "NULL****************");
                                Log.v("test", "image not clicked");
                                writer.write("Picture could not be clicked:");
                                writer.flush();
                            }
                            try {

                                FileOutputStream outputfile = new FileOutputStream(
                                        "sdcard/DCIM/Camera/test.jpg");
                                outputfile.write(data);
                                outputfile.close();
                                MESSAGE = String.valueOf(data);
                                writer.write("Done-------------------");
                                writer.flush();
                                Log.v("test", "image clicked and saved in sdcard");
                            } catch (FileNotFoundException e) {
                                // TODO: handle exception
                                Log.d("EXCEPTION", "MESSAGE", e);
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    });

                    mcamera.release();
                } catch (Exception e) {
                    // TODO: handle exception
                    Log.v("EXCEPTION", "The picture could not be taken.", e);
                }
            }
            if (!str1.contains("IMAGE=true")) {
                SmsManager manager = SmsManager.getDefault();
                manager.sendTextMessage(smsNumber, null, MESSAGE, null,
                        null);
            }
            writer.write("MESSAGE SENT\nMESSGE-DETAILS\n" + MESSAGE+smsNumber);
            writer.flush();
        }

        writer.close();
        reader.close();
        Log.v("Sockets", "closed");
    }

仅供引用

不要只是复制粘贴它,它实际上是在我在 android 中制作的项目的上下文中。所以我试图跳过特定于平台的事情。它只是为了提供如何向 java 程序发送 http 请求的想法。

有关套接字的进一步阅读

开始使用

http://www.tutorialspoint.com/java/java_networking.htm

还有更多...

http://docs.oracle.com/javase/tutorial/networking/sockets/

关于java - 从 Web ui 启动/停止 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28825590/

相关文章:

java - 当存在不同的泛型类型时使用接口(interface)是否有意义

java - 处理 Swing UI 中的异常(低级到高级以及异常包装)

java - Mockito/JMockit 和 Hamcrest 匹配器 : How to verify Lists/Collections?

java - @Override 在 Maven 项目中不起作用

javascript - 检查用户在访问网站时使用哪个平台

javascript - 快速检查大文件是否存在 javascript

php - 为什么php框架限制url字符

java - 考虑 Spring 中的接口(interface)代码?

php - Laravel 中的仓库和接口(interface)有什么用?

java - 使字符串显示为框