JavaEE与servlet的优缺点
在一个简单的Servlet实现上使用JavaEE(EJB)的主要原因是什么 我正在开发一个新的项目,主要是一个必须非常快速和可扩展的web服务JavaEE与servlet的优缺点,java,servlets,jakarta-ee,Java,Servlets,Jakarta Ee,在一个简单的Servlet实现上使用JavaEE(EJB)的主要原因是什么 我正在开发一个新的项目,主要是一个必须非常快速和可扩展的web服务 很抱歉让您感到困惑,虽然我对Java很有经验,但我对Java Web世界非常陌生,可能不会很好地提出这个问题。Web服务是无状态的吗?如果是这样,我看不到使用成熟的JavaEE服务器比使用像Tomcat或Jetty这样的轻量级服务器有什么真正的优势。您可以使用这两种方法中的任何一种来部署jax-ws实现,并且可以非常轻松地完成所需的工作。如果涉及到某种状
很抱歉让您感到困惑,虽然我对Java很有经验,但我对Java Web世界非常陌生,可能不会很好地提出这个问题。Web服务是无状态的吗?如果是这样,我看不到使用成熟的JavaEE服务器比使用像Tomcat或Jetty这样的轻量级服务器有什么真正的优势。您可以使用这两种方法中的任何一种来部署jax-ws实现,并且可以非常轻松地完成所需的工作。如果涉及到某种状态,并且最终希望在多台机器上共享,那么使用JavaEE就可以派上用场
话虽如此,我认为JavaEE根本不会降低性能。应用程序服务器通常需要更长的启动时间,需要更多的管理工作,但一旦它们启动并运行,性能应该是相似的。如果您的web服务可能需要任何程度的“企业”功能,如按方法安全或事务,请使用EJB 在EJB3中,这实际上一点也不难,只需几个注释,就可以完成了
否则,servlet后面的简单POJO就足够了。EJB的规范1.x和2.x增加了大多数Web应用程序不需要的复杂性 由于这种复杂性,新框架似乎简化了开发和运行时架构(Hibernate/Spring/其他微容器/其他ORM框架) EJB的3.x与这些变化相匹配(通过JDO和JPA),现在,将servlet与这些增强的框架或JavaEE与EJB3+一起使用,将得到基本相同的结果
使用Java EE应用程序服务器将为您增加许多管理优势(GUI来管理池、日志、监控、事务等)。如果没有这些优势,您可能会得到相同的结果,但您必须手动完成(编辑配置文件),这似乎不是太成问题,但是,如果你计划为你的webapp配备一名管理员,那么最好使用这个服务器自带的管理工具 servlet是HTTP请求侦听器;他们对其他任何事情都没有反应 如果您在servlet中嵌入了大量逻辑,那么任何其他客户端都无法使用它 用POJO编写应用程序。在没有应用服务器参与的情况下对其进行全面测试。然后再考虑如何打包和部署它。Servlet?EJB?网络服务?还有别的吗?没问题-这些只是打包和部署问题。首先获取您希望在POJO中正常工作的行为
Spring可以为您提供很多选择。我推荐它。鉴于servlet和web服务都是J2EE规范的一部分,我不能100%确定您在这里要问什么。。。整个事情听起来有点像“HTML的额外开销会导致我的网站性能明显下降吗?与什么相比??有什么要求?这不是一个经过深思熟虑的问题。Servlets是J2EE的一部分……这可能措辞不恰当,但实际上提出了一个很好的问题。实现web服务至少有两种JEE方法,一种是通过servlet公开的POJO,另一种是可以公开web服务接口的EJB。两者都有好处。谢谢奥斯卡,这是关于管理优势的非常好的建议。我同意JEE应用服务器将很好地群集解决方案,但这不是使用它们的唯一原因。通常,Web服务应该是无状态的(或非对话的),因此状态性不是使用JEE的常见驱动因素。我认为,我们将方法级安全性和非琐碎的事务性要求视为实现完整JEE EJB解决方案的更强大驱动力>
应用程序服务器通常需要更长的启动时间
——快进3年,现在应用程序服务器的启动时间大约与之相同。JBossAS7、GlassfishV3、TomEE和Resin都需要一两秒钟的时间。甚至WebLogic现在也只有几秒钟;)“…如果您的web服务可能需要任何程度的“企业”功能,如按方法安全性或事务使用EJB…”-如果您使用的是Spring,则根本不正确。你可以在没有EJB的情况下做这两件事,甚至更多。是的,关于Spring你是对的。您是否同意,从技术上讲,我们可以使用开箱即用的JEE、POJO、servlets来实现Web服务——但对于某些需求,我们可以从Spring中获益?诸如按方法安全性和事务之类的东西会是这样的两个需求吗?现在的EJB几乎都是POJO,POJO+一些注释,它们可以同时具有RMI和Web服务接口。使用Spring(或EJB3;-)之类的工具是一个很好的建议。开放EJB使得在没有WebLogic或WebSphere的情况下运行它们成为可能,但我还是更喜欢Spring。谢谢,我喜欢你的建议,即先从POJO开始,然后再考虑web服务器包。这听起来是一个很棒的计划,很高兴听到将它打包成不同的容器不会太痛苦;他们对其他任何事情都没有反应。这是不正确的-servlet作为一种技术不与任何特定协议绑定。尽管在实践中,大多数servlet用于服务HTTP。