Seam应用的JBoss AS还是Tomcat ?及其原因



我们将要部署一个使用JBoss Seam作为应用程序框架构建的Java web应用程序。我们将在集群设置中进行部署,因为这是一个电子商务应用程序,我们关心的是高可用性和性能。我们已经完成了应用程序部署到JBoss 5.1的所有开发和初始测试,但是我们最近开始担心内存占用和性能等问题,并开始讨论是否要迁移到Tomcat。

我们的应用程序是一个电子商务应用程序,使用典型的多层应用程序,使用JSF作为视图,使用EJB3作为业务层,使用JPA/Hibernate作为对PostgreSQL数据库的持久化。我们也大量使用JBoss缓存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呢?

我很想听听你对这种设置的意见和经验。我们已经阅读了文档。我们已经在所有不同的平台上进行了一些概念验证测试。但是,很难知道我们应该在生产中运行什么,并且不想做出错误的选择,然后需要重新架构并再次测试所有内容,因为我们做出了错误的选择。感谢您提供的任何意见和建议!

我认为没有人能对你的问题给出一个明确的答案,因为你的系统的定义太宽泛了。

我目前在类似的设置中使用Seam/JBoss 5 (oracle而不是postgres),主要是因为一个原因:支持。在JBoss和Seam紧密集成的世界中拥有RedHat专业服务支持本身就是您不应该忽视的东西。特别是在生产环境中。即使你现在没有,它也会让你知道你将来可以这样做(如果需要的话)。

也就是说,选择一种或另一种设置可能需要您首先对应用程序进行性能测试,以便发现问题的确切位置(假设您确实遇到了问题)。毕竟,会话大小取决于服务器的实现还是您在会话上存储了太多信息?是否使用会话复制?您使用AJAX吗?

大多数时候,性能改进来自于实现->性能测试->实现周期,而不是来自于改变实现技术。嘿,甚至Facebook也在使用MySQL做一些每个人都会立即认为不适合的事情(公开个人资料- 6亿多人)。

答案是"视情况而定"。

你可以考虑以下几个方面来做出明智的决定:

  • 您是否希望仅使用标准API (Java EE)或依赖特定于实现的功能进行编码
  • 配置基础设施维护的便利性

根据我的个人经验,我们在JBoss上部署复杂的应用,在Tomcat/Jetty上部署简单的应用。

Quartz和Ehcache一样支持集群

对于大多数JBoss的servlet容器服务是由一个内部tomcat容器管理的,直到JBoss 6。

JBoss是一个应用服务器,而tomcat是一个servlet容器。由于这个原因,我认为您不应该对现有代码进行重大更改以适应Tomcat。

最新更新