【问题标题】:Java servlet- how to recieve updates from an external source?Java servlet-如何从外部源接收更新?
【发布时间】:2021-05-19 20:09:12
【问题描述】:

从 Tomcat 上的 Java servlet,我将帖子发送到外部应用程序,该应用程序根据我在帖子中发送的“消息”启动“作业”(消息是从 html 表单发送的)。外部应用程序回复我的帖子说“作业已成功提交”或“作业未成功提交”。外部应用程序是一个烧瓶/python 应用程序,它启动“作业”,然后可以将更新发送回我的服务器。

我以后如何从外部应用接收关于作业进度或作业完成/失败的更新?

我正在使用 HttpURLConnection 将发布请求发送到外部应用程序:

public class Post extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        InputStream input = null;
        try {
            String message = new String();
            // Data to be posted
            String getMessage = request.getParameter("Message");
            String USER_AGENT = "Mozilla/5.0";

            String url1 = "http://xx.xx.xx.xx:8080/GetPost";
            URL obj1 = new URL(url1);
            HttpURLConnection con1 = (HttpURLConnection) obj1.openConnection();
            // add request header
            con1.setRequestMethod("POST");
            con1.setRequestProperty("User-Agent", USER_AGENT);
            con1.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
            // Send post request
            con1.setDoOutput(true);
            DataOutputStream wr1 = new DataOutputStream(con1.getOutputStream());
            wr1.writeBytes(getMessage);
            wr1.flush();
            wr1.close();            

        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

虽然我确实阅读了帖子响应,(此处未包含代码)我不知道如何从外部应用程序接收以后的更新。接受所有建议,谢谢。

【问题讨论】:

    标签: java servlets httpurlconnection


    【解决方案1】:

    我不了解您的需求,但我可以建议您: Servlet 映射一个链接,外部程序访问该链接返回相关信息(如工作进度)。 也许你可以提供更多的细节。

    【讨论】:

    • 我和我的合作伙伴正在将我们的图像处理软件从桌面迁移到基于浏览器的系统。我正在用 javascript 编写前端,托管在 Tomcat 上。他正在用 Python/flask 编写后端。前端允许用户选择输入数据集,设置参数,向后端提交图像处理作业请求。后端会发送响应,指示作业是否提交成功,但作业本身可能需要几个小时才能运行。
    • 后端可以在作业完成时向前端发送后续消息,但我不知道如何捕获和处理来自前端的这些消息,尤其是在初始工作几小时后请求已发送。
    • 我现在了解您的需求。其实很容易解决。你需要解决的是双向通信的问题。解决方法有很多: 1:前端每隔X分钟循环发送请求查询处理状态。 2:建立webSocket通道,服务器直接推送数据到前端,前端抓取并处理。
    • 谢谢。 2)似乎更适合。我不清楚套接字和 websockets 之间的区别。有什么见解吗?
    猜你喜欢
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 2015-05-07
    相关资源
    最近更新 更多