背景
用了很多年的Tomcat 无论开发环境还是生产环境 应该说 大家对它还是基本满意的不过 也不是一点问题没有 从开发人员的角度来说 Tomcat主要的缺点就是较弱的热部署(hot deploy)能力 修改一个Java类 保存后 Tomcat会重新加载这个类 但不久就要重新启动Tomcat才能继续开发 在企业关键应用的场景下 若发生急迫的程序缺陷更正 让众多的用户停止手头的工作 等待服务器重新启动 显然十分不便
类似RubyOnRails的技术框架 其方便之处就是脚本语言不要编译 保存后直接可以使用 Java社区显然看到了这个问题 GlassFish v 的热部署能力就是其主要的一个受大家欢迎的特性 这也是我们要用 GlassFish v 替换 Tomcat x 的主要理由
使用环境
本文假设你使用下面所述的开发环境
() JDK 或
() Eclipse IDE for Java EE Developers ( M)
() 使用 comsysdeoeclipsetomcat_ 插件
如果你没有使用 Eclipse Java EE 版本 而是正在使用其他版本 也不影响本文所述的所有操作和效果 只是不能借助Eclipse 启动和停止 GlassFish v 只能自己通过命令行进行操作
有关用 Eclipse Java EE 版本操作 GlassFish v 的详细说明 请参见 Eclipse and GlassFish Java EE integration
下载并安装 GlassFish v
这方面的资料已经很容易从网上找到 比较好的文章如下:
() 在Glassfish上部署web应用
() Glassfish初试
() 从tomcat到glashfish(glassfish的安装启动笔记)
创建 Tomcat 项目
相信你一定也知道如何创建 Tomcat 项目 本文假设你创建的 Tomcat 项目:
() 位于 D:/Sample 目录
() Context name 为 Sample
其他采用默认设置
为测试 GlassFish v 的热部署能力 创建首页JSP和Servlet Java类
第步: 在根目录中创建 indexjsp 文件
第步: 在 WEBINF\src 中 创建一个简单的 servlet 类 SampleServletjava
第步: 配置webxml文件
完整的Sample项目 请参见附件
什么是 GlassFish v 的目录部署?
用Tomcat开发时 JSP/HTML/JS/CSS 等文件 都是修改后保存 刷新浏览器就可以使用为了使 GlassFish v 达到同样的效果 需要使用其目录部署(directory deployment)特性
这个特性不太容易找 因为使用象GlassFish这样的全功能应用服务器的开发人员习惯了编辑编译部署运行这样的步骤 一开始 我按照 Eclipse and GlassFish Java EE integration一文的指引 发现修改JSP文件后仍然要经历上面的部署过程 虽然Eclipse会通过自动检测文件版本的变化 触发Ant任务实现部署 但仍然很浪费时间 我们需要找到跳过部署的方法 在GlassFish官方论坛上发了几个帖子 答复者的回帖没有起到什么作用 但通过搜索论坛基本知道这个问题已经得到了解决
下面的文章引导我朝着正确的方向前进了一大步(非常感谢该文作者):
GlassFish Auto Deployment and Hot Deployment
关于目录部署的详细说明参见:
Sun Java System Application Server Platform Edition Application Deployment Guide
Chapter 中 Deployment for Development 一节
[] []