技术开发 频道

用GlassFish v2替换Tomcat 5.x

6. 什么是 GlassFish v2 的目录部署?

用Tomcat开发时, JSP/HTML/JS/CSS 等文件, 都是修改后保存, 刷新浏览器就可以使用.为了使 GlassFish v2 达到同样的效果, 需要使用其目录部署(directory deployment)特性.

这个特性不太容易找, 因为使用象GlassFish这样的全功能应用服务器的开发人员,习惯了"编辑、编译、部署、运行"这样的步骤. 一开始, 我按照 Eclipse 3.3 and GlassFish Java EE 5 integration.一文的指引, 发现修改JSP文件后,仍然要经历上面的部署过程. 虽然Eclipse会通过自动检测文件版本的变化, 触发Ant任务实现部署, 但仍然很浪费时间. 我们需要找到跳过"部署"的方法. 在GlassFish官方论坛上发了几个帖子, 答复者的回帖没有起到什么作用, 但通过搜索论坛基本知道这个问题已经得到了解决.

下面的文章引导我朝着正确的方向前进了一大步(非常感谢该文作者):
GlassFish Auto Deployment and Hot Deployment

关于目录部署的详细说明,参见:
Sun Java System Application Server Platform Edition 9.0 Application Deployment Guide
Chapter 1 中 Deployment for Development 一节

7. GlassFish v2 的目录部署实战

第1步: 启动 GlassFish v2.

第2步: 部署 Sample 项目到 GlassFish v2, DOS窗口下执行命令:

其中 GLASS_FISH_HOME 是 GlassFish 的安装目录, 命令执行完毕后,可以看到成功部署信息.

第3步: 打开浏览器, 输入http://localhost:8080/Sample/index.jsp, 看到页面内容.

第4步: 打开浏览器, 输入 http://localhost:8080/Sample/servlet/Sample, 看到页面内容.

8. 体验 GlassFish v2 的热部署特性

第1步: 修改 index.jsp 文件内容, 保存后, 刷新浏览器, 你就能马上看到新的内容.
( http://localhost:8080/Sample/index.jsp)

第2步: 修改 SampleServlet.java, 保存后, 等待片刻, Eclipse 已经自动编译这个类, 但 GlassFish v2 控制台中没有任何提示, 刷新浏览器, 看不到新的内容.
( http://localhost:8080/Sample/servlet/Sample)

第3步: 现在, 在 Sample 项目根目录中创建文件名为".reload"的文件(内容为空).

第4步: 观察GlassFish v2 控制台, 可以看到重新加载信息,刷新浏览器
(http://localhost:8080/Sample/servlet/Sample)

到了新的内容.

第5步: 再次修改 SampleServlet.java 的内容, 保存后, 遇到和第2步同样的问题.

第6步: 再次打开 .reload 文件, 输入任意内容, 然后保存.

第7步: 再次出现与第4步同样的效果.

总结上述操作, GlassFish v2 对于非Java类的加载, 达到了和Tomcat同样的效果, 但Java类的加载, 需要通过 .reload 文件的时间戳来控制. 这种做法对开发有好处, 在调试改错时, 可以修改多个 Java 类文件, 然后让 GlassFish v2 一次加载全部修过的类.

0
相关文章