作为 webapp 部署到服务器后更改部分 Java class 代码

Change part of Java class code after deploying to server as webapp

我有一个 Java servlet 网络应用程序 (.war),我将其部署到 Tomcat Ubuntu 服务器。

我可以更改 Java 类 的内容吗:myProject/WEB-INF/classes/
没有 重新导出并部署整个应用程序?

提前致谢。

我可以想到下面的方法来重新部署您的应用程序而无需重新启动 tomcat:

  1. 修改您的 java 文件
  2. 生成.class文件
  3. 将其替换为 Tomcat
  4. 中的现有文件
  5. 通过 touching WEB-INF/web.xml
  6. 触发您的应用重启

免责声明:我不建议这样做,因为它会产生意想不到的结果。我是一个 ware,有时你需要做 "quick-and-dirty" 修复,但考虑一下你自己 warned :)

我假设您有一个 Web 应用程序,我们称它为 'MyApp'。转到 <TOMCAT-DIR>/webapps 并找到您的 MyApp.war 文件。将新的 .class 文件放入 MyApp.war(用一些压缩器打开它),然后删除文件夹 <TOMCAT-DIR>/webapps/MyApp。删除文件夹意味着 Tomcat 的取消部署。一段时间后,Tomcat 会发现它的 <TOMCAT-DIR>/webapps 文件夹中有一个 .war 文件需要部署,它会自动部署。您会在 Tomcat 的日志中看到如下内容:

Aug 25, 2015 9:24:55 AM org.apache.catalina.startup.HostConfig undeploy
INFO: Undeploying context [/MyApp]
Aug 25, 2015 9:24:55 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /home/tomcat/apache-tomcat-7.0.55/webapps/MyApp.war
Aug 25, 2015 9:25:17 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive /home/tomcat/apache-tomcat-7.0.55/webapps/MyApp.war has finished in 21,937 ms

好了,您只是刷新了您的应用程序,没有重新部署也没有重新启动服务器。