【问题标题】:Creating a web server / servlet container in Java - Standing on the shoulders of giants用 Java 创建 Web 服务器 / servlet 容器 - 站在巨人的肩膀上
【发布时间】:2011-03-17 11:58:05
【问题描述】:

首先,我想说这主要是个人练习。有很多容器和服务器(Tomcat、Jetty、Winstone)可以满足市场需求。

前几天我偶然发现了Akka 项目,并且在过去对 Erlang 有过很多乐趣,我决定用它来构建一个功能强大的 Web 服务器真的很酷。

然后我开始做白日梦。如果我可以使用现代框架并以代码高尔夫的方式构建一个几乎完全“站在巨人肩膀上”的 Web 服务器会怎样?也就是说:我可以使用多少其他人的工作。

理想情况下,要求类似于:

  • 容错、可集群、分布式
  • 易于配置
  • 在可配置端口上支持 HTTP、HTTPS 和 AJP
  • 支持接口绑定和多域
  • 通过可插拔接口支持 JSP、Jython 等
  • 支持允许实现 WebDAV、代理和 URL 重写等功能的模块

此时我最大的绊脚石是究竟如何使用 Jasper、Jetty、GlassFish 或其他任何东西来解释 JSP,而不用担心它们带来的所有其他东西,比如网络?

任何其他关于功能的建议都会非常棒。我还在研究非传统的配置方法,看看是否有比 XML 或属性文件更让我喜欢的东西。对于熟悉 Apache 的人来说,有时您需要一些脚本,有时您只需要键/值对。

所以,无论如何,请向我提出您的建议。

【问题讨论】:

    标签: java jsp servlets webserver akka


    【解决方案1】:

    至少 Tomcat 已经将其 JSP 引擎实现为一个模块。它没有单独发布,可能需要一些工作才能将其与 Tomcat 代码的其余部分完全分离。

    它有一个单独的名称 (Jasper) 和 its own Howto。它位于 org.apache.jasper 包(及以下)中。

    【讨论】:

    • 我已经看过几次了,我想我只是觉得那里 必须 是一个更好的方法。我们正在谈论从我的 Web 服务器内部调用一个 ant 任务来创建已编译的 JSP。我想我会记住这个方法。
    • ant 任务只是一个前端。您可以查看整个 org.apache.jasper 包,查找它的入口点并以编程方式使用它。有 ant 任务这一事实仅证明代码依赖于正在运行的 Tomcat 实例。
    • 我会调查的。如果没有人想出更好的螺栓固定组件,那么我会在我稍微炖一下之后继续并将其标记为答案。我仍然不确定我是否喜欢 JspC 路线,但如果没有从头开始实现我自己的容器就可以做到这一点,那么这就是我将采用的方法。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多