开发者

java read JDBC connection from XML file

Anyone have idea how can i write XMl file that i will have JDBC connection (username, passwd, driver, connection) in it and the开发者_开发知识库n read that xml for connecting to db?


Here's how you could compose the XML:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <jdbc>
        <url>jdbc:mysql://localhost:3306/javabase</url>
        <driver>com.mysql.jdbc.Driver</driver>
        <username>java</username>
        <password>d$7hF_r!9Y</password>
    </jdbc>
</config>

Assuming that it's called config.xml and is been placed in the root of the classpath, here's an example how you could load it with help of JAXP and Xpath:

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.xml");
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(input));
XPath xpath = XPathFactory.newInstance().newXPath();
String url = (String) xpath.compile("//config//jdbc//url").evaluate(document, XPathConstants.STRING);
String driver = (String) xpath.compile("//config//jdbc//driver").evaluate(document, XPathConstants.STRING);
String username = (String) xpath.compile("//config//jdbc//username").evaluate(document, XPathConstants.STRING);
String password = (String) xpath.compile("//config//jdbc//password").evaluate(document, XPathConstants.STRING);
// ...

It's only pretty verbose as opposed to properties files. Here's an example of such a properties file:

jdbc.url = jdbc:mysql://localhost:3306/javabase
jdbc.driver = com.mysql.jdbc.Driver
jdbc.username = java
jdbc.password = d$7hF_r!9Y

Assuming that it's named config.properties and is been placed in the root of the classpath (or its root path is been added to the classpath), here's how you could load it from the classpath:

Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties"));
String url = properties.getProperty("jdbc.url");
String driver = properties.getProperty("jdbc.driver");
String username = properties.getProperty("jdbc.username");
String password = properties.getProperty("jdbc.password");
// ...


Take a look at commons-configuration. You can read multiple configuration formats with it.

That said, for database connection properties the a simple key-value .properties file is better, I think.


You could define your own XML schema, bind it to a Java bean, and parse it through JAXB. Then, you just have to invoke the getters of your bean to build your connection.


I often use the Spring Framework to externalize the configuration of a connection pool and setup of the jdbc URL.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜