外部访问JNDI容器内的JDBC数据源
来源:互联网 发布:急需网络兼职工作 编辑:程序博客网 时间:2024/05/15 04:41
Jboss的数据源配置如下:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>oracleDS</jndi-name>
<use-java-context>false</use-java-context>
<connection-url>jdbc:oracle:thin:@xxx.xxxx.xxx.xxx:1521:xxxx</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>dpd</user-name>
<password>dpd</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>Oracle10g</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>oracleDS</jndi-name>
<use-java-context>false</use-java-context>
<connection-url>jdbc:oracle:thin:@xxx.xxxx.xxx.xxx:1521:xxxx</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>dpd</user-name>
<password>dpd</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>Oracle10g</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
关键处在于添加use-java-context元素,其它的与普通的连接池配置没有区别; 但是要注意, 加了这个选项后,在jboss内部就不能使用这个jndi对象了
测试代码:
view plaincopy to clipboardprint?
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class TestJNDI {
private Context getInitialContext() throws NamingException {
Hashtable<String, String> environment = new Hashtable<String, String>();
environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
//environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming.client ");
environment.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099");
return new InitialContext(environment);
}
public Connection getConnection(String dataSourceName) {
try {
Context ctx = getInitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup(dataSourceName);
if(ds == null){
return null;
}
return ds.getConnection();
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestJNDI test = new TestJNDI();
Connection conn = test.getConnection("java:oracleDS");
if(conn != null){
System.out.println("success");
try {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from dtc_insurance_order where biz_order_id=1693");
String result;
ResultSetMetaData rsmd = rs.getMetaData();
while(rs.next()){
for(int i = 1; i <= rsmd.getColumnCount(); i++)
System.out.println("column " + i + "=" + rs.getObject(i));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("closed");
}else{
System.out.println("failed");
}
}
}
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class TestJNDI {
private Context getInitialContext() throws NamingException {
Hashtable<String, String> environment = new Hashtable<String, String>();
environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
//environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming.client ");
environment.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099");
return new InitialContext(environment);
}
public Connection getConnection(String dataSourceName) {
try {
Context ctx = getInitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup(dataSourceName);
if(ds == null){
return null;
}
return ds.getConnection();
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestJNDI test = new TestJNDI();
Connection conn = test.getConnection("java:oracleDS");
if(conn != null){
System.out.println("success");
try {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from dtc_insurance_order where biz_order_id=1693");
String result;
ResultSetMetaData rsmd = rs.getMetaData();
while(rs.next()){
for(int i = 1; i <= rsmd.getColumnCount(); i++)
System.out.println("column " + i + "=" + rs.getObject(i));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("closed");
}else{
System.out.println("failed");
}
}
}
上面的代码需要加上jboss的客户端库,我也不知道具体是哪些,就把%JBOSS_HOME%/lib目录和%JBOSS_HOME%/server/default/lib目录下所有的包都加到工程里了, 如果这个代码跑在jboss里面当然就更加方便了。
- 外部访问JNDI容器内的JDBC数据源
- 配置JNDI JDBC数据源
- JDBC 数据源及JNDI
- tomcat容器中使用JNDI访问外部openLDAP提供的目录服务
- JNDI 访问WebLogic数据源
- jboss访问外部jndi
- JDBC配置JNDI MySQL数据源
- Tomcat6.0 配置外部数据源(JNDI)
- Tomcat的JNDI数据源
- JNDI 数据源的配置
- Tomcat的JNDI数据源
- Tomcat的JNDI数据源
- JNDI数据源的配置
- JNDI数据源的配置
- JNDI数据源的配置
- JNDI数据源的配置
- JNDI数据源的配置
- JNDI数据源的配置
- poj1691(状态压缩,树型DP)
- Linux文件查找命令find,xargs详述
- Log4net的使用
- 不靠谱的tooltip
- eval用法
- 外部访问JNDI容器内的JDBC数据源
- CSS进阶:详解CSS优先级的读法
- win32声音播放 和 symbain声音播放 的机制 相似
- QPBOC
- epoll_create, epoll_ctl和epoll_wait
- 今天意外发现CSDN博客BUG
- Perl 面向对象编程时 bless()函数的使用
- send
- 树状列出数据库内的文章练习