先声明,这是一个完全自愿、没有报酬的项目。项目名称: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区。项目完成后所有参与者都将得到全部知识产权,找工作时你会用到的。愿意参加的、排砖的、有别的更好的想法的都请随意跟贴。
项目目标:开发一个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区。项目完成后所有参与者都将得到全部知识产权,找工作时你会用到的。愿意参加的、排砖的、有别的更好的想法的都请随意跟贴。
最好建个QQ群大家便于交流
E-Mail:[email protected]
[email protected]
msn/email: [email protected]
如果是前者,我就不必说了,从楼主要求里看是包括了前者的,实现一个HTTP服务器不算太难,但是实现一个高性能的HTTP服务器……
其次是Servlet容器,首先要实现J2EE里的标准,这点就非常非常非常难,我个人认为,首先需要大量的项目经验(是使用J2EE实现,比如TOMCAT,JBOSS),从而对J2EE有深刻认识,然后是阅读大量的标准文档,最后才是架构(这点也很难,当然你完全模仿TOMCAT又另说)。
除了SERVLET的接口容器实现外,还有什么JSP编译器啊,JNDI啊(数据源),OH, MYGOD!
考虑过后做的决定.
应该是在校大学生。
我是支持,
去下个HowTomcatWorks 看看吧!!
网络上有中文版的。
我看的时候刚到第四章。 难度很高。
不过这种事情,又机会做也是可以的,不计较结果。
[email protected]
? 表示出现 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]
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 ?) *花了半天时间整理的,也算是为这个项目出点绵薄之力,呵呵。
1.5.1 description *
1.5.2 param-name 1
1.5.3 param-value 1
[email protected] 加了之后给我一个message!
http://docs.google.com/Doc?id=dc32cxpz_31ghgkhqf3搜出来了~
谢谢楼主
~~
email:[email protected]
做过像jetty的小server差不多....
我只能写一个小模块...呵呵
引用楼主 nrgbooster 的回复:
毫无疑问会有人问:这种东西免费的多得是,有必要重新造轮子吗?
答案是:过程比结果重要。尤其三点:
1)Apache、Tomcat、JBoss不是你做的。
2)你可能在公司参与过很多项目,但其中是否有一个是你全心投入的呢?又有哪个是你明明白白地做出来的呢?
3)这个项目难度适中,初学者也能一展身手。
楼主可能太低估了这些模块的难度了,这个项目要完成到能用的程度,难度不是适中,而是很难! 严重同意
我也来加入! [email protected]