JNDI:
JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),这里引用一下来自zhaosg198312的博客中说到的内容:
首先是在JNDI未应用之前的访问数据库的方式:
这种方法的缺点比较明显,就是参数不可动态配置,如数据库地址、用户名、密码等。在应用JNDI的时候,首先可以在JBoss的目录\server\default\deploy下面的文件mysql-ds.xml中配置数据源:
然后就可以在代码中通过下面的方式去引用数据源:
"JNDI在满足了数据源配置的要求的基础上,还进一步扩充了作用:所有与系统外部的资源的引用,都可以通过JNDI定义和引用。"
JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),这里引用一下来自zhaosg198312的博客中说到的内容:
首先是在JNDI未应用之前的访问数据库的方式:
//source:http://blog.youkuaiyun.com/zhaosg198312/archive/2009/03/11/3979435.aspx
Connection conn=null;
try {
Class.forName("com.mysql.jdbc.Driver",
true, Thread.currentThread().getContextClassLoader());
conn=DriverManager.getConnection("jdbc:mysql://MyDBServer?user=qingfeng&password=mingyue");
/* 使用conn并进行SQL操作 */
......
conn.close();
}
catch(Exception e) {
e.printStackTrace();
}
finally {
if(conn!=null) {
try {
conn.close();
} catch(SQLException e) {}
}
}
这种方法的缺点比较明显,就是参数不可动态配置,如数据库地址、用户名、密码等。在应用JNDI的时候,首先可以在JBoss的目录\server\default\deploy下面的文件mysql-ds.xml中配置数据源:
//source:http://blog.youkuaiyun.com/zhaosg198312/archive/2009/03/11/3979435.aspx
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/lw</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>rootpassword</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
然后就可以在代码中通过下面的方式去引用数据源:
//source:http://blog.youkuaiyun.com/zhaosg198312/archive/2009/03/11/3979435.aspx
Connection conn=null;
try {
Context ctx=new InitialContext();
Object datasourceRef=ctx.lookup("java:MySqlDS"); //引用数据源
DataSource ds=(Datasource)datasourceRef;
conn=ds.getConnection();
/* 使用conn进行数据库SQL操作 */
......
c.close();
}
catch(Exception e) {
e.printStackTrace();
}
finally {
if(conn!=null) {
try {
conn.close();
} catch(SQLException e) { }
}
}
"JNDI在满足了数据源配置的要求的基础上,还进一步扩充了作用:所有与系统外部的资源的引用,都可以通过JNDI定义和引用。"