Web服务器脚本连续运行

时间:2014-09-16 23:20:28

标签: servlets server-application

我正在尝试做的是一个简单回答客户请求的Web服务器。我能够使用PHP脚本,用C ++编写的可执行文件或用Java编写的服务来创建响应,但问题是它们总是必须加载来自客户端的每个请求,这会降低效率并要求我保存数据在某个文件或数据库中,在请求之间交换它们(不能使用会话,在各种客户端之间交换数据)。

所以我正在寻找一些可以在服务器上连续运行的脚本,“倾听”收到请求,产生答案并将其发回。有用但不必要的功能是:
- 基于C / C ++,但不一定是
- 能够处理http,因为客户端是一个发送JSON的网站
- 可以很容易地与某些服务器解决方案一起使用

我的想法就像让一个C ++程序连续运行,维护CPU中的所有信息并用小程序共享它的内存,这些程序将在每个请求提交时启动,从共享内存中获取数据并执行一些操作处理创建答案(没有广泛的计算,可以多次加载)。听起来有点可能吗?

足以说出一些技术工作的结果,谢谢你,Martin C.

1 个答案:

答案 0 :(得分:0)

我不确定为什么你认为你不能用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实例将为所有请求提供服务(使用多个线程)。

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