Es war ein wenig schwierig, die H2-Datenbank mit Dropwizard zu starten und zu verwenden, deshalb habe ich beschlossen, sie zu veröffentlichen. Der Ablauf besteht darin, ein Dropwizard-Projekt in Eclipse zu erstellen, eine Klasse zum Starten des H2-Servers zu erstellen und den Umgebungslebenszyklus des Dropwizard diese Klasse verwalten zu lassen. Greifen Sie dann mit DB Viewer auf den gestarteten H2-Server zu.
Die verwendete Software ist wie folgt.
Lassen Sie uns zunächst ein Projekt in Eclipse erstellen. Wählen Sie Eclipse File ® New ® Maven Project.
Geben Sie für das Maven-Projekt den Dropwizard in den Filter ein und wählen Sie "java-simple" unter "io.dropwizard.archetypes". Wenn dieses Element hier nicht angezeigt wird, fügen Sie es unter "Architype hinzufügen" hinzu.
Geben Sie es wie in der Abbildung gezeigt ein, um es hinzuzufügen.
Es sollte in der Liste erscheinen.
Verwenden Sie einen beliebigen Namen für die Projektgruppen-ID und die Artefakt-ID. Der "Name" in "Eigenschaften für Archetyp verfügbar" wird für den Klassennamen der Klasse verwendet, der später automatisch erstellt wird. Klicken Sie auf Fertig stellen, um das Projekt zu erstellen.
Fügen Sie das Plug-In zu pom.xml hinzu. Die hinzuzufügenden Plugins sind: Plugin-Name: Gruppen-ID: Artefakt-ID In der angegebenen Reihenfolge aufgelistet.
Stellen Sie sicher, dass es wie in der Abbildung unten aussieht.
Erstellen Sie eine Klasse, um den H2-Server zu starten. Ich habe es unter Ressourcen erstellt.
Erstellen Sie es beim Erstellen wie folgt.
Wir werden org.junit.rules.ExternalResource zur Oberklasse und io.dropwizard.lifecycle.Managed zur Schnittstelle hinzufügen. ExternalResource ist nützlich, um beim Testen mit JUnit hinzuzufügen, und die verwaltete Schnittstelle wird zur Hinzufügung zum Lebenszyklus der Dropwizard-Umgebung vererbt.
Der Code für diese Klasse lautet wie folgt:
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() {
//TODO automatisch generierter Konstruktor-Stub
super();
}
@Override
public void start() throws Exception {
try {
this.before();
} catch (Throwable e) {
//TODO automatisch generierter Fangblock
e.printStackTrace();
throw new Exception("Fehler beim Starten des H2-Servers", e);
}
}
@Override
public void stop() throws Exception {
this.after();
}
@Override
protected void before() throws Throwable {
//Verbindungsempfang mit TCP und Webkonsole
if (tcpServer == null) {
try {
tcpServer = Server.createTcpServer("-tcpAllowOthers", "-tcpPort", "20020");
webConsole = Server.createWebServer("-webPort", "20010");
tcpServer.start();
webConsole.start();
} catch (Throwable e) {
//TODO automatisch generierter Fangblock
e.printStackTrace();
throw new Exception("Fehler beim Starten des H2-Servers", e);
}
}
}
@Override
protected void after() {
//Server herunterfahren
tcpServer.shutdown();
webConsole.shutdown();
}
}
Wenn Sie ExternalResource erben, ist es besser, vorher und nachher zu überschreiben. Mit JUnit fühlt es sich gut an. Das Erben der verwalteten Schnittstelle erfordert das Überschreiben von Start und Stopp. Da es sich um denselben Prozess handelt, werden sie von beiden Seiten aufgerufen. Hierbei ist zu beachten, dass Dropwizard-Aufrufe starten und stoppen. Erstellen Sie daher keine Instanz von Server im Konstruktor. Es wird ein Fehler ausgegeben, da eine Doppelinstanz erstellt wird. Außerdem wird für alle Fälle eine Nullprüfung durchgeführt, um zu vermeiden, dass doppelte Instanzen erstellt werden. Das Argument createTcpServer tcpAllowOthers kann entfernt werden, wenn nur vom lokalen Host aus darauf zugegriffen wird.
Ändern Sie dann die automatisch erstellte Hauptklasse wie folgt.
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);
}
}
Registrieren Sie eine Instanz von H2ServerResource beim Ausführen. Wenn Sie den Originaltext betrachten, bedeutet dies, dass Sie ihn für die DB-Verbindung oder den Thread-Pool verwenden sollten.
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.
Das ist alles für das Programm. Von hier aus beginnen wir mit der Kompilierung.
Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Ausführen ® Konfiguration ausführen.
Wenn das Fenster Konfiguration ausführen geöffnet wird, wählen Sie Maven Build aus und erstellen Sie ein neues.
Wählen Sie den Projektordner im Basisverzeichnis aus, geben Sie package oder clean package in das Ziel ein, wenden Sie es an und führen Sie es aus. Dann wird es gebaut.
Dadurch wird der H2-Server gestartet. Dropwizard Tools ist ein nützliches Plug-In, wenn Sie Dropwizard ausführen.
Dieses Plug-In füllt automatisch die erforderlichen Argumente wie server und config.yml aus, wenn der Drop-Assistent ausgeführt wird. Öffnen Sie nach der Installation die Debug-Konfiguration.
Wenn das Fenster Debug-Konfiguration geöffnet wird, wählen Sie die Hauptklasse aus.
Und Renn. In diesem Status können Sie auf den DB-Zugriff (20020) zugreifen und die Webkonsole (20010) öffnen, indem Sie auf die folgenden zuvor eingegebenen Ports zugreifen.
tcpServer = Server.createTcpServer("-tcpAllowOthers", "-tcpPort", "20020");
webConsole = Server.createWebServer("-webPort", "20010");
Greifen wir auf localhost zu: 20010. Die Webkonsole wird geöffnet.
Fügen wir localhost: 20020 in die JDBC-URL ein :.
Wenn Sie über die Konsole mit der folgenden URL darauf zugreifen, wird h2db.mv.db im Projektordner erstellt.
jdbc:h2:tcp://localhost:20020/./h2db
Gehen Sie zurück zu Eclipse und öffnen Sie es in DB Viewer. Öffnen Sie das DBViewer-Fenster und drücken Sie Registrieren.
Wenn das Datenbankdefinitionsfenster geöffnet wird, wählen Sie den h2-Treiber unter Datei hinzufügen aus.
Suchen Sie danach im Ordner des lokalen Repositorys von maven.
In meiner Umgebung befand es sich im folgenden Ordner.
%USERPROFILE%\.m2\repository\com\h2database\h2\1.4.196
Drücken Sie dann Weiter.
In den Verbindungsinformationseinstellungen wurde die Verbindungszeichenfolge zuvor in der Webkonsole eingegeben.
jdbc:h2:tcp://localhost:20020/./h2db
Geben Sie die.
Setzen Sie den Verbindungsbenutzer auf "sa" und leeren Sie das Verbindungsschema.
Stellen Sie dann sicher, dass Sie eine Testverbindung herstellen können.
Jetzt können Sie vom Erstellen eines Projekts mit Dropwizard zur Verbindung mit DB Viewer übergehen.
Recommended Posts