C'était un peu difficile de lancer la base de données H2 avec Dropwizard et de l'utiliser, j'ai donc décidé de la publier. Le processus consiste à créer un projet Dropwizard dans Eclipse, à créer une classe pour démarrer le serveur H2 et à laisser le cycle de vie de l'environnement de dropwizard gérer cette classe. Ensuite, accédez au serveur H2 démarré avec DB Viewer.
Le logiciel utilisé est le suivant.
Commençons par créer un projet dans Eclipse. Sélectionnez Fichier Eclipse ® Nouveau ® Projet Maven.
Pour le projet Maven, entrez dropwizard dans le filtre et sélectionnez "java-simple" dans "io.dropwizard.archetypes". Si cet élément n'apparaît pas ici, ajoutez-le depuis "Ajouter Architype".
Pour l'ajouter, saisissez-le comme indiqué sur la figure.
Il devrait apparaître dans la liste.
Utilisez le nom de votre choix pour l'ID de groupe de projets et l'ID d'artefact. Le "nom" dans "Propriétés disponibles pour l'archétype" sera utilisé pour le nom de classe de la classe qui sera créée automatiquement ultérieurement. Appuyez sur Terminer pour créer le projet.
Ajoutez le plug-in à pom.xml. Les plugins à ajouter sont: Nom du plugin: Group ID: Artifact ID Listed in order.
Assurez-vous que cela ressemble à la figure ci-dessous.
Créez une classe pour démarrer le serveur H2. Je l'ai créé sous ressources.
Lors de sa création, créez-le comme suit.
Nous ajouterons org.junit.rules.ExternalResource à la superclasse et io.dropwizard.lifecycle.Managed à l'interface. ExternalResource est utile à ajouter lors du test avec JUnit, et l'interface gérée est héritée pour être ajoutée au cycle de vie de l'environnement Dropwizard.
Le code de cette classe est le suivant:
H2ServerResource.java
package hoge.fuga.resources;
import org.h2.tools.Server;
import org.junit.rules.ExternalResource;
import io.dropwizard.lifecycle.Managed;
public class H2ServerResource extends ExternalResource implements Managed {
private Server tcpServer = null;
private Server webConsole = null;
public H2ServerResource() {
//Stub de constructeur généré automatiquement TODO
super();
}
@Override
public void start() throws Exception {
try {
this.before();
} catch (Throwable e) {
//Bloc de capture généré automatiquement TODO
e.printStackTrace();
throw new Exception("Échec du démarrage du serveur H2", e);
}
}
@Override
public void stop() throws Exception {
this.after();
}
@Override
protected void before() throws Throwable {
//Réception de connexion avec TCP et console Web
if (tcpServer == null) {
try {
tcpServer = Server.createTcpServer("-tcpAllowOthers", "-tcpPort", "20020");
webConsole = Server.createWebServer("-webPort", "20010");
tcpServer.start();
webConsole.start();
} catch (Throwable e) {
//Bloc de capture généré automatiquement TODO
e.printStackTrace();
throw new Exception("Échec du démarrage du serveur H2", e);
}
}
}
@Override
protected void after() {
//Arrêt du serveur
tcpServer.shutdown();
webConsole.shutdown();
}
}
Lors de l'héritage de ExternalResource, il est préférable de remplacer avant et après. Ça fait du bien avec JUnit. L'héritage de l'interface gérée nécessite de remplacer le démarrage et l'arrêt. Puisqu'il s'agit du même processus, ils sont appelés de chaque côté. Une chose à noter ici est que Dropwizard appellera start et stop, donc ne créez pas d'instance de Server dans le constructeur. Il génère une erreur car il crée une double instance. De plus, juste au cas où, une vérification nulle est effectuée pour éviter de créer des instances en double. L'argument createTcpServer tcpAllowOthers peut être supprimé s'il n'est accessible qu'à partir de l'hôte local.
Ensuite, modifiez la classe principale créée automatiquement comme suit.
piyoApplication.java
package hoge.fuga;
import hoge.fuga.resources.H2ServerResource;
import io.dropwizard.Application;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
public class piyoApplication extends Application<piyoConfiguration> {
public static void main(final String[] args) throws Exception {
new piyoApplication().run(args);
}
@Override
public String getName() {
return "piyo";
}
@Override
public void initialize(final Bootstrap<piyoConfiguration> bootstrap) {
// TODO: application initialization
}
@Override
public void run(final piyoConfiguration configuration,
final Environment environment) {
// TODO: implement application
H2ServerResource h2serverResource = new H2ServerResource();
environment.lifecycle().manage(h2serverResource);
}
}
Enregistrez une instance de H2ServerResource lors de l'exécution. En regardant le texte d'origine, cela signifie que vous devez l'utiliser pour la connexion DB ou le pool de threads.
Managed Objects
Most applications involve objects which need to be started and stopped: thread pools, database connections, etc. Dropwizard provides the Managed interface for this. You can either have the class in question implement the #start() and #stop() methods, or write a wrapper class which does so. Adding a Managed instance to your application’s Environment ties that object’s lifecycle to that of the application’s HTTP server. Before the server starts, the #start() method is called. After the server has stopped (and after its graceful shutdown period) the #stop() method is called.
C'est tout pour le programme. De là, nous allons commencer le travail de compilation.
Cliquez avec le bouton droit sur le projet et sélectionnez Exécuter ® Exécuter la configuration.
Lorsque la fenêtre Exécuter la configuration s'ouvre, sélectionnez Maven Build et créez-en une nouvelle.
Sélectionnez le dossier du projet dans le répertoire de base, entrez package ou clean package dans l'objectif, appliquez et exécutez. Ensuite, il sera construit.
Cela démarrera le serveur H2. Dropwizard Tools est un plug-in utile pour exécuter Dropwizard.
Ce plug-in remplira automatiquement les arguments requis tels que server et config.yml lors de l'exécution de dropwizard. Une fois installé, ouvrez la configuration de débogage.
Lorsque la fenêtre de configuration de débogage s'ouvre, sélectionnez la classe principale.
Et courir. Dans cet état, vous pouvez accéder à l'accès à la base de données (20020) et ouvrir la console Web (20010) en accédant respectivement aux ports suivants saisis précédemment.
tcpServer = Server.createTcpServer("-tcpAllowOthers", "-tcpPort", "20020");
webConsole = Server.createWebServer("-webPort", "20010");
Accédons à localhost: 20010. La console Web s'ouvre.
Mettons localhost: 20020 dans l'URL JDBC:.
Si vous accédez à partir de la console avec l'URL suivante, h2db.mv.db sera créé dans le dossier du projet.
jdbc:h2:tcp://localhost:20020/./h2db
Revenez à Eclipse et ouvrez-le à partir de DB Viewer. Ouvrez la fenêtre DBViewer et appuyez sur Enregistrer.
Lorsque la fenêtre de définition de la base de données s'ouvre, sélectionnez le pilote h2 dans Ajouter un fichier.
Recherchez-le dans le dossier du référentiel local de maven.
Dans mon environnement, c'était dans le dossier suivant.
%USERPROFILE%\.m2\repository\com\h2database\h2\1.4.196
Appuyez ensuite sur Suivant.
Dans les paramètres des informations de connexion, la chaîne de caractères de connexion a été saisie plus tôt dans la console Web.
jdbc:h2:tcp://localhost:20020/./h2db
Entrer le.
Définissez l'utilisateur de connexion sur "sa" et videz le schéma de connexion.
Assurez-vous ensuite de pouvoir effectuer un test de connexion.
Vous pouvez désormais passer de la création d'un projet avec Dropwizard à la connexion avec DB Viewer.
Recommended Posts