我正在开发一个Java应用程序,它通过AJAX调用从servlet获取数据。

此应用程序具有多个页面元素,可以相当快的速度从服务器获取新数据。

对于很多用户来说,服务器上的需求有可能达到相当高的水平,所以我很好奇:

哪种方法可提供最佳效果:

许多servlet(每种类型的数据请求一个)?

可以处理所有请求的单个servlet吗?

有帮助吗?

解决方案

没有性能原因要有多个servlet。在Web应用程序中,无论请求多少,都只会立即调用servlet类的单个实例。请求不是序列化的,它们是并发处理的,因此您的servlet需要线程安全。

其他提示

struts框架使用一个servlet来处理应用中的所有内容。你的东西塞进那个servlet。如果它适用于他们,它可能适合你。

拥有多项服务的一个可能原因是,如果您需要扩展到多台服务器以便在将来处理负载,则将单独的服务移动到它自己的服务器比在“幕后”移动它更容易。如果一切都来自一项服务。

话虽如此,如果您有多个servlet,还会产生额外的管理费用,因此需要平衡未来的灵活性和较低的可维护性。

如果您使用多个servlet,则没有性能增强,因为每个servlet请求都在一个单独的线程中处理,前提是它不是单线程的。

但是保持模块化和代码分离,你可以拥有多个servlet。

就像Tony说的那样,除非你需要拆分复杂的Java Servlet类或者实现一个拦截过滤器,否则没有理由使用多个servlet。

我确定你知道你可以拥有同一个servlet的多个实例,只要你在你的应用程序的web.xml文件中注册不同的节点 - 即假设你想这样做。

除此之外,根据我的理解,你可能会受益于彗星架构 - http://en.wikipedia.org/wiki/Comet_(编程)。点击 在一些servlet容器上已经有一些Comet的实现了 - 这里有一个看看如何使用Ajax和Comet - http://www.ibm.com/developerworks/java/library/j-jettydwr/ 。在决定你的架构之前,你应该学习。

BR,结果 〜A

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top