2017-09-12 13 views
0

これは私のためにとても新しく、少し複雑です。 Eclipseで標準のOSGiフレームワークを使ってプラグインプロジェクトを作成しました。目的は、このバンドルでH2 DBに接続することです。ここにActivator.javaがあります: パッケージdbservice;別のプロジェクトでEclipse OSGi Javaプラグインを使用するにはどうすればよいですか?

import java.sql.Connection; 
import java.sql.DriverManager; 

import org.osgi.framework.BundleActivator; 
import org.osgi.framework.BundleContext; 

public class Activator implements BundleActivator { 

private static BundleContext context; 
private Connection conn=null; 

static BundleContext getContext() { 
    return context; 
} 


public void start(BundleContext bundleContext) throws Exception { 
    Activator.context = bundleContext; 
    Class.forName("org.h2.Driver"); 
    conn = DriverManager.getConnection("jdbc:h2:~/test","sa","123456"); 
    System.out.print("Connection opened..."); 
} 

public void stop(BundleContext bundleContext) throws Exception { 
    Activator.context = null; 
    conn.close(); 
    System.out.print("Connection closed..."); 
} 

} 

私はOSGiフレームワーク内でこのプロジェクトを実行します。それはそこで働いています。しかし、私の質問は、私はこのバンドルを別のプロジェクトでどのように使うのでしょうか?

答えて

0

質問は本当に他のバンドルに提供したいものです。 データベースにアクセスする一般的な方法を提供する場合は、データソースを提供できます。この場合、私はpax-jdbc-configを使用することをお勧めします。

もう1つのオプションはAries transactioncontrolです。これは少し使いやすく、ユーザーコードはトランザクション制御APIに依存します。

サービスレベルを上げたい場合は、サービスが最適です。サービス用のインターフェイスを作成し、バンドル内にインターフェイスを実装します。次に、オブジェクトをOSGiサービスとしてエクスポートします。他のバンドルがサービスを受け取ることができます。サービスの提供と使用に宣言的なサービスを使用することをお勧めします。 this exampleを参照してください。

+0

私はMavenで作業していません。私は今のところEclipseしか持っていません。率直に言えば、私はあなたがちょうど提案したものをほとんど知らない。 OSGiプロジェクトをプラグインとしてエクスポートすると、jarファイルと必要なファイルが生成されました。しかし、私はそれらを私のメインプロジェクトにどのように統合するのか分かりません。 – oksuzlerOmer

+0

ビルドシステムを使うことを強くお勧めします。 Eclipseだけでは良いビルド環境ではありません。いくつかの例を見てみましょう。 –