私のアプリケーションはJDBCデータベースドライバを使用します。私は現在作業しているDB2の場合、jarファイルdb2jcc.jarからこれらをロードします。クラスパスにこのjarを使用すると、すべてが正常であるが、私は代わりに、アプリケーションの設定ファイルにプロパティからjarファイルを見つけるための要件がある - 例えば、プロパティファイル内のクラスパスに基づいてJavaクラスをロード
database.driver=/opt/IBM/db2/V9.5/java/db2jcc.jar
を私は、[OK]のURLClassLoaderを経由してクラスをロードすることができます問題は、こうして作成されたオブジェクトを明示的なDB2XADataSourceとして扱う必要があることです。たとえば、次のように
URLClassLoader dbClassLoader = new URLClassLoader(new URL[]{driverJar});
xaClass = dbClassLoader.loadClass("com.ibm.db2.jcc.DB2XADataSource");
DB2XADataSource dataSource = (DB2XADataSource) xaClass.newInstance();
dataSource.setCurrentSchema(DATABASE_SCHEMA); // <- dataSource has to be a
dataSource.setDatabaseName(DATABASE_NAME); // DB2XADataSource to do this
(再配置と多少名前を変更;のnewInstanceは、その方法の一つである間、私は実際には、このコードを含むクラスのコンストラクタでのloadClassを行います。)
私は私の推測私のクラスをロードしたクラスローダーがキャストを行うためにDB2XADataSourceを見つけようとしているので、クラスローダーが複雑になってしまいましたが、URLクラスローダーはツリーの上にありません。問題は、私が一日働いていなくてはならないと思っています(ここでは英国です)。
アイデア?
ありがとうございました。