实施Web服务器

时间:2010-07-29 13:18:10

标签: java multithreading webserver implementation node.js

我想用纯Java实现自己的Web服务器 网络服务器应该只支持静态资源(即html,js,css,pics,电影等..)

你能推荐一篇关于如何实现这样的东西的教程或文章吗? 我应该使用几个进程或线程池,还是应该考虑像NodeJS这样的循环事件?

我知道有免费的网络服务器可以完全满足我的要求,但我喜欢这样做是为了我的自我。

5 个答案:

答案 0 :(得分:3)

答案 1 :(得分:3)

如果您将此作为练习,我建议使用事件驱动模型。

我认为这个主题没有一个教程,因为所需的知识是如此广泛 - HTTP协议,文件访问,线程和并发,配置文件管理,套接字通信,日志记录,错误处理,MIME类型...是的,即使只是分享静态资源,它仍然是一个大问题。

阅读,祝你好运!

答案 2 :(得分:1)

我建议您熟悉HTTP请求格式http://datatracker.ietf.org/doc/rfc2616/。从头开始实施HTTP并不是一件容易的事,但它肯定是一个很好的学习练习。

为简单起见,在Java本身中,我建议使用每个请求线程的服务器 - http://tutorials.jenkov.com/java-multithreaded-servers/multithreaded-server.html - 使用java.nio来提供服务文件。在并发设置中,java.nio优于java.io,因为它可以更好地平衡负载。您可能会发现基准标记表明java.io更快,但这是顺序单线程代码。

答案 3 :(得分:1)

您可能会发现ACME Web服务器很有意思。我们将它用于临时文件传输。如果你已经熟悉它,你可以看看你是否能发现它的瓶颈,然后思考如何解决它:)

http://acme.com/java/software/Acme.Serve.Serve.html

答案 4 :(得分:0)

我建议Apache MINA来完成这项工作。它允许您指定编码器/解码器以正确处理HTT协议,并在请求到达时调用方法等。它在内部处理线程管理。没有它,我从未开始过网络项目。