Weblogic:重新启动后丢失更改
Weblogic: lose changes after restart
我在使用 WebLogic 服务器时遇到了一个奇怪的问题:我丢失了在创建多个资源(JMS 队列、DB 池等)时创建的最后一个项目。
环境:
- WebLogic 服务器版本:12.2.1.4.0
- 系统:Oracle Linux Server 7.8(在 Docker 中)
- Java: java version "1.8.0_231", Java(TM) SE Runtime Environment
(build 1.8.0_231-b11),Java HotSpot(TM) 64 位服务器 VM(build
25.231-b11,混合模式)
- Weblogic 配置:只有管理服务器,没有托管服务器。
我执行的步骤:
- 登录到 Docker 容器。
- 使用
./startWebLogic.sh
命令启动 WebLogic 管理服务器
- 我通过 WLST 脚本创建了多个 WebLogic 资源。脚本完成后,我可以在 Web 控制台上看到所有内容。
- 使用
./stopWebLogic.sh weblogic weblogic12 t3://localhost:7001
命令停止服务器
- 再次启动管理服务器
- 我之前所做的所有更改完全丢失
我看到的是这样的:
- 如果我在停止服务器之前(在上面的第 3 步之后)从控制台创建一个虚拟资源(不管是什么,池、持久存储、JMS 等),那么我只会丢失最后一个虚拟项目和我用 WLST 创建的其余项目仍然存在。
- 如果我从控制台创建 2 个资源(无关紧要),那么我总是会丢失最后一个项目。
- 如果我在重启后从控制台创建了 3 个东西,2 个仍然存在,第 3 个丢失了。
- 重启后通过 WL Web 控制台删除 2 个条目我可以看到只有一个条目被删除。 2号刚回来
WebLogic 似乎忘记以某种方式“提交”最后一项。
当我在 WL 重新启动之前检查 config.xml
文件时,我可以在那里看到我需要的东西。重新启动后,WL 以某种方式将此文件恢复为预览状态(没有我的最后一项)并且文件的大小刚刚改变。
如果我激活production mode
那么一切都是一样的,我看不出有什么不同。
我认为这个问题与 Docker 无关,因为我没有使用任何 Docker 卷。我在 config.xml
旁边创建的测试文件在容器停止和启动之间持续存在。
这是 WL 错误吗?你见过一样的吗?
更新
我在上面使用的 docker 图像是使用 docker commit
命令从另一个 Docker 容器创建的。前面的 Docker 层包含一些常用资源和已安装的库。以前的图像中不存在此问题。所以似乎在 Docker 从容器创建了一个图像时发生了一些奇怪的事情。
---------------
¦ Oracle Linux¦
---------------
¦
------------------
¦WL with deployed¦ <- docker commit ....
¦ shared libs ¦ this issue does not appear at this level
------------------
¦
------------------
¦Image what I use¦ <- lose changes between docker stop and start
------------------
所以这似乎是一个 Docker 错误或两者兼而有之:Oracle 和 Docker。
以下解决方法解决了该问题:在启动服务器之前从 Weblogic 域主目录中删除 domain_bak
目录。
示例:
echo "starting the WebLogic server..."
rm -Rf $ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/servers/domain_bak/*
$ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh
我在使用 WebLogic 服务器时遇到了一个奇怪的问题:我丢失了在创建多个资源(JMS 队列、DB 池等)时创建的最后一个项目。
环境:
- WebLogic 服务器版本:12.2.1.4.0
- 系统:Oracle Linux Server 7.8(在 Docker 中)
- Java: java version "1.8.0_231", Java(TM) SE Runtime Environment (build 1.8.0_231-b11),Java HotSpot(TM) 64 位服务器 VM(build 25.231-b11,混合模式)
- Weblogic 配置:只有管理服务器,没有托管服务器。
我执行的步骤:
- 登录到 Docker 容器。
- 使用
./startWebLogic.sh
命令启动 WebLogic 管理服务器 - 我通过 WLST 脚本创建了多个 WebLogic 资源。脚本完成后,我可以在 Web 控制台上看到所有内容。
- 使用
./stopWebLogic.sh weblogic weblogic12 t3://localhost:7001
命令停止服务器 - 再次启动管理服务器
- 我之前所做的所有更改完全丢失
我看到的是这样的:
- 如果我在停止服务器之前(在上面的第 3 步之后)从控制台创建一个虚拟资源(不管是什么,池、持久存储、JMS 等),那么我只会丢失最后一个虚拟项目和我用 WLST 创建的其余项目仍然存在。
- 如果我从控制台创建 2 个资源(无关紧要),那么我总是会丢失最后一个项目。
- 如果我在重启后从控制台创建了 3 个东西,2 个仍然存在,第 3 个丢失了。
- 重启后通过 WL Web 控制台删除 2 个条目我可以看到只有一个条目被删除。 2号刚回来
WebLogic 似乎忘记以某种方式“提交”最后一项。
当我在 WL 重新启动之前检查 config.xml
文件时,我可以在那里看到我需要的东西。重新启动后,WL 以某种方式将此文件恢复为预览状态(没有我的最后一项)并且文件的大小刚刚改变。
如果我激活production mode
那么一切都是一样的,我看不出有什么不同。
我认为这个问题与 Docker 无关,因为我没有使用任何 Docker 卷。我在 config.xml
旁边创建的测试文件在容器停止和启动之间持续存在。
这是 WL 错误吗?你见过一样的吗?
更新
我在上面使用的 docker 图像是使用 docker commit
命令从另一个 Docker 容器创建的。前面的 Docker 层包含一些常用资源和已安装的库。以前的图像中不存在此问题。所以似乎在 Docker 从容器创建了一个图像时发生了一些奇怪的事情。
---------------
¦ Oracle Linux¦
---------------
¦
------------------
¦WL with deployed¦ <- docker commit ....
¦ shared libs ¦ this issue does not appear at this level
------------------
¦
------------------
¦Image what I use¦ <- lose changes between docker stop and start
------------------
所以这似乎是一个 Docker 错误或两者兼而有之:Oracle 和 Docker。
以下解决方法解决了该问题:在启动服务器之前从 Weblogic 域主目录中删除 domain_bak
目录。
示例:
echo "starting the WebLogic server..."
rm -Rf $ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/servers/domain_bak/*
$ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh