我尝试通过DatabaseSource JNDI查找建立数据库连接。我按照Tomcat网站上的说明操作,如下所示
我将资源添加到context.xml
<Resource name="jdbc/myDB" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:111.111.111.111:1234:DBNME"
username="Dobby" password="pwd" maxActive="20" maxIdle="10" maxWait="-1"/>
的web.xml
<resource-ref>
<description>MY DataBase</description>
<res-ref-name>jdbc/myDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
代码
Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/myDB");
Connection con = ds.getConnection();
如果连接失败,我想显示带有DB URL的错误消息。如何在我的代码
中获取在context.xml中配置的DB URL答案 0 :(得分:1)
正如您在apache示例中所注意到的,有一个名为MyBeanFactory的类。在此类中,您可以从context.xml文件中获取资源。
您需要检查servlet中是否建立了连接。如果未建立连接,则使用setter / getter方法从context.xml获取URL的值,并使用URL显示错误消息。
我用服务器的IP地址做同样的事情并取得了成功。 :d
希望这会有所帮助......
答案 1 :(得分:0)
我不认为这是可能的,你实际上使用JNDI来独立于这些细节,你可以在错误信息中添加的唯一东西就是资源"java:/comp/env/jdbc/myDB"
的名称。执行管理/配置的人将知道此名称所指的女巫数据库详细信息。
通常,应用程序的开发人员只定义资源的名称并将其传递给Appserver-admin。但是在开发时你必须/可能扮演两个角色。
修改强>
如果您打算仅使用界面DataSource。
,这是当然的如果您想要定位特定的DBMS,您可以查看jdbc驱动程序提供的该接口的实现。以下是DataSource的Oralce实现:OracleDataSource,有关它的更多信息here。