众所周知,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使用率达到5866%,稳坐第一。
相较2014年,Tomcat使用率大幅增长,增长将近19%。
整体而言,Tomcat做为Servlet和Jsp规范的参考实现(Reference implementation , 简称RI),一般都会在第一时间实现规范的新特性并通过Oracle的CTS 测试认证。目前最新的Tomcat 90,虽还是alpha版,但已经实现了Servlet 40草案,感兴趣的朋友,可以下载尝鲜哦!
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目录中有一个serverxml文件,你打开它瞄两眼看看,是不是发现serverxml文件中已经包含了上述的几个名称。
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。
11 Session
服务器集群通常 *** 纵两种session:
1 Stickysessions: 尽量让同一个客户请求由同一台服务器来处理,这样 sticky sessions 就是 存在于单机服务器中接受客户端请求的 session,它不需要进行 Session 复制,如果这个 单机失败的话,用户必须重新登录网站。
2 Replicatedsessions: 在一台服务器中的 session 状态被复制到集群的其他服务器上,无论 何时,只要 session 改变了,session 数据都要重新全部或部分(依据复制策略)被复制 到其他服务器上。
Tomcat 支持以下三种 session 持久性类型:
1 内存复制:在 JVM 内存中复制 session状态,使用 Tomcat自带的 SimpleTcpCluster 和SimpleTcpClusterManager类。
2 数据库持久性:在这种类型中,session 状态保存在一个关系数据库中,服务器使用orgapachecatalinasessionJDBCManager类从数据库中获取 Session 信息。
3 基于文件的持久性:这里使用类orgapachecatalinasessionFileManager 把session 状态保存到一个文件系统。
Session Manager
Tomcat 通过 orgapachecatalinaManager 来管理 Session,Manager 接口总是和 Context Container 相关联。它主要负责 session 的建立、更新和销毁。该接口中一些重要的方法有:
用户在 Servlet 中通过 javaxservlet>1、语法:必须比较熟悉,在写代码的时候,IDE(Integrated Development Environment,集成开发环境)的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误,并且知道任何修正。
2、命令:必须熟悉JDK(Java Development Kit,Java开发工具箱——JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。)带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、HtmlConverter、jar、 java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解。
3、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
4、API(Application Programming Interface,应用程序编程接口):Java的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用Java,包括:
◆javalang包下的80%以上的类的功能的灵活运用。
◆javautil包下的80%以上的类的灵活运用,特别是集合类体系、规则表达式、zip、以及时间、随机数、属性、资源和Timer
◆javaio包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
◆javamath包下的100%的内容。
◆javanet包下的60%以上的内容,对各个类的功能比较熟悉。
◆javatext包下的60%以上的内容,特别是各种格式化类。
◆熟练运用JDBC 80%、javasecurity包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java
◆AWT的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、打印。
◆Swing的基本内容,和AWT的要求类似。
◆XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
5、测试:Junit测试是程序员测试,即所谓白盒测试。一位合格的Java开发工程师必须熟悉使用junit编写测试用例完成代码的自动测试。
6、管理:必须熟悉使用Ant(中文译为蚂蚁,是一种基于Java的build工具。)完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。
7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
8、思想:必须掌握OOP(Object Oriented Programming,面向对象编程)的主要要求,这样使用Java开发的系统才能是真正的Java系统。
9、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。
10、博学:掌握J2EE 、Oracle 、WebLogic、Jboss、Spring、Struts、Hibernate 等流行技术,掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)