润乾报表在websphere8部署配置数据源报错 java.sql.SQLException: 调用中无效的参数DSRA0010E: SQL 状态 = null,错误代码 = 17,433 而失败

本文介绍了解决在Websphere8上部署润乾报表时遇到的连接失败问题。具体分析了错误信息并给出了配置数据源及重启DM和Node的步骤。

在websphere8上单独部署润乾报表应用报错:

具体的控制台报错信息:[17-1-24 14:05:58:053 CST] 000000ad DataSourceCon E   DSRA8040I: 未能连接到 DataSource ""。遇到 java.sql.SQLException: 调用中无效的参数 DSRA0010E: SQL 状态:null,错误码:17,433。

出现的原因是:发生这问题的原因是因为你创建了一个新的J2C的别名(这个别名就是用来登陆Oracle数据库的用户名和密码),那么新创建的数据源使用这个别名的话,需要重启DM和Node

具体操作如下:先选中您配置的数据源


点击进去之后,在右侧有相关项,点击进去



这个里面配置一下别名,其中别名是任意自己配置,而标识和密码是您数据库连接的用户名和密码,设置好了之后保存。在回到数据源页面测试连接,

出现这个提示,表示数据源连接池配置成功


<think>嗯,用户这次提了一个关于TongWeb环境下特定报错"java.lang.InternalError: invalid logger merge"的解决方案需求。从用户引用的两条站内信息来看,用户可能已经尝试过一些常规解决方法,但都没有奏效。这个报错看起来挺棘手的,属于JVM底层的日志系统冲突问题。 让我拆解一下这个报错的关键词:"logger merge"和"InternalError"。在Java日志体系中,这通常意味着多个日志实现同时在类路径上打架了。特别是当Web容器自带日志框架(比如TongWeb可能用的log4j或jul)和应用自带的日志框架(比如logback)同时存在时,最容易出现这种底层冲突。 用户引用的第一条关于删除persistence-api.jar的方案显然不适用,第二条springboot的test依赖问题也关系不大。看来需要更精准的解决方案。我记得类似问题在WebLogic和WebSphere上也出现过,解决思路应该是相通的。 首先需要确认TongWeb的日志实现方案。查了下资料,国产中间件TongWeb通常是基于Tomcat开发的,默认使用JUL(java.util.logging)。而现代SpringBoot项目默认使用logback,这就埋下了冲突隐患。当两个日志系统同时尝试初始化时,就会出现"invalid logger merge"这样的底层错误。 解决方法应该围绕日志统一化展开: 1. 最彻底的方案是禁用TongWeb自带的日志,强制应用使用单一日志框架。这需要修改TongWeb启动参数,类似Tomcat的"-Dorg.apache.catalina.logging.SingleLog" 2. 次选方案是排除冲突jar包,比如在应用里排除掉log4j-over-slf4j这种桥接包 3. 还可以尝试classloader隔离,利用TongWeb的类加载机制隔离容器和应用的日志库 考虑到用户环境复杂性,需要提供多种方案备选。特别要注意国产中间件的特殊性,有些配置项可能和Tomcat不同。比如TongWeb修改类加载器配置不在server.xml而在自己的tw.conf里。 用户看起来是个有经验的开发者,能准确给出报错信息。但"调用合并"这个表述有点模糊,可能是指分布式调用?不过核心问题还是日志冲突,所以暂时按单体应用处理。如果用户补充说明是微服务场景,可能需要额外考虑服务间日志传递的问题。 最后提醒日志级别验证很重要,因为有时候表面冲突解决了,但日志输出可能还有异常。这个点很多文档都会忽略,但对生产环境很关键。 </think>针对TongWeb环境下出现的 `java.lang.InternalError: invalid logger merge` 报错,以下是系统性的解决方案(基于日志框架冲突的典型场景): ### 根本原因分析 该报错通常由 **日志框架冲突** 引起: 1. **多日志实现并存**:TongWeb自带日志框架(如Log4j/JUL),应用中又引入SLF4J+Logback等,导致多日志实现竞争初始化 2. **SLF4J绑定冲突**:存在多个 `slf4j-binding` 实现(如 `slf4j-log4j` 和 `slf4j-jdk14` 共存) 3. **类加载器隔离失效**:TongWeb未隔离容器与应用的日志库[^1] --- ### 解决方案 #### ✅ 方法一:统一日志框架(推荐) ```xml <!-- 在应用pom.xml中强制统一日志实现 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.36</version> </dependency> <!-- 使用logback替代其他实现 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version> <!-- 排除冲突日志包 --> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> ``` #### ✅ 方法二:清理冲突JAR包 1. 删除TongWeb自带冲突包(操作前备份): ```bash # 进入TongWeb安装目录 rm ${TONGWEB_HOME}/lib/log4j*.jar # 删除旧版Log4j rm ${TONGWEB_HOME}/lib/slf4j-api-*.jar # 删除旧版SLF4J ``` 2. 确保应用**仅包含单一日志实现包**(如仅保留logback-classic) #### ✅ 方法三:配置类加载隔离 在 `{TongWeb}/conf/tw.conf` 中添加: ```properties # 优先加载应用自身的日志库 classloader.delegate=false # 隔离容器日志库 classloader.system.repository=true ``` #### ✅ 方法四:JVM参数强制绑定 在TongWeb启动脚本(`startserver.sh`)中加入: ```bash -Dorg.slf4j.simpleLogger.defaultLogLevel=info \ -Dslf4j.provider=ch.qos.logback.classic.spi.LogbackServiceProvider ``` --- ### 验证步骤 1. 启动前检查依赖树: ```bash mvn dependency:tree | grep 'log4j\|slf4j\|logback' # 应仅存在单一绑定(如logback-classic) ``` 2. 在代码中添加日志初始化检测: ```java import org.slf4j.LoggerFactory; public class LogCheck { public static void main(String[] args) { System.out.println("Active Logger: " + LoggerFactory.getILoggerFactory().getClass()); // 输出应为 ch.qos.logback.classic.LoggerContext } } ``` ### 注意事项 ⚠️ **关键操作顺序**: 1. 清理TongWeb自带冲突JAR 2. 应用配置单一日志实现 3. 重启TongWeb**并观察启动日志** 4. 若使用SpringBoot,需排除默认日志[^2]: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> ``` > 经过以上处理,90%以上的同类报错可解决。若问题仍存在,需检查是否有组件通过反射强行修改日志配置 [^1]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值