j2ee服务器有哪些

j2ee服务器有哪些,第1张

j2ee服务器有哪些

众所周知,J2EE应用服务器百花齐放,种类众多。那么J2EE应用服务器有哪些?又有哪些功能呢?一起来看看吧!

从功能实现上划分:

有实现完整J2EE规范(full profile)的Weblogic, WebSphere, GlassFish

有实现web应用规范(web profile)的 TomEE, JBoss/WildFly

有基本的Servlet及Jsp规范的Web容器(Web Container) Tomcat, Jetty, Resin

回顾过去的2015年,各应用服务器市场占有率各有千秋。

下图为各个应用服务器使用率饼图

我们看到,在众多J2EE应用服务器中,Tomcat使用率达到58.66%,稳坐第一。

相较2014年,Tomcat使用率大幅增长,增长将近19%。

整体而言,Tomcat做为Servlet和Jsp规范的参考实现(Reference implementation , 简称RI),一般都会在第一时间实现规范的新特性并通过Oracle的CTS 测试认证。目前最新的Tomcat 9.0,虽还是alpha版,但已经实现了Servlet 4.0草案,感兴趣的朋友,可以下载尝鲜哦!

Tomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且开源免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。学习JavaWeb开发一般都使用Tomcat服务器,该服务器支持全部JSP以及Servlet规范,启动界面如图:

 

Tomcat 是一款非常优秀的 Java Web 服务器,以致于很多开源 Java 应用服务器(如 JOnAS) 直接集成它作为 servlet 容器。

Tomcat的总体结构

Tomcat中主要涉及Server,Service,Engine,Connector,Host,Context组件,之前用过Tomcat的童鞋是不是觉得这些组件的名称有点似曾相识的赶脚,没赶脚?!您再想想。好吧,不用你想了,我来告诉你吧。其实在Tomcat二进制分发包解压后,在conf目录中有一个server.xml文件,你打开它瞄两眼看看,是不是发现server.xml文件中已经包含了上述的几个名称。

Tomcat 集群源码的类图

从图中我们可以看出 Tomcat 集群包括以下几个方面的内容:

Session: Session 分为 StandardSession 与ClusterSession 两种,后者用于 Session 复制。

Session Manager: 有用于集群 Session 管理的ClusterSession,也有用于对 Session 进行一般日常管理的,如 PersistentManager,BackupManager,SimpleTcpReplicationManager。

组通迅框架:SessionManager调用组通讯框架进行 Session 的.传输,Tomcat采用的组通

讯框架是 tribe,目前 tribe 已被独立为开放的 apache 工程。

Cluster: 方便集群管理而派生出的逻辑概念,可将实际物理机划分为一个 Cluster,也可 将一台物理机上不同端口的实例划分为一个 Cluster,它有一个简单的实现类 SimpleTcpCluster。

1.1 Session

服务器集群通常操纵两种session:

1. Stickysessions: 尽量让同一个客户请求由同一台服务器来处理,这样 sticky sessions 就是 存在于单机服务器中接受客户端请求的 session,它不需要进行 Session 复制,如果这个 单机失败的话,用户必须重新登录网站。

2. Replicatedsessions: 在一台服务器中的 session 状态被复制到集群的其他服务器上,无论 何时,只要 session 改变了,session 数据都要重新全部或部分(依据复制策略)被复制 到其他服务器上。

Tomcat 支持以下三种 session 持久性类型:

1. 内存复制:在 JVM 内存中复制 session状态,使用 Tomcat自带的 SimpleTcpCluster 和SimpleTcpClusterManager类。

2. 数据库持久性:在这种类型中,session 状态保存在一个关系数据库中,服务器使用org.apache.catalina.session.JDBCManager类从数据库中获取 Session 信息。

3. 基于文件的持久性:这里使用类org.apache.catalina.session.FileManager 把session 状态保存到一个文件系统。

Session Manager

Tomcat 通过 org.apache.catalina.Manager 来管理 Session,Manager 接口总是和 Context Container 相关联。它主要负责 session 的建立、更新和销毁。该接口中一些重要的方法有:

用户在 Servlet 中通过 javax.servlet.http.HttpServletRequest 接口的 getSession 方法获得 Session,而该接口的实现位于 org.apache.catalina.connector.Request 类中的 doGetSession 方 法中,在该方法中通过 org.apache.catalina.Manager 来获得 Session , doGetSession 方法的 部分代码如下:

组通讯框架--Tribe

组通讯框架 Tribe 在 Tomcat 中的位置可如下图

如图所示,Tribe 的核心主要是 Channel 类,由此看出,它采用 NIO 进行 Socket 通讯,运用

了组播,事件、心跳检测等技术,下面我们来着重看看代码中 Tomcat 是如何与 Tribe 衍接首先在 SimpleTcpReplication 类中的实现 Manager 接口的 start 方法中:

Cluster

Cluster 用于管理集群中的 Session 复制,它有一个简单的实现类 SimpleTcpCluster。

你自己的服务器么?

如果不是你就要把你的程序打包成 war包。。放到tomcat的webapp目录。就会自动部署了吧。

或者你把你tomcat/webapp/里面的项目整个传到服务器的tomcat/webapp目录

J2EE包括哪些技术

J2EE是使用Java技术开发企业级应用的工业标准,它是Java技术不断适应和促进企业级应用过程中的产物。适用于企业级应用的J2EE,提供一个平台湾搞独立立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE是一个标准,而不是一个现成的产品。

主要包括以下这些技术:

1)Servlet

Servlet是Java平台上的CGI技术。Servlet在服务器端运行,动态地生成Web页面。与传统的CGI和许多其它类似CGI的技术相比,Java Servlet具有更高的效率并更容易使用。对于Servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。

2)JSP

JSP(Java Server Page)是一种实现普通静态HTML和动态页面输出混合编码的技术。从这一点来看,非常类似Microsoft ASP、PHP等技术。借助形式上的.内容和外观表现的分离,Web页面制作的任务可以比较方便地划分给页面设计人员和程序员,并方便地通过JSP来合成。在运行时态,JSP将会被首先转换成Servlet,并以Servlet的形态编译运行,因此它的效率和功能与Servlet相比没有差别,一样具有很高的效率。

3) EJB

EJB定义了一组可重用的组件:Enterprise Beans。开发人员可以利用这些组件,像搭积木一样建立分布式应用。

4)JDBC

JDBC(JavaDatabase Connectivity,Java数据库连接)API是一个标准SQL(Structured Query Language,结构化查询语言)数据库访问接口,它使数据库开发人员能够用标准Java API编写数据库应用程序。JDBC API主要用来连接数据库和直接调用SQL命令执行各种SQL语句。利用JDBC API可以执行一般的SQL语句、动态SQL语句及带IN和OUT参数的存储过程。Java中的JDBC相当于Microsoft平台中的ODBC(Open Database Connectivity)。

对于开发分层的好处在于:

(1)降低耦合,通过接口规范的方式访问,提高效率和共享效率,以及对于调用层不需要知道底层实现就可以很好的进行切割。

分层:分为代码级别的分层和服务器级别的分层。

代码级别的分层好处在于降低耦合,上层依赖下层,通过接口访问下层,不需要知道接口实现。

服务器级别的分层,在于增强上层的负载能力,避免在同一服务器下由于服务层某一服务相对比较消耗资源而占用资源过多,导致其他的请求等待执行,导致相应比较慢。通过web层访问服务层服务器,从而把占用资源比较多的服务放到独立服务器,从而提高web层的访问效率。有的web访问业务很简单,很快就能相应,而又的比较慢,可能都不需要访问服务层,或服务层通过集群负责的方式调用服务层,大大提升访问效率。

举例按照代web->service->dao三层访问,架构演变

(1)部署的在服务器Server-A中,action直接在同一虚拟机中调用service就ok了。

如果Server-A最大支持100的并发请求,那么如果10个用户提交生成订单并扣款并生成镜像图片文件,比较消耗资源,占用CPU98%,而此时其他的90个登陆请求访问服务器,而此时,由于CPU占用资源过多,那么就会导致另外的90个请求在等待,那么效率此时执行的10个请求完成,那么给用户带来的体验就十分差。

(2)此时会考虑再增加web服务器,但用户访问并发量上来后,那么又会带来同样的问题

(3)发现提交订单的业务比较占用资源,那么就把该占用资源的服务层,分离到单独的应用服务器中,通过SOA方式调用服务,

(4)这样web应用服务器能够比较快的处理客户端请求响应,而占用资源的则单独服务放到单独服务器中执行,把webserver中的占用资源压力分流到单独的应用服务器中。同时服务层的服务器也可以采用集群的方式来响应服务。

好处:

降低web应用服务器中比较占用资源消耗的时间片。

增强web应用服务器层的访问吞吐量。

服务层独立出去可以更好的提供服务,可以通过集群的方式提供服务,增加吞吐量

可以大大增强系统的稳定性和安全、效率。

web层通过集群,服务层通过集群等等好处。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/350277.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-08
下一篇2023-05-08

发表评论

登录后才能评论

评论列表(0条)

    保存