如何通过IIS的httpPlatformHandler优雅启停TomEE并部署新WAR包?
问题与解决方案:通过IIS httpPlatformHandler管理TomEE启停及部署
环境信息
- Windows Server 2016
- 安装httpPlatformHandler v1.2模块的IIS 10
- TomEE 9.1.1 MicroProfile,路径:
C:\tomee\apache-tomee-9.1.1-microprofile - JDK 11.0.18,路径:
C:\tomee\jdk-11.0.18+10 - 主IIS ASP.Net应用访问地址:
https://myserver.mydomain.tld/main/ - 已部署的MyApp.war访问地址:
https://myserver.mydomain.tld/myapp/ - 应用别名:
myapp,物理路径:C:\tomee\iis_virtual_directory
当前配置
web.config文件(位于C:\tomee\iis_virtual_directory)
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="httpplatformhandler" path="myapp/*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/> </handlers> <httpPlatform processPath="C:\tomee\apache-tomee-9.1.1-microprofile\\bin\startup.bat" arguments="start" stdoutLogEnabled="true" stdoutLogFile="C:\tomee\iis_virtual_directory\log.txt"> <environmentVariables> <environmentVariable name="JRE_HOME" value="C:\tomee\jdk-11.0.18+10" /> <environmentVariable name="CATALINA_HOME" value="C:\tomee\apache-tomee-9.1.1-microprofile" /> <environmentVariable name="CATALINA_OPTS" value="-Dport.http=%HTTP_PLATFORM_PORT%" /> </environmentVariables> </httpPlatform> </system.webServer> </configuration>
TomEE server.xml修改部分
<Server port="-1" shutdown="SHUTDOWN"> <Connector port="${port.http}" protocol="HTTP/1.1">
问题
在尽可能不重启整个IIS服务器的情况下,启停或重启TomEE服务器的最佳/最简洁方式是什么?另外,希望通过将新WAR包粘贴到webapps文件夹来部署新版本,但应用池回收似乎不起作用,必须删除应用文件夹才能完成真正的部署。
解决方案
一、TomEE启停/重启方法(无需重启IIS)
回收对应应用池
- 打开IIS管理器,找到
myapp虚拟目录关联的应用池 - 右键选择回收,httpPlatformHandler会自动终止当前TomEE进程并重新启动新进程,这是最简便的操作方式。
- 打开IIS管理器,找到
手动控制TomEE进程
- 打开任务管理器,找到TomEE对应的Java进程(可通过路径或命令行参数识别)
- 结束该进程后,httpPlatformHandler会检测到进程退出,自动重启TomEE;若需手动启动,直接运行
C:\tomee\apache-tomee-9.1.1-microprofile\bin\startup.bat即可。
修改web.config触发重启
- 对
C:\tomee\iis_virtual_directory下的web.config做微小修改(比如添加空格后保存),IIS检测到配置变更后,会重启httpPlatformHandler关联的TomEE进程。
- 对
二、WAR包自动部署问题解决
开启TomEE热部署
- 编辑TomEE的
conf/tomee.xml,添加或修改<Deployments>节点:<Deployments dir="webapps" deployOnStartup="true" deployNew="true" redeployOnChange="true" /> - 该配置会让TomEE自动检测webapps目录下的新WAR包或已有WAR的变更,完成自动部署。
- 编辑TomEE的
确保应用池权限与回收生效
- 替换WAR包后执行应用池回收,TomEE重启时会重新扫描webapps目录加载新包;若仍未生效,检查IIS应用池身份对webapps目录是否有读写权限。
禁用资源缓存
- 若存在缓存问题,在TomEE的
conf/context.xml中添加以下配置,强制加载最新内容:<Resources cachingAllowed="false" cacheMaxSize="0" />
- 若存在缓存问题,在TomEE的
内容的提问来源于stack exchange,提问作者Cyril
相关产品推荐
相关产品推荐

