gpt4 book ai didi

java - 查找后从数据源获取 JNDI 名称

转载 作者:行者123 更新时间:2023-11-30 06:15:30 24 4
gpt4 key购买 nike

我想要实现的是从 DataSource 对象获取字符串形式的 JNDI 名称。

我有以下代码来获取数据源:

Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/comp/env/dataPool");

我的weblogic-ejb-jar.xml其中设置了JNDI名称:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-ejb-jar xmlns="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar http://xmlns.oracle.com/weblogic/weblogic-ejb-jar/1.6/weblogic-ejb-jar.xsd">
<weblogic-enterprise-bean>
<ejb-name>AdminBean</ejb-name>
<stateless-session-descriptor></stateless-session-descriptor>
<resource-description>
<res-ref-name>dataPool</res-ref-name>
<jndi-name>jdbc/CARGAS</jndi-name>
</resource-description>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

所以,当我得到 ds 对象时,实际上我可以看到 JndiNames,但我找不到从中取出它的方法:

As you can see

我的第一个猜测是做类似 ds.getJndiNames 的事情,但我只有以下选项:

enter image description here

有什么想法吗?

最佳答案

好的!

所以最后我使用反射来实现我想要的。

这是我的解决方案:

public String getJndiName() {
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/comp/env/dataPool");
Method method = ds.getClass().getMethod("getJNDINames");
String[] jndi = (String[])method.invoke(ds);
return jndi[0];
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

希望它将来对其他人有帮助:-)

关于java - 查找后从数据源获取 JNDI 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49300871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com