Weblogic Console Fails to Start Managed Servers With<BEA-000286> <Failed to invoke startup class

本文解决了一个关于NodeManager在启动WebLogic Server托管服务器时遇到的问题,该问题源于未能正确加载JRF相关的库。通过修改nodemanager.properties文件中的'StartScriptEnabled'属性,可以确保从正确的路径调用启动脚本。

在启动NodeManager的时候报这个错误:

####<Nov 22, 2011 5:48:40 PM CST> <Info> <JMX> <WN7X64-92ZL3Q1> <osb_server1> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1321955320743> <BEA-149512> <JMX Connector Server started at service:jmx:iiop://localhost:8011/jndi/weblogic.management.mbeanservers.runtime .>
####<Nov 22, 2011 5:48:40 PM CST> <Critical> <WebLogicServer> <WN7X64-92ZL3Q1> <osb_server1> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1321955320758> <BEA-000286> <Failed to invoke startup class "JRF Startup Class", java.lang.ClassNotFoundException: oracle.jrf.wls.JRFStartup
java.lang.ClassNotFoundException: oracle.jrf.wls.JRFStartup
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClass(ClassDeploymentManager.java:262)
at weblogic.management.deploy.classdeployment.ClassDeploymentManager.access$000(ClassDeploymentManager.java:54)
at weblogic.management.deploy.classdeployment.ClassDeploymentManager$1.run(ClassDeploymentManager.java:214)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.jav

a:120)
at weblogic.management.deploy.classdeployment.ClassDeploymentManager.invokeClassDeployment(ClassDeploymentManager.java:207)
at weblogic.management.deploy.classdeployment.ClassDeploymentManager.runStartupsBeforeAppDeployments(ClassDeploymentManager.java:149)
at weblogic.management.deploy.classdeployment.ClassDeploymentService.start(ClassDeploymentService.java:20)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)

问题描述:

Cause

When starting WLS managed servers from the Admin Console, the startManagedWebLogic script is invoked via node manager.

If <$Middleware_Home>/wlserver_10.3/common/nodemanager/nodemanager.properties
does not contain the value 'StartScriptEnabled=true' then the startManagedWebLogic script is called from the WLS home (from <$Middleware_Home>wlserver_10.3/common/bin). This version of the startManagedWebLogic script does not contain any references to the JRF libraries, hence the start failure.

If <$Middleware_Home>/wlserver_10.3/common/nodemanager/nodemanager.properties
contains the value 'StartScriptEnabled=true' then the startManagedWebLogic script is called from
<$Domain_Location>/bin. This version correctly sets the environment to load the JRF-related libraries.

In early Fusion Middleware (FMW) 11g versions, including 11.1.1.1.0, 'StartScriptEnabled=true' was not set by default in nodemanager.properties.


at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)

解决方法:

在目录:C:\oracle\FusionMW\wlserver_10.3\common\nodemanager

下面找到nodemanager.properties

#Tue Nov 22 17:01:57 CST 2011
DomainsFile=C\:\\oracle\\FusionMW\\WLSERV~1.3\\common\\NODEMA~1\\nodemanager.domains
LogLimit=0
PropertiesVersion=10.3
DomainsDirRemoteSharingEnabled=false
javaHome=C\:\\PROGRA~1\\Java\\JDK16~1.0_2
AuthenticationEnabled=true
NodeManagerHome=C\:\\oracle\\FusionMW\\WLSERV~1.3\\common\\NODEMA~1
JavaHome=C\:\\PROGRA~1\\Java\\JDK16~1.0_2\\jre
LogLevel=INFO
DomainsFileEnabled=true
StartScriptName=startWebLogic.cmd
ListenAddress=
NativeVersionEnabled=true
ListenPort=5556
LogToStderr=true
SecureListener=true
LogCount=1
DomainRegistrationEnabled=false
StopScriptEnabled=false
QuitEnabled=false
LogAppend=true
StateCheckInterval=500
CrashRecoveryEnabled=false
StartScriptEnabled=true 默认为false
LogFile=C\:\\oracle\\FusionMW\\WLSERV~1.3\\common\\NODEMA~1\\nodemanager.log
LogFormatter=weblogic.nodemanager.server.LogFormatter
ListenBacklog=50

### WebLogic服务器强制关闭的原因分析 WebLogic Server 的日志显示 `<BEA-000388>` 错误表明 Java 虚拟机 (JVM) 已经触发了一个关闭钩子,这意味着服务器即将被迫停止运行[^1]。此错误通常伴随着其他警告或通知消息,例如: - **<BEA-000396>**: 表明服务器的关闭是由 `<WLS Kernel>` 请求的。 - **<BEA-000365>**: 显示服务器状态已更改为 `FORCE_SUSPENDING`。 这些日志条目共同指出了一个明确的事实:WebLogic 服务正在经历一种计划外的中断过程[^2]。 #### 可能的原因 以下是可能导致此类问题的一些常见因素: 1. **外部信号干扰** 如果操作系统向 JVM 发送了某些信号(如 SIGTERM 或 SIGKILL),则可能引发强制关闭行为。通过 `-Xrs` 参数可以减少因意外信号而导致的 JVM 关闭风险[^4]。 2. **启动脚本中的配置不当** 启动脚本中未正确处理后台执行命令的情况也可能导致问题。例如,缺少 `nohup` 命令会使进程容易受到终端断开的影响而终止[^3]^。 3. **资源耗尽或其他系统级问题** 当硬件资源不足或者存在严重的内存泄漏等问题时,也可能会迫使 JVM 主动请求退出以保护整个系统的稳定性[^5]。 --- ### 解决方案 针对上述提到的各种可能性,下面列出了几种可行的解决办法: #### 方法一:调整 JAVA_OPTIONS 添加 -Xrs 参数 可以通过修改域环境设置文件 (`setDomainEnv.sh`) 中定义的 `JAVA_OPTIONS` 来加入 `-Xrs` 标记。这一改动能够有效防止部分特定类型的 UNIX/Linux 平台信号影响到正常工作的 JVM 实例[^4]。 ```bash export JAVA_OPTIONS="$JAVA_OPTIONS -Xrs" ``` 然而需要注意的是,在实际应用过程中单纯依靠这种方式并不总是奏效;如果仍然遇到相同情况,则需要进一步排查是否存在其他潜在隐患。 #### 方法二:优化启动脚本设计 确保所有涉及长期运行的服务均采用适当的方式启动并保持独立于控制台连接之外的工作模式。具体来说就是在调用 `startManagedWebLogic.sh` 这样的管理节点初始化工具前加上 `nohup` 和重定向标准输出至指定的日志文件路径操作[^3]: ```bash nohup ./startManagedWebLogic.sh SERVERNAME http://HOST:PORT >> SERVERNAME.log & ``` 这样即使原始 SSH session 断开了也不会影响已经分离出来的子进程继续工作下去。 #### 方法三:监控与维护基础设施健康状况 定期审查服务器性能指标以及检查是否有足够的可用计算能力支持当前负载需求非常重要。一旦检测到接近临界阈值的趋势就应该及时采取措施缓解压力源以免发生不可预见崩溃事件[^5]. --- ### 总结 综上所述,当面对类似于 BEA-000388 所描述的现象时可以从多个角度出发寻找根本原因并通过相应手段加以应对。无论是改进基础架构还是完善软件部署流程都能显著提升整体可靠性水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值