是否可以在不重新启动服务器的情况下在远程 weblogic 上重新部署应用程序?
Posted
技术标签:
【中文标题】是否可以在不重新启动服务器的情况下在远程 weblogic 上重新部署应用程序?【英文标题】:Is it possible to redeploy app on remote weblogic without restarting server? 【发布时间】:2021-07-09 16:12:08 【问题描述】:我在 Linux 中运行 weblogic 12.4.2,我的开发环境在 Windows 中。 目前,如果我想重新部署应用程序,我会执行 maven clean install 并使用 ssh 客户端登录 Linux,杀死 weblogic 的进程,将我的 jar 文件复制到域的目录中,然后再次运行 weblogic。 我想要一个工具,可以将 jar 文件复制到服务器中的适当位置并重新部署应用程序,而无需重新启动 weblogic,并且最好不依赖于 IDE。
我发现 weblogic hot deploy 和 fast swap 在 weblogic 上重新部署应用程序而无需重新启动。 和the weblogic.Deployer、管理控制台、wldeploy Ant Task 、WebLogic Scripting Tool 和weblogic maven plugin 在 weblogic 上远程部署应用程序。 我搜索了他们,但我不确定他们中的哪些人可以一起做所有这些事情,他们的优点和缺点是什么。
如果可能,请提供现有工具的比较。 我看到了类似的问题,但他们只关注重新部署而不重新启动或远程部署,我想要两者。
【问题讨论】:
每个应用服务器都可以在不重启服务器的情况下重新部署应用。对于 WLS,它有很好的文档记录 here,包括关于“部署工具”的部分。我认为您在这里无法得到比官方文档更完整的答案。 我在该文档上阅读了有关热部署的信息,但通常如果我替换域中的一些 jar 文件,weblogic 无法识别或重新加载它们。我需要为此做些什么吗? 应用程序通常部署为 .war 或 .ear 文件。您的 .jar 文件应该是这些档案的一部分。重新部署意味着部署整个 .war 或 .ear,包括您的 .jar。 WLS 还支持共享库的部署。但据我所知,这些也部署为 .ear。 【参考方案1】:是的,您可以使用management REST API。
您可以在这里查看how to deploy/redeploy applications上的具体示例。
此 REST API 为您提供了部署应用程序(EAR 和 WAR 文件)并仅使用 curl 工具启动/停止它们的工具。查看一些示例:
# Stops a deployed application
curl -v --user $USER:$PASS \
-H X-Requested-By:MyClient \
-H Accept:application/json \
-H Content-Type:application/json \
-X POST http://localhost:7001/management/weblogic/latest/domainRuntime/deploymentManager/appDeploymentRuntimes/$APP_NAME/stop
# Deploy an application from a file
curl -v --user $USER:$PASS \
-H X-Requested-By:MyClient \
-H Accept:application/json \
-H Content-Type:multipart/form-data \
-F "model=
name: 'basicapp',
targets: [ identity: [ 'clusters' , 'Cluster1' ] ]
" \
-F "sourcePath=@/deployments/BasicApp/app/BasicApp.ear" \
-F "planPath=@/deployments/BasicApp/plan/Plan.xml" \
-H "Prefer:respond-async" \
-X POST http://localhost:7001/management/weblogic/latest/edit/appDeployments
您可以使用 shell 别名和 shell 脚本来自动执行某些操作。
【讨论】:
部署ear后需要重启weblogic吗?管理 REST API 与部署中的 wlst 或 maven 插件等其他工具有什么区别? 使用管理 API 部署应用程序后,您不必重新启动 Weblogic。与您提到的其他工具的主要区别在于您不需要安装任何东西,您可以在任何环境(例如,CI/CD 服务器)中使用管理 API。此外,它很容易与 shell 脚本或 Python 集成。 我将我的应用程序部署为分解存档而不是耳朵存档。我可以只重新部署一些模块并且 weblogic 刷新洞应用程序还是只更改模块? 抱歉,我不知道这些细节 好吧,我觉得这很公平......我已经尽力了,但是,我不是这方面的专家。作为个人说明:我会坚持使用 Maven 插件进行开发(您可以将插件的目标与安装阶段联系起来)并将 Management REST API 用于其他所有内容。希望我的回答对你有所帮助。感谢您的反馈和诚实!以上是关于是否可以在不重新启动服务器的情况下在远程 weblogic 上重新部署应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不重新启动的情况下在 Express 上重新加载一个文件?
如何在不启动模拟器的情况下在 Eclipse 中将 Android 项目编译为 .apk 文件?
是否可以在不重新启动 JSF 中的服务器的情况下更新应用程序?
如何在不重新加载 visibleCell 的情况下在 collectionView 上重新加载数据