我正在尝试做的是一个简单回答客户请求的Web服务器。我能够使用PHP脚本,用C ++编写的可执行文件或用Java编写的服务来创建响应,但问题是它们总是必须加载来自客户端的每个请求,这会降低效率并要求我保存数据在某个文件或数据库中,在请求之间交换它们(不能使用会话,在各种客户端之间交换数据)。
所以我正在寻找一些可以在服务器上连续运行的脚本,“倾听”收到请求,产生答案并将其发回。有用但不必要的功能是:
- 基于C / C ++,但不一定是
- 能够处理http,因为客户端是一个发送JSON的网站
- 可以很容易地与某些服务器解决方案一起使用
我的想法就像让一个C ++程序连续运行,维护CPU中的所有信息并用小程序共享它的内存,这些程序将在每个请求提交时启动,从共享内存中获取数据并执行一些操作处理创建答案(没有广泛的计算,可以多次加载)。听起来有点可能吗?
足以说出一些技术工作的结果,谢谢你,Martin C.
答案 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实例将为所有请求提供服务(使用多个线程)。
如果请求也可以修改共享数据,则必须小心保持代码的线程安全。但如果你只是阅读它,那很简单。