weblogic.management.DeploymentException: [HTTP Session:100039]Replicated HTTP sessions specified for

本文记录了一次在WebLogic服务器上部署hrcbOA应用时遇到的问题及解决方案。问题表现为应用程序初始化失败,错误日志显示与集群会话复制设置有关。最终通过修改weblogic.xml文件中会话持久化类型从replicated为memory解决了问题。
<2015-4-3 上午08时30分18秒 CST> <Error> <Deployer> <BEA-149205> <Failed to initialize the application 'hrcbOA' due to error weblogic.application.ModuleException
: Failed to load webapp: 'hrcbOA'.
weblogic.application.ModuleException: Failed to load webapp: 'hrcbOA'
        at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:395)
        at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:180)
        at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
        at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:518)
        at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
        Truncated. see log file for complete stacktrace
Caused By: weblogic.management.DeploymentException: [HTTP Session:100039]Replicated HTTP sessions specified for webapp: hrcbOA, but clustering not enabled.
        at weblogic.servlet.internal.session.SessionContext.getInstance(SessionContext.java:244)
        at weblogic.servlet.internal.WebAppServletContext.initSessionContext(WebAppServletContext.java:1238)
        at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletContext.java:453)
        at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletContext.java:497)
        at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:418)

        Truncated. see log file for complete stacktrace



后面终于发现了错误的原因, 这个错误的原因在于weblogic.xml身上,
weblogic.xm里面的
<session-descriptor>
<session-param>
<param-name>PersistentStoreType</param-name>
<param-value>replicated</param-value>
</session-param>
</session-descriptor>


  把 replicated 改为 memory 就解决了。

在此感谢lin49940写下的博文,以此为念.

### WebLogic部署时解决ClassNotFoundException问题 在WebLogic环境中,当遇到`ClassNotFoundException`异常,特别是与`org.eclipse.jetty.util.component.Container$Listener`相关时,通常表明应用或其依赖库中存在类加载冲突或缺失。以下是详细分析和解决方案[^1]。 #### 1. 异常原因 `ClassNotFoundException`通常发生在运行时,表示JVM无法找到指定的类。对于`org.eclipse.jetty.util.component.Container$Listener`,可能的原因包括: - 应用程序的类路径中缺少Jetty相关的JAR文件。 - WebLogic自带的类加载器优先加载了与其冲突的类版本。 - 部署的应用程序中包含重复的Jetty库版本,导致类加载冲突。 #### 2. 解决方案 以下是几种常见的解决方法: ##### 2.1 检查应用程序中的Jetty依赖 确保应用程序中包含Jetty的相关依赖,并且版本与WebLogic兼容。如果使用Maven构建项目,可以检查`pom.xml`文件中的依赖项: ```xml <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> <version>9.4.43.v20210629</version> <!-- 确保版本兼容 --> </dependency> ``` 如果版本不兼容,可能会导致类加载失败[^2]。 ##### 2.2 调整WebLogic类加载顺序 WebLogic允许通过`weblogic.xml`配置文件调整类加载顺序。将`prefer-application-packages`元素添加到`weblogic.xml`中,确保应用程序的Jetty库优先加载: ```xml <container-descriptor> <prefer-application-packages> <package-name>org.eclipse.jetty.*</package-name> </prefer-application-packages> </container-descriptor> ``` 这一步可以避免WebLogic自带的Jetty库与应用程序中的Jetty库发生冲突[^3]。 ##### 2.3 检查WebLogic自带Jetty库 某些版本的WebLogic可能自带Jetty库,但这些库可能不是最新版本。如果确认WebLogic自带Jetty库导致冲突,可以通过以下方式解决: - 移除应用程序中的Jetty库,完全依赖WebLogic自带的库。 - 或者,禁用WebLogic自带的Jetty库(如果支持)。 ##### 2.4 清理临时文件和重新部署 有时,缓存的类文件可能导致问题。清理WebLogic的临时目录并重新部署应用程序: - 删除`<DOMAIN_HOME>/servers/<SERVER_NAME>/tmp`下的所有文件。 - 删除`<DOMAIN_HOME>/servers/<SERVER_NAME>/data/cache`下的所有文件。 - 重新启动WebLogic服务器并重新部署应用程序。 #### 3. 示例代码 以下是一个简单的`weblogic.xml`示例,用于调整类加载顺序: ```xml <?xml version="1.0" encoding="UTF-8"?> <weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"> <container-descriptor> <prefer-application-packages> <package-name>org.eclipse.jetty.*</package-name> </prefer-application-packages> </container-descriptor> </weblogic-web-app> ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值