我们即将部署使用JBoss Seam构建的Java Web应用程序作为应用程序框架。我们将在集群设置中进行部署,因为这是一个电子商务应用程序,我们关注高可用性和性能。我们已经完成了部署到JBoss 5.1的应用程序的所有开发和初始测试,但是我们最近开始关注内存占用和性能等问题,并且已经讨论过迁移到Tomcat。
我们的应用程序是一个电子商务应用程序,使用典型的多层应用程序,使用JSF进行视图,使用EJB3进行业务层,使用JPA / Hibernate进行PostgreSQL数据库的持久化。我们还大量利用JBoss Cache 2.x进行缓存支持,并利用Hibernate Search(Lucene)进行搜索支持。
我很想听听社区对哪个应用服务器最适合基于Seam的应用程序的看法。我意识到我们必须对我们的应用程序架构(没有EJB,计时器服务 - > Quartz调度程序,JBoss Cache-> ehCache等)进行一些更改以支持迁移。我们很乐意做出这些改变,前提是它们与JBoss的结果相当。
使用JBoss,似乎集群设置更容易。我们能用Quartz进行集群设置吗?的Ehcache?正如我所提到的,我们目前正在部署JBoss 5.1。 JBoss 7会给我们带来更好的性能和更小的内存占用吗?如果我们选择Tomcat,我们倾向于Tomcat 7.是否有任何令人信服的理由选择使用Tomcat 6.x?
我很想听听您对此类设置的看法和经验。我们已经阅读了文档。我们已经对所有各种平台进行了一些概念验证测试。但是,很难知道我们应该在生产中运行什么,并且不想做出错误的选择,然后需要重新设计并再次测试所有内容,因为我们做出了错误的选择。感谢您提供的任何意见和建议!
答案 0 :(得分:3)
我认为任何人都不能用如此广泛的系统定义给出明确的答案。
我目前在类似的设置中使用Seam / JBoss 5(oracle而不是postgres)主要是由于一个原因:支持。在紧密集成的JBoss和Seam世界中拥有RedHat专业服务支持本身就是你不应该忽视的东西。特别是在生产环境中。即使您现在没有,它也让您感到舒适,知道您将来可以这样做(如果需要)。
也就是说,选择一个或另一个设置可能需要先对您的应用程序进行性能测试,以便发现您确实遇到问题的位置(假设您这样做)。毕竟,是服务器实现的会话大小还是在会话中存储了太多信息?您是否正在使用会话复制?你做AJAX吗?
大多数情况下,性能改进来自实施 - >性能测试 - >实施周期而不是改变实施技术。嘿,即使Facebook使用MySQL,每个人都会立即认为它不适合(公开的个人资料 - 其中有6亿多个)。
答案 1 :(得分:0)
答案是 - '这取决于'。
您可以考虑以下几个方面做出明智的决定:
根据我的个人经验 - 我们在JBoss上部署复杂的应用程序,在Tomcat / Jetty上部署简单的应用程序。
Quartz支持群集以及Ehcache。
答案 2 :(得分:0)
对于大多数JBoss的servlet容器服务由内部tomcat容器管理,这直到JBoss 6。
JBoss是一个应用服务器,而tomcat是一个servlet容器。由于这个原因,我几乎认为你不应该对你现有的代码进行大幅改动以适应Tomcat。