我在WebLogic中运行了一个Spring应用程序。在我的DAO中,它继承了一个带有返回“javax.sql.DataSource”的方法的基类。我在Spring应用程序上下文中使用“jee:jndi-lookup”间接注入该数据源,以从JNDI获取数据源。当我在调试器中查看它时,它似乎是“weblogic.jdbc.common.internal.RmiDataSource”。
我想知道如何在我的代码中反省数据源,以确定有关我连接的数据库的信息,特别是主机,端口,SID和用户名。有什么方法可以做到吗?
对于某些背景知识,我在我的应用程序中进行了广泛的诊断,以解决数据库连接和查询问题。如果在运行时,我可以从正在使用的数据库连接中内省有关WebLogic数据源的信息,这将非常有用。
正如我所描述的那样,我已经在调试器中确定了实际类型是什么,并且我已经检查了该对象中所有明显的属性以用于投射或反射机会,并且我没有看到任何明显的信息指示,如“主持人“,”“端口”或“SID”。
答案 0 :(得分:0)
我认为你可以使用反射并调用这个类的所有getter方法
这应该会给你一些有用的信息。但根据这个类的名称,
它看起来像是一个内部WebLogic类,并不是真的为此设计的。
不过,你可以用反射做,你甚至可以用反射调用私有的getter方法。
答案 1 :(得分:0)
"对" JEE方法并不关心代码中的这些低级细节。在找出哪些DataSource不起作用后,故障排除问题仅涉及应用程序服务器日志和应用程序服务器配置调整。
从DataSource详细信息中隔离应用程序有几个很好的理由: