Comment se connecter à un Serveur web en mode H2 base de données dans la console?
Sur H2 de la documentation, il dit seul le serveur web prend en charge des connexions navigateur. Est-ce à dire que nous ne peuvent accéder à la H2 de la Base de données par la console en mode WebServer, pas TcpServer? Mais quand je fais le test ci-dessous, le résultat est totalement pas comme prévu.
public class TestMem {
public static void main(String... args) throws Exception {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:mem:test");
conn.createStatement().execute("create table test(id int)");
Server server = Server.createTcpServer().start();//1.TcpServer
// Server server = Server.createWebServer().start();//2.WebServer
System.out.println("Server started and connection is open.");
System.out.println("URL: jdbc:h2:" + server.getURL() + "/mem:test");
Thread.sleep(5*60*1000);
System.out.println("Stopping server and closing the connection");
server.stop();
conn.close();
}
}
Si je commence un TcpServer, je peux visiter le DB par cette url: jdbc:h2:tcp://localhost:9092/mem:test dans la console.
//Use TcpServer
Server server = Server.createTcpServer().start();
Mais quand je lance un Serveur, j'ai essayé de vous connecter, utilisez jdbc:h2:http ://localhost:8082/mem:test, ci-dessous exception throw: IO Exception: java.io.IOException: Le nom de fichier, nom de répertoire ou de volume de la syntaxe de l'étiquette est incorrect"; "http ://localhost:8082/mem:test.h2.db" [90031-172] 90031/90031 (Aide).
//Use WebServer
Server server = Server.createWebServer().start();
Voici mes questions
- Peut-on accéder au Serveur web en mode h2 Base de données dans la console? Comment?
- Ai-je mal compris le H2 de la documentation sur les à l'Aide du Serveur section?
OriginalL'auteur Garnett | 2013-12-25
Vous devez vous connecter pour publier un commentaire.
La H2 outil de Console (créé à l'aide de
Server.createWebServer
) est un serveur web et une petite application web qui vous permet de vous connecter à une base de données (tout JDBC de la base de données) à l'aide d'un navigateur web (tel que Firefox, Google Chrome, Internet Explorer, et ainsi de suite).La H2 Serveur TCP (créé à l'aide de
Server.createTcpServer
) est un serveur de H2 clients JDBC. Il n'est pas un serveur web et non pas d'une application web. Vous ne pouvez pas vous connecter à ce serveur à partir d'un navigateur web.Si vous commencez à la fois sur la Console de l'outil (serveur web) et le serveur TCP, alors vous pouvez vous connecter à l'aide d'un navigateur de la Console de l'outil, qui peut alors se connecter à un H2 de la base de données en mode serveur.
Sur la base de données Url: voir le de la documentation à propos de la base de données Url.
Oui.
Merci pour votre aide encore une fois, Thomas.
Probablement pas la question d'origine, mais je me demande si il serait possible de court-circuiter un client JDBC pour se connecter à une base de données où vous avez accès par le biais d'un H2 de la console?
Je ne comprends pas, désolé. Je pense que c'est mieux si vous commencez une nouvelle question.
OriginalL'auteur Thomas Mueller
Quelques commentaires supplémentaires sur la réponse de Thomas Mueller:
Vous pouvez la voir comme une "petite alternative" à la base de données des applications comme DBeaver ou Navicat.
En plus de cela, si vous démarrez le H2 console dans la même JVM que votre H2 base de données (qui a par exemple été commencé avec org.h2.Outils.RunScript.execute(...)), vous serez en mesure d'utiliser le "mode incorporé" de l'H2 outil de Console pour vous connecter à votre H2 base de données sans l'aide d'un H2 serveur TCP.
(D'autres outils de base de données comme DBeaver ne fonctionnera pas dans la même JVM. Si vous utilisez l'embedded H2 mode avec DBeaver, vous serez connecté à un supplément temporaire de la base de données à l'intérieur de la JVM de DBeaver.)
Exemple pour l'embarqué mode
Si vous avez commencé un H2 de la base de données "test_database" sur le port 8085 à partir de l'intérieur de la même JVM, avec l'option DB_CLOSE_DELAY=-1 et sans aussi le démarrage d'un serveur TCP ... lancez un navigateur web et saisissez l'adresse pour afficher le H2 outil de Console application web:
Utiliser, par exemple, suivant les paramètres pour se connecter en mode imbriqué:
Exemple pour le mode serveur
Si vous avez lancé le serveur TCP, vous pouvez vous connecter à l'H2 base de données en mode serveur. Vous pouvez faire cela avec
Lancez un navigateur web et entrez par exemple à l'adresse suivante afficher le H2 outil de Console application web:
Utiliser, par exemple, suivant les paramètres pour se connecter en mode serveur:
Vous pouvez également utiliser l'url
pour connecter par exemple avec DBeaver.
properties
fichier en ligne de commande), URL (connexion JDBC), etc.?Ou en termes simples. Plus ou moins, un multi-utilisateur SQLite comme outil (Java). Trop?
OriginalL'auteur Stefan