首页 > 解决方案 > 在建立数据源连接之前获取 URL 值

问题描述

给定一个上下文文件:

    <?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/scum">
    <Resource name="jdbc/MyApp"
              auth="Container"
              type="javax.sql.DataSource"
              username="username"
              password="password"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://mysql.server.com:8080/DB"
              validationQuery="select 1"
              maxActive="20"
              maxIdle="2"/>
</Context>

我可以使用以下代码获取资源的 url:

Context xmlContext = (Context) ic.lookup("java:comp/env");            
DataSource dataSource = (DataSource) xmlContext.lookup("jdbc/MyApp");
Connection connection = dataSource.getConnection();
String url = connection.getMetaData().getURL();

但是,如果连接失败,则没有元数据,不幸的是,没有 url。如何在不连接数据源的情况下获取 url?

标签: javaxmljndi

解决方案


DataSource只是一个界面,你什么都得不到。因此,您可以调试DataSource以检查它实际上是什么实现类。


推荐阅读