2017-09-12 1 views
0

Tout cela est si nouveau pour moi et un peu complexe. J'ai créé un projet de plug-in dans Eclipse avec un framework OSGi standard. Le but est de se connecter à H2 DB avec ce bundle. Voici le Activator.java: package dbservice;Comment utiliser mon plug-in Java Eclipse OSGi dans un autre projet?

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..."); 
} 

} 

Je lance ce projet dans un environnement OSGi. Ça marche là-bas. Mais ma question est, comment puis-je utiliser ce bundle dans un autre projet?

Répondre

0

La question est ce que vous voulez vraiment fournir à d'autres ensembles. Si vous souhaitez fournir un moyen générique d'accéder à une base de données, vous pouvez fournir un DataSource. Dans ce cas, je recommande d'utiliser pax-jdbc-config car il fait tout le levage de charges lourdes pour vous.

Une autre option est Aries transactioncontrol, qui est même un peu plus facile à utiliser mais rend votre code utilisateur dépendant de l'API de contrôle des transactions.

Si vous voulez fournir quelque chose de plus haut niveau, alors un service est le meilleur choix. Créez une interface pour votre service et implémentez l'interface dans votre bundle. Ensuite, exportez simplement l'objet en tant que service OSGi. D'autres bundles peuvent ensuite prendre le service. Je recommande d'utiliser des services déclaratifs pour offrir et consommer des services. Voir this example.

+0

Je ne travaille pas avec Maven, j'ai seulement Eclipse pour l'instant. Pour être franc, je n'ai pratiquement aucune idée de ce que vous venez de suggérer. J'ai réussi à exporter mon projet OSGi en tant que plugin, il a produit les fichiers jar et les fichiers nécessaires. Mais je n'ai aucune idée de comment les intégrer à mon projet principal. – oksuzlerOmer

+0

Je suggère fortement d'utiliser un système de construction. Eclipse seul n'est pas un bon environnement de construction. Prenez le temps de regarder dans les exemples. –