Weblogic:重启后丢失更改

问题描述

我对WebLogic服务器有一个奇怪的问题:我丢失了创建多重资源(JMS队列,数据库池等)时创建的最后一个项目。

环境:

  • WebLogic Server版本:12.2.1.4.0
  • 系统:Oracle Linux Server 7.8(在Docker中)
  • Java:Java版本“ 1.8.0_231”,Java(TM)SE运行时环境 (内部版本1.8.0_231-b11),Java HotSpot(TM)64位服务器VM(内部版本 25.231-b11,混合模式)
  • Weblogic配置:仅管理服务器,无托管服务器。

执行我执行的步骤:

  1. 登录到Docker容器。
  2. 使用./startWebLogic.sh命令启动WebLogic Admin服务器
  3. 我通过WLST脚本创建了多个WebLogic资源。脚本完成后,我可以在Web控制台上看到所有内容
  4. 使用./stopWebLogic.sh weblogic weblogic12 t3://localhost:7001命令停止服务器
  5. 再次启动管理服务器
  6. 我之前所做的所有更改都完全丢失了

这是我看到的:

  • 如果在停止服务器之前(在上面的步骤3之后),我从控制台创建了虚拟资源(不管是什么,池,持久性存储,JMS等),那么我只会丢失最后一个虚拟资源项目,而我使用WLST创建的其余项目仍然保留。
  • 如果我从控制台创建2个资源(无关紧要),那么我总是丢失最后一个项目。
  • 如果在重新启动2之后仍在控制台中创建3个东西,则3rt将丢失。
  • 重新启动后通过WL Web控制台删除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

link to the reference post

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...