[JAVA] Jusqu'à ce que vous puissiez utiliser la base de données H2 en mode serveur avec Dropwizard en utilisant Eclipse et vous connecter avec DB Viewer.

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.

environnement

Le logiciel utilisé est le suivant.

Créer un projet avec Dropwizard

Commençons par créer un projet dans Eclipse. Sélectionnez Fichier Eclipse ® Nouveau ® Projet Maven.

WS000000.JPG

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".

WS000001.JPG

Pour l'ajouter, saisissez-le comme indiqué sur la figure.

WS000002.JPG

Il devrait apparaître dans la liste.

WS000004.JPG

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.

Ajouter un plugin à pom.xml

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.

WS000013.JPG

Créer une classe pour lancer le serveur H2

Créez une classe pour démarrer le serveur H2. Je l'ai créé sous ressources.

WS000014.JPG

Lors de sa création, créez-le comme suit.

WS000015.JPG

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.

Compiler et exécuter le programme

WS000016.JPG

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.

WS000017.JPG

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.

WS000018.JPG

Lorsque la fenêtre de configuration de débogage s'ouvre, sélectionnez la classe principale.

WS000019.JPG

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

WS000020.JPG

Revenez à Eclipse et ouvrez-le à partir de DB Viewer. Ouvrez la fenêtre DBViewer et appuyez sur Enregistrer.

WS000021.JPG

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

WS000022.JPG

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.

WS000024.JPG

Vous pouvez désormais passer de la création d'un projet avec Dropwizard à la connexion avec DB Viewer.

Recommended Posts

Jusqu'à ce que vous puissiez utiliser la base de données H2 en mode serveur avec Dropwizard en utilisant Eclipse et vous connecter avec DB Viewer.
Coexistence de Flyway dans la base de données embarquée (h2) de l'environnement de développement et la base de données des versions (SQL Server) avec Spring Boot
Avec Tomcat, vous pouvez utiliser des espaces réservés ($ {...}) dans web.xml.
Jusqu'à ce que vous commenciez à développer avec Spring Boot dans eclipse 1
Jusqu'à ce que vous commenciez à développer avec Spring Boot dans eclipse 2
Jusqu'à ce que vous construisiez un projet écrit scala avec Maven et que vous l'exécutiez avec la commande scala.
Dans Redmine, vous pouvez obtenir le projet avec Project.find (<identifier>)
Installez Ubuntu Server 20.04 dans VirtualBox sur Mac et établissez une connexion SSH