Servlets 持续运行的Web服务器脚本

Servlets 持续运行的Web服务器脚本,servlets,server-application,Servlets,Server Application,我尝试做的是一个web服务器,它只回答客户的请求。我可以使用PHP脚本,一个C++编写的可执行文件或用java编写的服务来创建响应,但是问题是它们总是必须从客户机的每个请求中加载,这降低了效率,并且要求我保存一些文件或数据库中的数据,以便在请求之间不能使用会话来交换它们。在不同的客户机之间交换数据 因此,我正在寻找一些脚本,这些脚本将在服务器上持续运行,侦听输入请求,生成答案并将其发送回。有用但不必要的功能包括: -基于C/C++,但不必 -能够处理http,因为客户端是一个发送JSON的网站

我尝试做的是一个web服务器,它只回答客户的请求。我可以使用PHP脚本,一个C++编写的可执行文件或用java编写的服务来创建响应,但是问题是它们总是必须从客户机的每个请求中加载,这降低了效率,并且要求我保存一些文件或数据库中的数据,以便在请求之间不能使用会话来交换它们。在不同的客户机之间交换数据

因此,我正在寻找一些脚本,这些脚本将在服务器上持续运行,侦听输入请求,生成答案并将其发送回。有用但不必要的功能包括: -基于C/C++,但不必 -能够处理http,因为客户端是一个发送JSON的网站 -可与某些服务器解决方案轻松配合使用

我的想法是像有一个C++程序,持续运行CPU中的所有信息,并用小程序共享它的内存,这将从每个请求开始,从共享内存中获取数据,并进行一些处理,以创建答案,而不是泛泛计算。可以多次加载。听起来有点可能吗


只需列举一些技术工作就可以了,谢谢你,Martin C.

我不知道你为什么认为用java servlet做不到这一点,但你错了。或者我不明白你想做什么

servlet有一个init方法,可用于在应用服务器启动时初始化数据。然后所有请求都可以访问此数据,例如:

@WebServlet(urlPatterns="/somePath", loadOnStartup=1)
public class MyServlet extends HttpServlet {
    private Object sharedData;

    @Override
    public void init() throws ServletException {
        sharedData = <Your code to load data>
    }

    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println(sharedData); // This is just an example of using sharedData
        ...
    }
}
请注意,servlet只有一个实例,因此数据只加载一次,同一个servlet实例将使用多个线程为所有请求提供服务


如果请求也可以修改共享数据,则必须小心确保代码线程安全。但是如果你只是在读,那就很简单了。

谢谢你的评论,大卫。我打算在谷歌上搜索一下,试试看,但这听起来很适合我的目标。