You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebLogic 14.1.1.0.0调用10.3.6.0的RMI/EJB兼容性问题求助

问题描述

调用部署在另一台WebLogic服务器上的Remote接口时遇到如下问题:

  1. 初始错误:[Security:090398]Invalid Subject: principals=[
  2. 参考Oracle文档配置两台WebLogic的全局信任后,出现NoClassDefFoundError:
weblogic.utils.NestedException: java.lang.NoClassDefFoundError: com/org/DataType
weblogic.rjvm.RJVMImpl.gotExceptionReceiving(RJVMImpl.java:1269)
weblogic.rjvm.ConnectionManager.gotExceptionReceiving(ConnectionManager.java:1238)
weblogic.rjvm.MsgAbbrevJVMConnection.gotExceptionReceiving(MsgAbbrevJVMConnection.java:629)
weblogic.rjvm.t3.MuxableSocketT3.hasException(MuxableSocketT3.java:687)
weblogic.socket.SocketMuxer.deliverExceptionAndCleanup(SocketMuxer.java:860)
weblogic.socket.SocketMuxer.deliverHasException(SocketMuxer.java:794)
weblogic.socket.NIOSocketMuxer.process(NIOSocketMuxer.java:606)
weblogic.socket.NIOSocketMuxer.processSockets(NIOSocketMuxer.java:563)
weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:30)
weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:43)
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:147)
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:119)

Nested Exception/Error:

weblogic.utils.NestedException: java.lang.NoClassDefFoundError: com/org/DataType
weblogic.rjvm.RJVMImpl.gotExceptionReceiving(RJVMImpl.java:1266)
weblogic.rjvm.ConnectionManager.gotExceptionReceiving(ConnectionManager.java:1238)
weblogic.rjvm.MsgAbbrevJVMConnection.gotExceptionReceiving(MsgAbbrevJVMConnection.java:629)
weblogic.rjvm.t3.MuxableSocketT3.hasException(MuxableSocketT3.java:687)
weblogic.socket.SocketMuxer.deliverExceptionAndCleanup(SocketMuxer.java:860)
weblogic.socket.SocketMuxer.deliverHasException(SocketMuxer.java:794)
weblogic.socket.NIOSocketMuxer.process(NIOSocketMuxer.java:606)
weblogic.socket.NIOSocketMuxer.processSockets(NIOSocketMuxer.java:563)
weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:30)
weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:43)
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:147)
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:119)
  1. 排查确认是重复类的JAR包导致NoClassDefFoundError,修复后又再次出现[Security:090398]Invalid Subject: principals=[错误,不清楚缺失哪些配置。
解决方案

针对反复出现的[Security:090398]Invalid Subject错误,结合WebLogic跨服务器调用的信任机制,从以下维度排查修复:

1. 验证全局信任配置的完整性

全局信任需两台服务器配置完全一致,检查以下项:

  • 两台WebLogic的domain_name/config/config.xml中,security-configuration节点的enforce-valid-basic-auth-credentials属性是否设为false(跨服务器信任场景需关闭严格校验)
  • 确认两台服务器使用相同的信任密钥:在WebLogic控制台安全领域 > 我的安全领域 > 凭据中,检查system/trust条目下的密码是否一致;或直接对比config.xml中credential-encrypted字段的值
  • 检查服务器启动参数是否添加-Dweblogic.security.allowCryptoJDefaultJCEVerification=true(部分版本需该参数避免密钥校验失败)

2. 检查调用端的身份传递配置

如果调用需要传递身份信息,需确保:

  • 调用代码中正确使用weblogic.security.Security.runAs(),传入目标服务器认可的主体(Principal)
  • 若使用客户端调用,检查weblogic.properties或wlclient.jar配置是否包含正确信任信息,比如指定weblogic.security.TrustKeyStore=CustomTrust并配置对应密钥库路径

3. 排查类加载与安全配置的冲突

修复重复JAR包时可能误改类加载顺序或安全相关JAR,需:

  • 确认两台服务器的com/org/DataType类所在JAR包完全一致(版本、签名),避免类版本不一致导致信任校验失败
  • 检查WebLogic类加载器优先级:若应用使用自定义类加载器,需确保weblogic.security.*等安全相关类由系统类加载器加载,而非应用类加载器
  • 验证服务器安全策略:在安全领域 > 我的安全领域 > 权限中,确认weblogic.security.net.ConnectionPermission已授予调用端应用或用户

4. 启用安全日志排查细节

开启WebLogic安全调试日志,获取更详细错误信息:

  • 在控制台服务器 > 目标服务器 > 日志 > 调试中,勾选weblogic.security和weblogic.rjvm的调试选项
  • 查看domain_name/servers/server_name/logs/server_name.log中的安全日志,定位具体哪个主体校验失败或信任环节出错

5. 确认跨服务器网络与端口配置

  • 确保两台服务器的T3/T3S端口(默认7001/7002)可正常通信,无防火墙拦截
  • 若使用SSL连接,确认两台服务器的SSL证书已互相导入对方的信任密钥库(trust.jks)

内容的提问来源于stack exchange,提问作者Atif Sheikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:47:16