是否可以在不重新启动服务器的情况下在远程 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 上重新加载数据

如何在不使用 artisan 的情况下在远程 ubuntu 服务器上连接 Laravel 7.12 项目的数据库

如何在不重新编译的情况下在 .NET 中动态切换 Web 服务地址?