先声明,这是一个完全自愿、没有报酬的项目。项目名称:Http服务器
项目目标:开发一个Http服务器,该服务器能够:(中括号内为目标实现优先度)
1)完全符合HTTP/1.1要求。[高]
2)支持Servlet[高]和JSP[中]。
3)支持标准网络应用程序(WAR)部署。[高]
4)支持数据源配置。[中]
5)支持可扩展模块。如CGI。[低]
6)性能调优(如负载平衡)。[低]
也就是说,至少先完成1),2)的Servlet和3)毫无疑问会有人问:这种东西免费的多得是,有必要重新造轮子吗?
答案是:过程比结果重要。尤其三点:
1)Apache、Tomcat、JBoss不是你做的。
2)你可能在公司参与过很多项目,但其中是否有一个是你全心投入的呢?又有哪个是你明明白白地做出来的呢?
3)这个项目难度适中,初学者也能一展身手。要求:
1,有兴趣。
2,最好(不强求)能读英文技术文档。不要求:
1,开发经验。所以我把这贴发在SE而不是EE区。项目完成后所有参与者都将得到全部知识产权,找工作时你会用到的。愿意参加的、排砖的、有别的更好的想法的都请随意跟贴。

解决方案 »

  1.   

    好。算我一个。e-mail:[email protected]
      

  2.   

    闲着没事 ,算我一个 [email protected]
    最好建个QQ群大家便于交流
      

  3.   

    最近公司软件中用TOMCAT经常出问题,我经验不足,但也想试试。
    E-Mail:[email protected]
     
      

  4.   

    希望参与一下。支持建一个q群的想法。^_^
    [email protected]
      

  5.   

    顶 参加一下 [email protected]
      

  6.   

    还有我  msn: [email protected]
      

  7.   

    想参与学习,了解更多底层的东西,相信对以后工作也有很好的帮助。
    msn/email:  [email protected]
      

  8.   

    这到是 HTTP 服务器,还是 Servlet 容器啊,感觉连目标都很不明确呢!
      

  9.   

    不会是要实现 httpd 和 tomcat 两者所有的功能吧?
      

  10.   

    同意,第一,是HTTP服务器还是Servlet容器,希望楼主清楚
    如果是前者,我就不必说了,从楼主要求里看是包括了前者的,实现一个HTTP服务器不算太难,但是实现一个高性能的HTTP服务器……
    其次是Servlet容器,首先要实现J2EE里的标准,这点就非常非常非常难,我个人认为,首先需要大量的项目经验(是使用J2EE实现,比如TOMCAT,JBOSS),从而对J2EE有深刻认识,然后是阅读大量的标准文档,最后才是架构(这点也很难,当然你完全模仿TOMCAT又另说)。
    除了SERVLET的接口容器实现外,还有什么JSP编译器啊,JNDI啊(数据源),OH, MYGOD!
      

  11.   

    [email protected]
    考虑过后做的决定.
      

  12.   

    楼主,
    应该是在校大学生。
    我是支持, 
    去下个HowTomcatWorks 看看吧!!
     网络上有中文版的。
    我看的时候刚到第四章。 难度很高。
      

  13.   

    [过程比结果重要]我是冲这点来的,难度肯定是不小的,而且交流什么的都是问题。
    不过这种事情,又机会做也是可以的,不计较结果。
    [email protected]
      

  14.   

    光 Servlet 的部署描述符 web.xml 就有一大堆的东西下面是我整理的 Servlet 2.5、Servlet 3.0 规范的 web.xml XML 元素层次结构:1  表示必须出现 1 次
    ?  表示出现 0 次或 1 次
    +  表示至少出现 1 次
    *  表示出现 0 次或多次
    |  出现其中一个
    0..4  出现 0 次到 4 次
    [SERVLET30] Servlet 3.0 规范新增1  web-app  1
       1.1   description  *
       1.2   display-name  *
       1.3   icon  *
             1.3.1    small-icon  ?
             1.3.2    large-icon  ?
       1.4   distribution  *
       1.5   context-param  *
       1.6   filter  *
             1.6.1    description  *
             1.6.2    display-name  *
             1.6.3    icon  *
                      1.6.3.1    small-icon  ?
                      1.6.3.2    large-icon  ?
             1.6.4    filter-name  1
             1.6.5    filter-class  1
             1.6.6    async-supported  ?  [SERVLET3.0]
             1.6.7    init-param  *
                      1.6.7.1    description  *
                      1.6.7.2    param-name  1
                      1.6.7.3    param-value  1
       1.7   filter-mapping  *
             1.7.1    filter-name  1
             1.7.2    (url-pattern | servlet-name)  +
             1.7.3    dispatcher  0..4
                      dispatcher  0..5  [SERVLET3.0]
       1.8   listener  *
             1.8.1    description  *
             1.8.2    display-name  *
             1.8.3    icon  *
                      1.8.3.1    small-icon  ?
                      1.8.3.2    large-icon  ?
             1.8.4    listener-class  1
       1.9   servlet  *
             1.9.1    description  *
             1.9.2    display-name  *
             1.9.3    icon  *
                      1.9.3.1    small-icon  ?
                      1.9.3.2    large-icon  ?
             1.9.4    servlet-name  1
             1.9.5    (servlet-class | jsp-file)  1
                      (servlet-class | jsp-file)  ?  [SERVLET3.0]
             1.9.6    init-param  *
                      1.9.6.1    description  *
                      1.9.6.2    param-name  1
                      1.9.6.3    param-value  1
             1.9.7    load-on-startup  ?
             1.9.8    enabled  ?  [SERVLET3.0]
             1.9.9    asyn-supported  ?  [SERVLET3.0]
             1.9.10   run-as  ?
             1.9.11   sercurity-role-ref  *
                      1.9.11.1   description  *
                      1.9.11.2   role-name  1
                      1.9.11.3   role-link  ?
             1.9.12   multipart-config  ?  [SERVLET3.0]
                      1.9.12.1   location  ?  [SERVLET3.0]
                      1.9.12.2   max-file-size  ?  [SERVLET3.0]
                      1.9.12.3   max-request-size  ?  [SERVLET3.0]
                      1.9.12.4   file-size-threshold  ?  [SERVLET3.0]
       1.10  servlet-mapping  *
             1.10.1   servlet-name  1
             1.10.2   url-pattern  +
       1.11  session-config  *
             1.11.1   session-timeout  ?
             1.11.2   cookie-config  ?  [SERVLET3.0]
             1.11.3   tracking-mode  0..3  [SERVLET3.0]
       1.12  mime-mapping  *
             1.12.1   extension  1
             1.12.2   mime-type  1
       1.13  welcome-file-list  *
             1.13.1   welcome-file  +
       1.14  error-page  *
             1.14.1   (error-code | exception-type)  1
                      (error-code | exception-type)  ?  [SERVLET3.0]
             1.14.2   location  1
       1.15  jsp-config  *
             1.15.1   taglib  *
                      1.15.1.1   taglib-uri  1
                      1.15.1.2   taglib-location  1
             1.15.2   jsp-property-group  *
                      1.15.2.1   description  *
                      1.15.2.2   display-name  *
                      1.15.2.3   icon  *
                                 1.15.2.3.1   small-icon  ?
                                 1.15.2.3.2   large-icon  ?
                      1.15.2.4   url-pattern  +
                      1.15.2.5   el-ignored  ?
                      1.15.2.6   page-encoding  ?
                      1.15.2.7   scripting-invalid  ?
                      1.15.2.8   is-xml  ?
                      1.15.2.9   include-prelude  *
                      1.15.2.10  include-coda  *
                      1.15.2.11  deferred-syntax-allowed-as-literal  ?
                      1.15.2.12  trim-directive-whitespaces  ?
                      1.15.2.13  default-content-type  ?  [SERVLET3.0]
                      1.15.2.14  buffer  ?  [SERVLET3.0]
                      1.15.2.15  error-on-undeclared-namespace  ?  [SERVLET3.0]
       1.16  security-constraint  *
             1.16.1   display-name  *
             1.16.2   web-resource-collection  +
                      1.16.2.1   web-resource-name  1
                      1.16.2.2   description  *
                      1.16.2.3   url-pattern  +
                      1.16.2.4   http-method  *
                                 (http-method + | http-method-omission +)  ?  [SERVLET3.0]
             1.16.3   auth-constraint  ?
                      1.16.3.1   description  *
                      1.16.3.2   role-name  *
             1.16.4   user-data-constraint  ?
                      1.16.4.1   description  *
                      1.16.4.2   transport-guarantee  1
       1.17  login-config  *
             1.17.1   auth-method  ?
             1.17.2   realm-name  ?
             1.17.3   form-login-config  ?
                      1.17.3.1   form-login-page  1
                      1.17.3.2   form-error-page  1
       1.18  security-role  *
             1.18.1   description  *
             1.18.2   role-name  1
       1.19  env-entry  *
             1.19.1   description  *
             1.19.2   env-entry-name  1
             1.19.3   env-entry-type  1
             1.19.4   env-entry-value  ?
             1.19.5   mapped-name  ?
             1.19.6   injection-target  *
                      1.19.6.1   injection-target-class  1
                      1.19.6.2   injection-target-name  1
             1.19.7   lookup-name  ?  [SERVLET3.0]
       1.20  ejb-ref  *
             1.20.1   description  *
             1.20.2   ejb-ref-type  1
             1.20.3   ejb-ref-type  1
             1.20.4   home  1
             1.20.5   remote  1
             1.20.6   ejb-link  ?
             1.20.7   mapped-name  ?
             1.20.8   injection-target  *
                      1.20.8.1   injection-target-class  1
                      1.20.8.2   injection-target-name  1
             1.20.9   lookup-name  ?  [SERVLET3.0]
       1.21  ejb-local-ref  *
             1.21.1   description  *
             1.21.2   ejb-ref-type  1
             1.21.3   ejb-ref-type  1
             1.21.4   local-home  1
             1.21.5   local  1
             1.21.6   ejb-link  ?
             1.21.7   mapped-name  ?
             1.21.8   injection-target  *
                      1.21.8.1   injection-target-class  1
                      1.21.8.2   injection-target-name  1
             1.21.9   lookup-name  ?  [SERVLET3.0]
      

  15.   

       1.22  service-ref  *
             1.22.1   description  *
             1.22.2   display-name  *
             1.22.3   icon  *
                      1.22.3.1   small-icon  ?
                      1.22.3.2   large-icon  ?
             1.22.4   service-ref-name  1
             1.22.5   service-interface  1
             1.22.6   service-ref-type  ?
             1.22.6   wsdl-file  ?
             1.22.7   jaxrpc-mapping-file  ?
             1.22.8   service-qname  ?
             1.22.9   port-component-ref  *
             1.22.10  (handler * | handler-chains ?)  1
                      a   handler
                      1.22.10a.1  description  *
                      1.22.10a.2  display-name  *
                      1.22.10a.3  icon  *
                                  1.22.10a.3.1   small-icon  ?
                                  1.22.10a.3.2   large-icon  ?
                      1.22.10a.4  handler-name  1
                      1.22.10a.5  handler-class  1
                      1.22.10a.6  init-param  *
                                  1.22.10a.6.1   description  *
                                  1.22.10a.6.2   param-name  1
                                  1.22.10a.6.3   param-value  1
                      1.22.10a.7  soap-header  *
                      1.22.10a.8  soap-role  *
                      1.22.10a.9  port-name  *                  b   handler-chains
                      1.22.10b.1  handler-chain  *
                                  1.22.10b.1.1   (service-name-pattern | port-name-pattern | protocol-bindings)  ?
                                  1.22.10b.1.2   handler  +
                                                 1.22.10b.1.2.1   description  *
                                                 1.22.10b.1.2.2   display-name  *
                                                 1.22.10b.1.2.3   icon  *
                                                                  1.22.10b.1.2.3.1   small-icon  ?
                                                                  1.22.10b.1.2.3.2   large-icon  ?
                                                 1.22.10b.1.2.4   handler-name  1
                                                 1.22.10b.1.2.5   handler-class  1
                                                 1.22.10b.1.2.6   init-param  *
                                                                  1.22.10b.1.2.6.1   description  *
                                                                  1.22.10b.1.2.6.2   param-name  1
                                                                  1.22.10b.1.2.6.3   param-value  1
                                                 1.22.10b.1.2.7   soap-header  *
                                                 1.22.10b.1.2.8   soap-role  *
                                                 1.22.10b.1.2.9   port-name  *
             1.22.11  mapped-name  ?
             1.22.12  injection-target  *
                      1.22.12.1  injection-target-class  1
                      1.22.12.2  injection-target-name  1
             1.22.13  lookup-name  ?  [SERVLET3.0]
       1.23  resource-ref  *
             1.23.1   description  *
             1.23.2   res-ref-name  1
             1.23.3   res-type  1
             1.23.4   res-auth  1
             1.23.5   res-sharing-scope  ?
             1.23.6   mapped-name  ?
             1.23.7   injection-target  *
                      1.23.7.1   injection-target-class  1
                      1.23.7.2   injection-target-name  1
             1.23.8   lookup-name  ?  [SERVLET3.0]
       1.24  resource-env-ref  *
             1.24.1   description  *
             1.24.2   resource-env-ref-name  1
             1.24.3   resource-env-ref-type  1
             1.24.4   mapped-name  ?
             1.24.5   injection-target  *
                      1.24.5.1   injection-target-class  1
                      1.24.5.2   injection-target-name  1
             1.24.6   lookup-name  ?  [SERVLET3.0]
       1.25  message-destination-ref  *
             1.25.1   description  *
             1.25.2   message-destination-ref-name  1
             1.25.3   message-destination-type  ?
             1.25.4   message-destination-usage  ?
             1.25.5   message-destination-link  ?
             1.25.6   mapped-name  ?
             1.25.7   injection-target  *
                      1.25.7.1   injection-target-class  1
                      1.25.7.2   injection-target-name  1
             1.25.8   lookup-name  ?  [SERVLET3.0]
       1.26  persistence-context-ref  *
             1.26.1   description  *
             1.26.2   persistence-context-ref-name  1
             1.26.3   persistence-unit-name  ?
             1.26.4   persistence-context-type  ?
             1.26.5   persistence-property  *
                      1.26.5.1   name  1
                      1.26.5.2   value  2
             1.26.6   mapped-name  ?
             1.26.7   injection-target  *
                      1.26.7.1   injection-target-class  1
                      1.26.7.2   injection-target-name  1
       1.27  persistence-unit-ref  *
             1.27.1   description  *
             1.27.2   persistence-unit-ref-name  1
             1.27.3   persistence-unit-name  ?
             1.27.4   mapped-name  ?
             1.27.4   injection-target  *
                      1.27.4.1   injection-target-class  1
                      1.27.4.2   injection-target-name  1
       1.28  post-construct *
             1.28.1   lifecycle-callback-class  ?
             1.28.2   lifecycle-callback-method  1
       1.29  pre-destroy  *
             1.29.1   lifecycle-callback-class  ?
             1.29.2   lifecycle-callback-method  1
       1.30  data-source  *  [SERVLET3.0]
             1.30.1   description  ?
             1.30.2   name  1
             1.30.3   class-name  ?
             1.30.4   server-name  ?
             1.30.5   port-number  ?
             1.30.6   database-name  ?
             1.30.7   url  ?
             1.30.8   user  ?
             1.30.9   password  ?
             1.30.10  property  *
                      1.30.10.1  name  1
                      1.30.10.2  value  1
             1.30.11  login-timeout  ?
             1.30.12  transactional  ?
             1.30.13  isolation-level  ?
             1.30.14  initial-pool-size  ?
             1.30.15  max-pool-size  ?
             1.30.16  min-pool-size  ?
             1.30.17  max-idle-time  ?
             1.30.18  max-statements  ?
       1.31  message-destination  *
             1.31.1   description  *
             1.31.2   display-name  *
             1.31.3   icon  *
                      1.31.3.1   small-icon  ?
                      1.31.3.2   large-icon  ?
             1.31.4   message-destination-name  1
             1.31.5   mapped-name  ?
             1.31.7   lookup-name  ?  [SERVLET3.0]
       1.32  locale-encoding-mapping-list  *
             1.32.1   locale-encoding-mapping  +
                      1.32.1.1   locale  1
                      1.32.1.2   encoding  1
       1.33  module-name  *  [SERVLET3.0]
       1.34  absolute-ordering  *  [SERVLET3.0]
             1.34.1   (name * | others ?)  *花了半天时间整理的,也算是为这个项目出点绵薄之力,呵呵。
      

  16.   

    检查了一下,1.5 context-param 下层的子元素遗漏了,现补上   1.5   context-param  *
             1.5.1    description  *
             1.5.2    param-name  1
             1.5.3    param-value  1
      

  17.   

    HowTomcatWorks 的中文链接给发个地址吧,,,这个真的不好做,是个很大的项目,但真的做完了,你会nb的
      

  18.   

    楼主加我的msn 我想了解一些事情。
    [email protected] 加了之后给我一个message!
      

  19.   


    http://docs.google.com/Doc?id=dc32cxpz_31ghgkhqf3搜出来了~
      

  20.   

    [email protected]
    谢谢楼主
    ~~
      

  21.   

    期待加入 想对web容器有更深入的了解
    email:[email protected]
      

  22.   

    呵呵...nb项目...
    做过像jetty的小server差不多....
    我只能写一个小模块...呵呵
      

  23.   

    引用 17 楼 bao110908 的回复:
    引用楼主 nrgbooster 的回复: 
    毫无疑问会有人问:这种东西免费的多得是,有必要重新造轮子吗? 
    答案是:过程比结果重要。尤其三点: 
    1)Apache、Tomcat、JBoss不是你做的。 
    2)你可能在公司参与过很多项目,但其中是否有一个是你全心投入的呢?又有哪个是你明明白白地做出来的呢? 
    3)这个项目难度适中,初学者也能一展身手。 
    楼主可能太低估了这些模块的难度了,这个项目要完成到能用的程度,难度不是适中,而是很难! 严重同意
    我也来加入!  [email protected]