用 GlassFish v2 替换 Tomcat 5.x
1. 背景
用了很多年的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 的安装目录, 命令执行完毕后,可以看到成功部署信息.
第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 一次加载全部修过的类.
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 v2 可以完全替换 Tomcat 5.x, 在开发中它保留了 Tomcat 好的特性的
同时,给我们带来了强壮的热部署功能, 显著地提高了开发效率.
感谢GlassFish v2, 感谢为之付出心血的Java社区成员, 是他们让我们感受到了技术
进步的喜悦.
分享到:
相关推荐
2. **GlassFish V2.x**:OpenSSO通常部署在GlassFish应用服务器上,因此需要下载并安装GlassFish Server v2.1或更高版本,可以从[https://glassfish.dev.java.net/public/downloadsindex.html]...
- **服务器**:支持多种服务器,如 Apache Tomcat 5.5-6.0、BEA WebLogic 9.1-10.0、Resin 3.1.x、Jetty 6.1.x、Sun Application Server 9 (J5EE)、Glassfish V2/V3、JBoss 4.2.x-5、WebSphere 7.0 或更高版本、...
内容概要:本文详细介绍了参数化重采样时频变换(PRTF)在振动与声音信号故障诊断中的应用。首先通过仿真信号展示PRTF的基本原理,即通过非线性时间轴映射提高时频分辨率,特别是在处理非平稳信号时的优势。接着讨论了PRTF的具体实现步骤,包括重采样、时频分析、坐标系转换等关键技术点。文中还提供了多个实际案例,如齿轮箱故障诊断、压缩机阀片断裂检测、蝙蝠回声定位信号处理等,展示了PRTF在不同应用场景中的灵活性和有效性。此外,文章分享了一些实用经验和技巧,如窗函数选择、抗混叠滤波、多尺度融合等,帮助读者更好地理解和应用PRTF。 适合人群:具备一定MATLAB编程基础和技术背景的信号处理工程师、研究人员。 使用场景及目标:适用于处理非平稳信号,尤其是振动和声音信号的故障诊断。目标是提高时频分辨率,清晰呈现故障特征,从而快速准确定位故障源。同时,也为研究者提供了一种新的信号处理工具,拓展了传统时频分析方法的应用范围。 其他说明:PRTF虽然强大,但在某些情况下并非最佳选择,如处理稳态信号或需要极高频率分辨率的任务。因此,使用者应根据具体情况选择合适的工具。此外,由于PRTF计算量较大,实时性要求较高的场景需考虑硬件加速或其他优化手段。
基于MATLAB的汽车出入库识别系统是一份适用于毕业设计或课程设计的项目,它主要围绕车辆进出仓库的自动识别技术开发。该系统充分利用MATLAB这一强大的数学计算和图形处理软件,实现了汽车识别的核心功能。 项目主要包括以下几个关键部分: 1. **图像采集与预处理**:通过摄像头或传感器捕捉汽车的实时图像,对图像进行预处理,如灰度化、边缘检测或特征提取,提高后续识别的精度。 2. **目标检测与识别**:利用MATLAB的机器视觉工具箱,可能采用了模板匹配、特征点匹配(如SIFT、SURF或HOG)、或者现代的深度学习技术(如卷积神经网络CNN),来识别出汽车的特征。 3. **车牌识别**:针对汽车的车牌进行识别,这通常涉及到字符分割、识别和验证,可能结合了OCR(Optical Character Recognition)技术。 4. **数据分析与管理系统**:收集并分析出入库数据,用于优化仓库管理策略,如实时流量监控、车辆调度等。 5. **文档与代码完整性**:项目不仅提供了完整的工作流程和算法实现,还包含了详尽的README.md文档,以便使用者了解项目的结构和使用方法,以及注意事项。 这个系统的优势在于将理论知识应用到实际场景中,既锻炼了学生的编程能力,也展示了MATLAB在计算机视觉领域的实用性。通过下载和交流,有助于参与者提升自己的技术能力,并推动自动化仓储系统的研发和优化。
# 基于51单片机的密码锁控制器 ## 项目简介 本项目是一个基于51单片机的密码锁控制器,通过结合LCD显示器和键盘,实现了一个简单的密码输入与验证系统。该系统可以用于需要密码保护的应用场景,如门禁系统、保险箱等。用户可以通过键盘输入密码,系统会根据输入的密码进行验证,并通过LED灯显示验证结果。 ## 项目的主要特性和功能 1. LCD显示功能使用LCD显示器实时显示密码输入的相关信息。 2. 密码设置与修改用户可以设置和修改一个4位数字(09)的密码。 3. 超级用户密码系统内置一个超级用户密码“1234”,用于特殊权限操作。 4. 密码验证反馈密码输入正确时,系统会亮绿灯密码输入错误时,系统会亮红灯。 ## 安装使用步骤 ### 前提条件 假设用户已经下载了本项目的源码文件,并具备基本的单片机开发环境(如Keil等)。 ### 步骤 1. 解压源码文件将下载的源码文件解压到本地目录。
# 基于Python和强化学习算法的智能体训练系统 ## 项目简介 本项目是一个基于Python和强化学习算法的智能体训练系统,旨在通过深度学习和策略优化技术,训练智能体在复杂环境中进行决策和行动。项目结合了多种强化学习算法,如TRPO(Trust Region Policy Optimization),并使用了如Pommerman这样的复杂环境进行训练和评估。 ## 项目的主要特性和功能 强化学习算法包括TRPO在内的多种强化学习算法,适用于连续动作空间的强化学习任务。 环境模拟使用Pommerman环境进行智能体的训练和评估,环境包含复杂的棋盘布局和动态变化的炸弹、火焰等元素。 预训练与微调支持预训练模型的加载和微调,加速训练过程。 多模型评估支持多个模型的同时评估,比较不同模型在相同环境下的表现。 状态抽象与特征提取通过状态抽象和特征提取,优化智能体的决策过程。
内容概要:本文档展示了2022年中国制造业上市公司百强企业在不同城市群和城市的分布情况。从城市群角度看,百强企业主要集中在长三角(19家)、粤港澳(16家)和京津冀(11家)三大国家级城市群,这些地区凭借强大的发展基础、完善的产业链和优越的营商环境成为制造业高质量发展的领头羊。从具体城市分布来看,深圳和北京各有10家企业上榜,上海有9家。其中,深圳以比亚迪、中兴等大企业为代表,在营收规模上位居全国第一;北京依托科技和人才优势支持企业发展;上海则在高端制造业特别是集成电路领域处于领先地位。 适合人群:对中国经济地理、制造业发展趋势感兴趣的读者,以及从事相关行业研究的专业人士。 使用场景及目标:①了解中国制造业区域布局和发展趋势;②为政策制定者提供参考依据;③为企业投资决策提供数据支持。 阅读建议:建议重点关注各城市群和城市的具体数据,结合当地产业特色和发展优势进行分析,以便更好地理解中国制造业的空间分布规律及其背后的原因。
房地产营销策划 -湖南涟源博盛生态园年度营销方案.pptx
内容概要:本文详细介绍了利用粒子群算法(PSO)在Matlab中设计宽带消色差超透镜的方法及其FDTD仿真验证。首先,通过定义合理的初始参数范围和适应度函数,将超透镜的纳米结构参数(如纳米柱的直径、高度、周期)作为粒子的位置,采用PSO进行优化。适应度函数结合了预存的相位延迟查找表和实时FDTD仿真结果,确保优化过程中能够高效评估不同结构参数的效果。文中还讨论了惯性权重的动态调整、震荡因子的引入以及适应度函数中物理约束的添加,以提高优化效果并防止陷入局部最优。最终,通过FDTD仿真验证优化结果,展示了在可见光波段内的聚焦效率和焦斑尺寸的改进。 适合人群:从事光学设计、超材料研究、电磁仿真领域的科研人员和技术开发者。 使用场景及目标:适用于需要设计高性能宽带消色差超透镜的研究项目,旨在通过粒子群算法优化超透镜结构参数,减少色差并提高聚焦效率。 其他说明:文中提供了详细的Matlab代码片段和FDTD仿真设置示例,帮助读者更好地理解和实施该方法。此外,强调了在实际应用中需要注意的参数选择和物理约束,以确保设计方案的可行性和有效性。
内容概要:本文详细介绍了利用FLAC 3D软件进行深基坑支护结构的数值模拟方法,特别是针对冠梁、钢支撑和钻孔灌注桩的组合支护结构。文章首先解释了钻孔灌注桩的建模要点,强调了桩土接触面参数设置的重要性。接着讨论了钢支撑的激活时机及其对支护系统的影响,指出合理的开挖步控制可以更好地模拟实际情况。对于冠梁,则着重于其与桩顶的正确耦合方式以及弯矩分布的监测。此外,还分享了一些实用的经验教训和技术细节,如避免常见的建模错误、优化参数选择等。 适合人群:从事岩土工程、地下结构设计的专业人士,尤其是有一定FLAC 3D使用经验的研究人员和工程师。 使用场景及目标:适用于需要精确模拟深基坑开挖过程中支护结构行为的工程项目,旨在提高数值模拟的准确性,为实际施工提供科学依据和支持。 其他说明:文中提供了大量具体的FLAC 3D命令示例和实践经验,有助于读者快速掌握相关技能并在实践中灵活运用。同时提醒读者关注模型验证的重要性,确保模拟结果能够真实反映工程实际状况。
前端铺子开发者 前端杂货铺 小程序在线课堂+工具组件小程序uniapp移动端
Delphi 12.3控件之geniso(CD iso Generator)可启动光盘文件制作器可执行文件.zip
# 基于Arduino的传感器应用项目 ## 项目简介 这是一个基于Arduino开发的项目集合,主要聚焦于传感器应用及相关开发。通过此项目,您将能够了解并实践如何使用Arduino进行硬件编程,以实现对各种传感器的读取和控制。 ## 项目的主要特性和功能 ### 1. 传感器读取 此项目包含多个示例,可以读取不同类型的传感器数据,如温度、湿度、光线、压力等。 ### 2. 实时数据反馈 通过Arduino,项目能够实现实时读取传感器的数据并在某些媒介(如LED灯、LCD显示屏等)上进行反馈。 ### 3. 自动化控制 根据项目需求,可以实现基于传感器数据的自动化控制,例如自动开关灯光、调节风扇速度等。 ## 安装使用步骤 ### 1. 下载源码文件 ### 2. 安装Arduino IDE 确保您的计算机上安装了Arduino IDE,这是编写和上传代码到Arduino设备所必需的。 ### 3. 导入项目文件
房地产活动策划 -2025商业地产脆皮打工人春日养生局(万物回春主题)活动策划方案.pptx
该资源为h5py-3.1.0-cp37-cp37m-manylinux1_x86_64.whl,欢迎下载使用哦!
内容概要:本文详细介绍了利用Comsol软件进行远场涡流检测仿真的方法和技术要点。首先构建了一个二维轴对称模型,模拟了线圈和含缺陷铁磁管道之间的相互作用。文中强调了空气域大小、材料参数设置以及频率选择对检测效果的重要影响。通过调整不同的仿真参数如频率、线圈位置等,探讨了它们对磁场强度和相位变化的影响规律。此外,还分享了一些提高仿真效率的经验,例如合理的网格划分策略和参数化扫描的应用。最后指出远场涡流检测在工业探伤领域的潜在价值,特别是在检测埋地管道内部缺陷方面的优势。 适合人群:从事无损检测、电磁场仿真等相关工作的科研人员和技术工程师。 使用场景及目标:适用于希望深入了解远场涡流检测原理并掌握具体实施步骤的研究者;旨在为实际工程项目提供理论支持和技术指导。 其他说明:文中提供了大量实用的操作技巧和注意事项,有助于读者快速上手并在实践中优化自己的仿真流程。
# 基于STM32F10x微控制器的综合驱动库 ## 项目简介 本项目是一个基于STM32F10x系列微控制器的综合驱动库,旨在为开发者提供一套全面、易于使用的API,用于快速搭建和配置硬件资源,实现高效、稳定的系统功能。项目包含了STM32F10x系列微控制器的基本驱动和常用外设(如GPIO、SPI、Timer、RTC、ADC、CAN、DMA等)的驱动程序。 ## 项目的主要特性和功能 1. 丰富的外设驱动支持支持GPIO、SPI、Timer、RTC、ADC、CAN、DMA等外设的初始化、配置、读写操作和中断处理。 2. 易于使用的API接口提供统一的API接口,简化外设操作和配置,使开发者能够专注于应用程序逻辑开发。 3. 全面的时钟管理功能支持系统时钟、AHB时钟、APB时钟的生成和配置,以及时钟源的选择和配置。 4. 电源管理功能支持低功耗模式、电源检测和备份寄存器访问,帮助实现节能和延长电池寿命。
MACHIN3tools_1.0.1
内容概要:本文详细介绍了丰田功率分流混合动力系统(如普锐斯)的Simulink分析模型及其经济性和动力性仿真的全过程。首先解析了该系统独特的双电机加发动机构型以及行星排耦合机制,接着阐述了Simulink模型的具体构建步骤,包括初始化参数设定、各模块的选择与配置。文中提供了多个代码示例,展示如何模拟不同工况下的动力输出和能耗情况,并强调了模型的高精度和实用性。此外,还探讨了模型的可扩展性和版本兼容性,以及一些关键的技术细节,如行星齿轮参数设定、能量管理模式、能耗计算方法等。 适合人群:从事混合动力技术研发的工程师和技术爱好者,尤其是对丰田THS系统感兴趣的读者。 使用场景及目标:①用于研究和开发新型混合动力系统;②为现有混合动力系统的改进提供参考;③作为教学工具,帮助学生理解和掌握混合动力系统的工作原理和仿真技术。 其他说明:该模型基于MATLAB 2021a版本构建,具有良好的版本兼容性和模块化设计,便于参数调整和功能扩展。同时,模型经过严格的验证,确保仿真结果与实际情况高度一致。
# 基于Vue 3和Element Plus框架的Vite前端快速开发工程 ## 项目简介 本项目是一个基于Vue 3和Element Plus框架的项目模板,运用Vite作为前端开发工具,集成了Vue Composition API、Vue Router等常用技术栈。其目的在于简化前端开发流程,提升开发效率,提供了路由系统、组件自动化加载、状态管理、布局系统、CSS引擎等丰富功能,同时支持国际化、API自动加载,还集成了单元测试、端到端测试以及可视化调试与预览等功能。 ## 项目的主要特性和功能 1. 基于Vue 3和Element Plus构建,具备丰富组件库和UI样式。 2. 采用Vite开发工具,支持快速开发迭代。 3. 基于文件的路由系统,便于页面管理。 4. 组件自动化加载,简化开发流程。 5. 使用Pinia进行状态管理,方便应用状态维护。 6. 布局系统,方便页面布局管理。 7. 支持UnoCSS高性能即时原子化CSS引擎。