JNDI方式によるデータソースのリモート取得
4492 ワード
データベースのパスワードはすべての人に知られていない場合があります.そのため、JNDIアクセス方式を提供し、符号化者に取得させることができます.一:JBossサーバーに対して、クライアントの取得方式は以下の通りです.
二:異なるアプリケーションサーバーに対して、クライアントは異なる接続方式で、収集整理は以下の通りである.
3:アプリケーション・サーバーの設定方法については、それぞれ異なります.ここでは、JBossの下にあるOracleの設定方法のみがリストされます.
ファイルディレクトリはjbossインストールディレクトリの下:deploy/oracle-ds.xml
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Context ctx = null;
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
p.put(Context.PROVIDER_URL, "jnp://192.168.70.11:1199");
try {
ctx = new InitialContext(p);
// javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/CbsDS");
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("DS");
// NamingEnumeration> list =((Context) ctx.lookup("DS")).listBindings("");
// while (list.hasMore()) {
// Binding b =(Binding)list.next();
// System.out.println(b.getName());
// }
System.out.println(ds==null?"NULL":ds.toString());
try {
Connection connect =ds.getConnection();
Statement st=connect.createStatement();
String sql="select * from *** d ";
ResultSet rs=st.executeQuery(sql);
if(rs.next()) {
System.out.println(rs.getString("username"));
}else {
System.out.println("no data");
}
rs.close();
st.close();
connect.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
二:異なるアプリケーションサーバーに対して、クライアントは異なる接続方式で、収集整理は以下の通りである.
JNDI
WebSphere
Properties properties= new Properties();
properties.put(javax.naming.Context.PROVIDER_URL,"iiop:///"); properties.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,"com.ibm.ejs.ns.jndi.CNInitialContextFactory");
new InitialContext(properties);
JBoss
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
p.put(Context.PROVIDER_URL, "jnp://localhost:1099");
InitialContext ctx = new InitialContext(p);
SUN
Properties props = new Properties();
props.setProperty( "java.naming.factory.initial" ,"com.sun.enterprise.naming.SerialInitContextFactory" );
props.setProperty( "java.naming.provider.url" , "localhost:3700" );
InitialContext = new InitialContext(props);
Weblogic10
Properties props = new Properties();
props.setProperty( "java.naming.factory.initial" , "weblogic.jndi.WLInitialContextFactory" );
props.setProperty( "java.naming.provider.url" , "t3://localhost:7001" );
InitialContext = new InitialContext(props);
3:アプリケーション・サーバーの設定方法については、それぞれ異なります.ここでは、JBossの下にあるOracleの設定方法のみがリストされます.
ファイルディレクトリはjbossインストールディレクトリの下:deploy/oracle-ds.xml
DS
false
jdbc:oracle:thin:@your ip:1521:your servise name
oracle.jdbc.driver.OracleDriver
1
2
org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
your db-domain
Oracle11g