`

GlassFish替换Tomcat

    博客分类:
  • Java
阅读更多

1. GlassFish替换Tomcat背景

用了很多年的Tomcat, 无论开发环境还是生产环境, 应该说, 大家对它还是基本满意的.不过, 也不是一点问题没有. 从开发人员的角度来说, Tomcat主要的缺点就是较弱的热部署(hot deploy)能力. 修改一个Java类, 保存后, Tomcat会重新加载这个类, 但不久就要重新启动Tomcat才能继续开发. 在企业关键应用的场景下, 若发生急迫的程序缺陷更正, 让众多的用户停止手头的工作, 等待服务器重新启动, 显然十分不便.

类似RubyOnRails的技术框架, 其方便之处就是脚本语言不要编译, 保存后直接可以使用.Java社区显然看到了这个问题, GlassFish v2 的热部署能力就是其主要的一个受大家欢迎的特性. 这也是我们要用 GlassFish v2 替换 Tomcat 5.x 的主要理由.

2. 使用环境

本文假设你使用下面所述的开发环境.
(1) JDK 1.5 或 1.6
(2) Eclipse IDE for Java EE Developers (3.3.1.1 M20071023-1652)
(3) 使用 com.sysdeo.eclipse.tomcat_3.2.1 插件

如果你没有使用 Eclipse 3.3.1.1 Java EE 版本, 而是正在使用其他版本, 也不影响本文所述的所有操作和效果, 只是不能借助Eclipse 启动和停止 GlassFish v2, 只能自己通过命令行进行操作.

有关用 Eclipse 3.3.1.1 Java EE 版本操作 GlassFish v2 的详细说明, 请参见 Eclipse 3.3 and GlassFish Java EE 5 integration.

3. 下载并安装 GlassFish v2

这方面的资料已经很容易从网上找到, 比较好的文章如下:
(1) 在Glassfish上部署web应用
(2) Glassfish初试
(3) 从tomcat到glashfish(glassfish的安装启动笔记)

4. 创建 Tomcat 项目

相信你一定也知道如何创建 Tomcat 项目. 本文假设你创建的 Tomcat 项目:
(1) 位于 D:/Sample 目录.
(2) Context name 为 Sample.

其他采用默认设置.

5. 为测试 GlassFish v2 的热部署能力, 创建首页JSP和Servlet Java类.

第1步: 在根目录中创建 index.jsp 文件
第2步: 在 WEB-INF\src 中, 创建一个简单的 servlet 类 SampleServlet.java,
第3步: 配置web.xml文件.

完整的Sample项目, 请参见附件.

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/bin/asadmin deploydir D:/Sample

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

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

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

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

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

第4步: 观察GlassFish v2 控制台, 可以看到重新加载信息,刷新浏览器,看到了新的内容.

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

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

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

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

9. 自动化 .reload 文件时间戳刷新

上一节中, 手工打开 .reload 文件, 通过修改其内容刷新其时间戳, 这种做法太麻烦.

在 unix/linux 平台下, 通过命令 touch 刷新 .reload 文件的时间戳. 在 Window 平台, 也有人实现了 touch. 我在 CodeProject 网站找到一个 touch.exe: Touch for Windows - The Code Project - Free Tools,很好用, 并且可以集成到 Eclipse 的工具条按钮中来执行 touch 命令(touch.exe 已经包括在附件中).

第1步: 拷贝下载的 touch.exe 到 Sample 项目根目录.

第2步: 在 Eclipse 下, 选择 Run > External Tools > Open External Tools Dialog.

第3步: 选中左侧 Program 节点, 右击, 选择New菜单项.

第4步: 在右侧出现的对话框中, 填入下面的内容
Name: SampleTouch
Main[页面]
Localtion: ${workspace_loc:/Sample/touch.exe}
Working Directory: ${workspace_loc:/Sample}
Arguments: .reload
Common[页面]
Display in favorites menu: 选中External Tools

保存后, 你可以在Eclipse的Run工具条按钮中看到新创建的项.

10. GlassFish替换Tomcat结语

用 GlassFish v2 可以完全替换 Tomcat 5.x, 在开发中它保留了 Tomcat 好的特性的。同时,给我们带来了强壮的热部署功能, 显著地提高了开发效率.

分享到:
评论

相关推荐

    apache-tomcat-6.0.44

    13. **与其他服务器集成**:虽然Tomcat是轻量级服务器,但可以通过像JBoss、GlassFish这样的全面应用服务器进行集成,以利用更丰富的企业级特性。 通过理解和掌握这些知识点,开发者可以有效地使用Apache Tomcat ...

    tomcat6.zip

    此外,Tomcat还可以与其他应用服务器如Jetty或GlassFish进行比较,以选择最适合特定需求的解决方案。 总之,Apache Tomcat 6是一个强大的Java Web服务器,它的轻量级特性使其成为小型项目和开发环境的理想选择。...

    最新版linux apache-tomcat-9.0.36.tar.gz

    - Tomcat常与其他Java应用服务器如JBoss、GlassFish等集成,以实现更复杂的企业级应用架构。 - 它还可以与Apache HTTP Server通过mod_jk或mod_proxy模块进行反向代理,提升性能和负载均衡能力。 总结来说,Apache...

    apache-tomcat-7.0.108.zip

    6. **热部署**:在Tomcat运行时,可以直接替换或添加新的Web应用,而无需重启服务器。 7. **轻量级**:相比其他完整的Java EE应用服务器,如JBoss、WebLogic,Tomcat更轻量,易于安装和管理,适合小型到中型的Web...

    apache-tomcat-6.0.41.zip

    8. **热部署**:在Tomcat运行时,开发者可以修改或替换Web应用的文件,而无需停止服务器。这一特性加快了开发和测试流程。 9. **可扩展性**:尽管Tomcat本身是轻量级的,但可以通过添加其他Java EE组件(如EJB容器...

    apache-tomcat-7.0.50.tar.gz

    Tomcat相对轻量级,适合小型到中型的应用,因为它不包含完整的Java EE功能,但可以与Java EE全面兼容的服务器(如JBoss或GlassFish)结合使用。 在Linux环境中安装"apache-tomcat-7.0.50.tar.gz"的步骤如下: 1. *...

    tomcat7.0.28

    Tomcat 7.0.28作为轻量级服务器,相比于完整的Java EE应用服务器(如JBoss或GlassFish),它占用资源较少,启动快速,适合小型到中型的Web应用。然而,对于需要完整Java EE特性的大型企业级应用,可能需要选择更全面...

    apache-tomcat-6.0.20.rar

    8. **热部署与更新**:在不重启服务器的情况下,可以在`webapps`目录下替换或添加文件,实现Web应用的热部署和更新。 9. **JNDI(Java Naming and Directory Interface)**:Tomcat支持JNDI,允许应用查找和绑定...

    apache-tomcat6.0.18免安装开发版

    10. **集成其他应用服务器**:虽然Tomcat本身是一个轻量级应用服务器,但它可以与EJB容器(如JBoss、GlassFish)配合,实现完整的Java EE功能。 使用Apache Tomcat 6.0.18免安装开发版,开发者可以在本地快速搭建...

    apache-tomcat-5.5.17

    7. **热部署**:Tomcat支持热部署,这意味着在服务器运行时,可以更新或替换应用程序的文件,而无需停止服务器。 8. **多线程处理**:Tomcat使用线程池模型处理请求,可以根据需要动态调整线程数量,以优化性能和...

    linux apache-tomcat-7.0.22.tar.gz

    升级Tomcat时,需要先停止旧版本,然后替换新的tar.gz文件并重新配置。 通过了解和掌握这些知识点,你可以有效地在Linux环境中安装、配置和管理Apache Tomcat 7.0.22,为你的Java Web应用提供稳定的服务。

    tomcat6.0服务器

    在实际应用中,Tomcat常与其他Java EE应用服务器(如JBoss、GlassFish)或Spring Boot结合使用,以提供更全面的企业级功能。虽然Tomcat 6.0已经不再被官方维护,但对于学习和运行旧版应用仍然有其价值。对于新项目,...

    Eclipse+JDK17+Tomcat10搭建Jersey RESTful的全部依赖!

    在本文中,我们将深入探讨如何使用Eclipse IDE、JDK 17和Tomcat 10来搭建一个基于Jersey实现的RESTful服务。Jersey是Java官方推荐的JAX-RS(Java API for RESTful Web Services)实现,用于创建高效、灵活且可扩展的...

    图解3-Netbeans-Emmet插件安装和测试图解

    4. 对于Glassfish服务器和Tomcat的路径,根据个人需求选择或保持默认。 5. 确认安装设置,然后开始安装过程。 6. 安装完成后,点击"完成"退出安装向导。 **添加Tomcat服务器** 1. 下载Tomcat 9.0.37或更高版本,...

    opensso 安装说明

    8. **配置代理服务器**(可选):如果需要在Tomcat等其他非GlassFish应用服务器上使用OpenSSO,需要安装并配置J2EE Agent。 9. **测试与验证**:部署一个测试应用程序,确保OpenSSO能够正确地处理身份验证请求。 ...

    Java操作Word模板实现动态数据输出

    它内置了GlassFish和Tomcat服务器以及JSF、Struts等多种Web开发框架,非常适合于基于Java平台的Web程序开发。 #### 三、系统目标及运行界面 本系统的主要目标是让用户能够通过下拉列表选择部门数据,然后通过单击...

    JavaEE6 CDI规范的使用1

    CDI并不是一个具体的框架,而是一套标准,大多数JavaEE应用服务器,如WildFly、GlassFish等,都内置了CDI的实现。然而,Tomcat作为一个轻量级的应用服务器,通常并不包含CDI的实现,因此如果要在Tomcat中使用CDI,...

    仿windows 记事本

    8. 服务器部署:项目完成后,需要在J2EE兼容的服务器上部署,如Tomcat或Glassfish。 通过分析压缩包中的文件"仿Window记事本",我们可以进一步了解项目的具体实现细节,包括源代码结构、类设计、方法实现等。源代码...

Global site tag (gtag.js) - Google Analytics