urlとdriverを指定してDataSourceを初期化する必要があります。 OracleとSQL Serverをサポートするのに十分な汎用性が必要です。両方のための アプリはJBossの提供5.URLとドライバからDataSourceを取得する
上で実行されているサンプル:その簡単やめるよう
<db-connection name="TEST-ORACLE">
<url>jdbc:oracle:thin:@test:1521:ins1</url>
<driver>oracle.jdbc.xa.client.OracleXADataSource</driver>
<user>user</user>
<password>{ENCR}oRloKFKlqXs=</password>
<min-size>5</min-size>
<max-size>30</max-size>
<idle-timeout-minutes>1</idle-timeout-minutes>
</db-connection>
<db-connections>
<db-connection name="TEST-MSSQLSERVER">
<url>jdbc:jtds:sqlserver://server:1433/db;ProgramName=program;SelectMethod=cursor;useLOBs=false</url>
<driver>net.sourceforge.jtds.jdbc.Driver</driver>
<user>user</user>
<password>{ENCR}oRloKFKlqXs=</password>
<min-size>40</min-size>
<max-size>80</max-size>
<idle-timeout-minutes>1</idle-timeout-minutes>
</db-connection>
OracleXADataSourceはintefaceをデータソースを実装している...しかし、十分な一般的なものイムわかりません。私は.....それらの接続にmultipile DB接続およびmultipileインスタンス/スキーマを持っている場合
私の現在のコードは次のようになりますことをachiveする方法であるべきだろうか
EDIT
:
private DataSource getDataSourceForTanent(TenantConfig i_Tenant) {
DataSource result = null;
ClassLoader loader = DBConnector.class.getClassLoader();
try {
Class driverClass = loader.loadClass(i_Tenant.getDriver());
Object driver = driverClass.newInstance();
if(driver instanceof OracleDataSource){
((OracleDataSource)driver).setURL(i_Tenant.getUrl());
((OracleDataSource)driver).setUser(i_Tenant.getUser());
((OracleDataSource)driver).setPassword(i_Tenant.getPassword());
result = (DataSource) driver;
} else if(driver instanceof Driver){
Properties prop = new Properties();
prop.put("user", i_Tenant.getUser());
prop.put("password", i_Tenant.getPassword());
prop.put("min-size", i_Tenant.getMinSize());
prop.put("max-size", i_Tenant.getMaxSize());
prop.put("idle-timeout-minutes", i_Tenant.getIdleTimeoutMinute());
Connection con = ((Driver)driver).connect(i_Tenant.getUrl(), prop);
if(con != null){
//TODO: SQLServer handling
}
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
TenantConfigは、xmlプロパティを保持するJava Beanです。
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/mydatasource");
しかし、あなたのXMLファイルから私はJNDI名が何であるかわからない。ここで
ここでは正確に何を求めていますか? JBossは、JDBCドライバクラスが何であるかを伝えるのであれば、DataSourceを提供する責任があります。何か気にする必要はありません。 –
私は多重接続されたdbを持っており、私はdb接続名を与えられたデータソースを取得する必要があります。そのxmlファイルを使用して、接続されているすべてのdbを構成します。 –
@JBNizet私は私の質問を少しはっきりさせるためにマンネージを願っています –