[JAVA] Bis Sie die H2-Datenbank im Servermodus mit Dropwizard mithilfe von Eclipse verwenden und eine Verbindung mit DB Viewer herstellen können.

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.

Umgebung

Die verwendete Software ist wie folgt.

Erstellen Sie ein Projekt mit Dropwizard

Lassen Sie uns zunächst ein Projekt in Eclipse erstellen. Wählen Sie Eclipse File ® New ® Maven Project.

WS000000.JPG

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.

WS000001.JPG

Geben Sie es wie in der Abbildung gezeigt ein, um es hinzuzufügen.

WS000002.JPG

Es sollte in der Liste erscheinen.

WS000004.JPG

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 ein Plugin zu pom.xml hinzu

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.

WS000013.JPG

Erstellen Sie eine Klasse, um den H2-Server zu starten

Erstellen Sie eine Klasse, um den H2-Server zu starten. Ich habe es unter Ressourcen erstellt.

WS000014.JPG

Erstellen Sie es beim Erstellen wie folgt.

WS000015.JPG

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.

Programm kompilieren und ausführen

WS000016.JPG

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.

WS000017.JPG

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.

WS000018.JPG

Wenn das Fenster Debug-Konfiguration geöffnet wird, wählen Sie die Hauptklasse aus.

WS000019.JPG

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

WS000020.JPG

Gehen Sie zurück zu Eclipse und öffnen Sie es in DB Viewer. Öffnen Sie das DBViewer-Fenster und drücken Sie Registrieren.

WS000021.JPG

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

WS000022.JPG

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.

WS000024.JPG

Jetzt können Sie vom Erstellen eines Projekts mit Dropwizard zur Verbindung mit DB Viewer übergehen.

Recommended Posts

Bis Sie die H2-Datenbank im Servermodus mit Dropwizard mithilfe von Eclipse verwenden und eine Verbindung mit DB Viewer herstellen können.
Koexistenz von Flyway in der eingebetteten Datenbank (h2) der Entwicklungsumgebung und der Release-Datenbank (SQL Server) mit Spring Boot
Mit Tomcat können Sie Platzhalter ($ {...}) in web.xml verwenden.
Bis Sie mit der Entwicklung mit Spring Boot in Eclipse 1 beginnen
Bis Sie mit der Entwicklung mit Spring Boot in Eclipse 2 beginnen
Bis Sie mit Maven ein von Scala geschriebenes Projekt erstellen und es mit dem Befehl scala ausführen.
In Redmine können Sie das Projekt mit Project.find (<Kennung>) abrufen.
Installieren Sie Ubuntu Server 20.04 in VirtualBox auf einem Mac und stellen Sie eine SSH-Verbindung her