我想用纯Java实现自己的Web服务器 网络服务器应该只支持静态资源(即html,js,css,pics,电影等..)
你能推荐一篇关于如何实现这样的东西的教程或文章吗? 我应该使用几个进程或线程池,还是应该考虑像NodeJS这样的循环事件?
我知道有免费的网络服务器可以完全满足我的要求,但我喜欢这样做是为了我的自我。
答案 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服务器很有意思。我们将它用于临时文件传输。如果你已经熟悉它,你可以看看你是否能发现它的瓶颈,然后思考如何解决它:)
答案 4 :(得分:0)
我建议Apache MINA来完成这项工作。它允许您指定编码器/解码器以正确处理HTT协议,并在请求到达时调用方法等。它在内部处理线程管理。没有它,我从未开始过网络项目。