2 つの異なるデータ ソースを 1 つの MBO に結合しようとしています。sybase のドキュメントには、Java でカスタム結果セット フィルタを開発する必要があると記載されています。Ok。大きな問題ではない。私は JDBC Rowsets にある程度精通しているので、おそらくこれを処理できると思います。そこで、JConnect 7 を入手し、結果セット フィルターで JDBC ドライバーを使用して、接続先の Web サービスから返されたデータ セットをフィルター処理するために使用できる結果セットを取得しようとしています。以下の簡単なテストで接続をテストしました。
try
{
DriverManager.registerDriver((Driver)Class.forName("com.sybase.jdbc4.jdbc.SybDriver").newInstance());
Connection conn = DriverManager.getConnection("jdbc:sybase:Tds:localhost:5500", "dba", "sql");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("Select * from traveler where traveler_id = 1");
while (rs.next())
{
System.out.println(rs.getRow());
}
} catch (Exception se)
{
se.printStackTrace();
}
そのうち、1行カウントが返されます。これは私が期待しているものです。問題は、これと同じコードを ResultSet フィルター クラスに実装し、MBO でプレビューしようとすると、Eclipse デバッグ コンソールに次のエラーが表示されることです (わかりやすくするために要約しています)。
22:14:20 [ERROR] [ExecuteSection]: Execution error
java.lang.reflect.InvocationTargetException...
[...]
Caused by: java.lang.UnsatisfiedLinkError: no dbjodbc11 in java.library.path
これはクラスパスの問題のように見えますが、ビルド パスに Jconnect jar があり、小さなテストが正常に実行されるという事実によって確認されます。これはEclipseの問題ですか..モバイルワークスペースプロジェクトのコードを実行するときに、Eclipseは別のクラスパスを使用していますか?