技术分享

Java中一些常见的服务器

Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问。开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的Web服务器。

0x01:jetty
        Jetty是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。在做基于Maven的Java项目开发时,常用Jetty来运行。
特点
  • 轻量级:Jetty体积小巧,占用系统资源较少。

  • 易嵌入性:Jetty既可以像tomcat一样独立运行,也可以很方便的嵌入到工具、框架或其他应用服务器中运行。Jetty在设计之 初就是作为一个可以嵌入到其他的Java代码中的servlet容器而设计的,因此开发小组将Jetty作为一组Jar文件提供出来,可以非常方便的在自 己的容器中将Jetty实例化成一个对象并操纵该容器对象。

  • 灵活性:Jetty的体系架构及其面向接口的设计实现了功能模块高度可插拔和可扩展的特性,可以非常方便的根据需要来配置Jetty启用的功能。

  • 稳定性:Jetty运行速度较快,即使有大量服务请求并发的情况下,系统性能也能保持在一个可以接受的状态。


0x02:Tomcat
目前最为流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet 技术的Web服务器。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
特点
  • 部署简单:与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(WebArchive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:只需将你的WAR放到Tomcat的Webapp目录下,Tomcat会自动检测到这个文件,并将其解压。另外Tomcat也提供了一个应用管理器,通过这个应用,辅助于Ftp,可以在远程通过Web部署和撤销应用,当然本地也可以。可见一个Web应用在Tomcat中的部署与管理都是如此的简单方便。Tomcat短小精悍,配置方便,能满足实际的需求,这种情况下自然会选择Tomcat。

  • 安全管理:Tomcat提供Realm支持。Realm类似于Unix里面的group。在Unix中,一个group对应着系统的一定资源,某个group不能访问不属于它的资源。Tomcat用Realm将不同的运用(类似系统资源)赋给不同的用户(类似group)。没有权限的用户则不能访问这个应用。Tomcat提供三种Realm:JDBCRealm:这个Realm将用户信息存在数据库里,通过JDBC获得用户信息来进行验证; JNDIRealm:用户信息存在基于LDAP的服务器里,通过JNDI获取用户信息;MemoryRealm:用户信息存在一个xml文件里面,验证用户时即使用此种Realm。通过Realm可以方便地对访问某个应用的客户进行验证。在Tomcat中,还可以利用Servlet2.3提供的事件监听器功能,来对应用程序或者Session实行监听,进行身份权限控制。Tomcat也提供其他的一些特征,如与SSL集成到一块,实现安全传输。

  • 易操作:基于Tomcat的开发其实主要是JSP和Servlet的开发,开发JSP和Servlet非常简单,可以用普通的文本编辑器或者IDE,然后将其打包成WAR即可。这里要提到另外一个工具Ant,Ant也是Jakarta中的一个子项目,它所实现的功能类似于Unix中的make。只需要写一个build.xml文件,然后运行Ant就可以完成xml文件中定义的工作,这个工具对于一个大的应用来说非常好,只需在xml中写很少的东西就可以将其编译并打包成WAR。事实上,在很多应用服务器的发布中都包含了Ant。另外,在JSP 1.2中,可以利用标签库实现Java代码与HTML文件的分离,使JSP的维护更方便。

  • 集成方便:Tomcat也可以与其他一些软件集成起来实现更多的功能。如与JBoss集成起来开发EJB,与Cocoon(Apache的另外一个项目)集成起来开发基于XML的应用,与OpenJMS集成起来开发JMS应用。除了提到的这几种外,可以与Tomcat集成的软件还有很多。 Tomcat目前已经被许多软件集成,例如Eclipse、IDEA等IDE软件,它们能够方便地集成Tomcat的各种版本。这些IDE软件在开发中能够自由的配置指向Tomcat的安装路径,可以随意选择Tomcat的不同安装版本,在开发环境中即可嵌入Tomcat运行环境,进行集成调试。这时的Tomcat就好比一个插件,即插即用,十分方便。


0x03:JBoss
JBoss是全世界开发者共同努力的成果,一个基于J2EE的开放源代码的应用服务器。因为JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用它,而不用支付费用。2006年,Jboss公司被Redhat公司收购。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
特点
  • JBoss是免费的,开放源代码J2EE的实现,通过LGPL许可证进行发布。但同时也有闭源的,开源和闭源流入流出的不是同一途径。

  • JBoss需要的内存和硬盘空间比较小。

  • 安装便捷:解压后,只需配置一些环境变量即可。

  • JBoss支持"热部署",部署BEAN时,只拷贝BEAN的JAR文件到部署路径下即可自动加载它;如果有改动,也会自动更新。

  • JBoss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。

  • 用户可以直接实施J2EE-EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。

  • Jboss支持集群。


0x04:WebSphere
   WebSphere是IBM公司的产品,可进一步细分为 WebSphere Performance Pack、Cache Manager 和WebSphere Application Server等系列,其中WebSphere Application Server 是基于Java 的应用环境,可以运行于 Sun Solaris、Windows NT 等多种操作系统平台,用于建立、部署和管理Internet和Intranet Web应用程序。
特点
  • 基于Java和Servlets的Web应用程序运行环境,包含了为Web站点提供服务所需的一切,包括项目管理,连接数据库,Java Servlet代码生成器,beans和servlets开发工具,HTML编辑器,网站发布等,为开发Servlets和Javabeans提供了多种向导。 WebSphere Performance Pack作为网络优化管理工具,可以减少网络服务器的拥挤现象,扩大容量,提高Web服务器性能。

  • 运 行 时 可 以 协 同 并 扩 展Apache、Netscape、 IIS 和IBM 的HTTPWeb服务器,因此可以成为强大的Web应用服务器。

  • 包含了eNetworkDispatcher、WebTrafficeExpress代理服务器和AFS分布式文件系统,可以提供可伸缩的Web服务器环境。 其基本工作过程: 客户发出请求后,由HttpServer将Servlet调用请求交给Application Server,由Application Server 和Java Servlet Engine 执 行 用 户 调 用 的Servlet 进 行数据库连接,将Sql请求 发送给数据库进行处理。数据库将结果返回Appliction Server。Servlet生成动态页面后,将 处理结果交给HttpServer。HttpServer将页面返回给用户。 Websphere由于面向专业人员,要完全掌握有一定的难度。 另外,Websphere本身有2G多的容量,需要256M以上内存支持,系统要求很高。 如果有兴趣可访问ibm的software站点。


0x05: WebLogic 服务器
  WebLogic 是BEA公司的产品,可进一步细分为 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中 WebLogic Server 的功能特别强大。WebLogic 支持企业级的、多层次的和完全分布式的Web应用,并且服务器的配置简单、界面友好。对于那些正在寻求能够提供Java平台所拥有的一切应用服务器的用户来说,WebLogic是一个十分理想的选择。
特点
  • 标准:对业内多种标准的全面支持,包括EJB、JSP、JMS、JDBC、XML(标准通用标记语言的子集)和WML,使Web应用系统的实施更为简单,并且保护了投资,同时也使基于标准的解决方案的开发更加简便。

  • 可扩展性:WebLogic Server以其高扩展的架构体系闻名于业内,包括客户机连接的共享、资源pooling以及动态网页和EJB组件群集。

  • 快速开发:凭借对EJB和JSP的支持,以及WebLogic Server 的Servlet组件架 构体系,可加速投放市场速度。这些开放性标准与WebGain Studio配合时,可简化开发,并可发挥已有的技能,迅速部署应用系统。

  • 更趋灵活:WebLogic Server的特点是与领先数据库、操作系统和Web服务器紧密集成。

  • 可靠性:其容错、系统管理和安全性能已经在全球数以千计的关键任务环境中得以验证。

  • 体系结构:WebLogic Server是专门为企业电子商务应用系统开发的。企业电子商务应用系统需要快速开发,并要求服务器端组件具有良好的灵活性和安全性,同时还要支持关键任务所必需的扩展、性能、和高可用性。WebLogic Server简化了可移植及可扩展的应用系统的开发,并为其它应用 系统和系统提供了丰富的互操作性;凭借其出色的群集技术,WebLogic Server拥有最高水平的可扩展 性和可用性。BEA WebLogic Server既实现了网页群集,也实现了EJB组件 群集,而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错,如Web购物车;组件群集则处理复杂的复制、负载平衡和EJB组件容错,以及状态对象(如EJB实体)的恢复;无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。共享的客户机/服务器和数据库连接以及数据缓存和EJB都增强了性能表现。这是其它Web应用系统所不具备的。


      虽然J2EE容器众多,但是一般的项目中Jetty和Tomcat使用的最多的容器。只要掌握这两种容器的使用就已经能够满足日常的95%以上的需要。而WebSphere和WebLogic一般只有银行系统才会使用到,小编在这么长时间的工作中只偶尔一次机会接触过WebLogic。