[JAVA] Comment basculer Tomcat context.xml avec Eclipse WTP

introduction

Lorsque vous utilisez la source de données fournie par Tomcat à partir d'une application Web, décrivez les paramètres de la source de données dans context.xml. Dans cet article, je vais vous montrer comment changer context.xml pour chaque développeur lorsque vous démarrez et développez Tomcat à l'aide du WTP (Web Tools Plugin) d'Eclipse.

Si vous voulez savoir comment le faire rapidement, veuillez consulter [Méthode de commutation](méthode #Switching).

Pourquoi vous devez changer context.xml

Il existe deux emplacements principaux pour context.xml.

  1. META-INF / context.xml``` sous l'application Web
  2. $ CATALINA_BASE / conf / context.xml``` dans le répertoire d'installation de Tomcat

(Référence: Apache Tomcat 8 Configuration Reference (8.5.32) --The Context Container)

Chacun a les caractéristiques suivantes, mais il y a des avantages et des inconvénients.

** 1. Sous application Web **

** 2. Sous le répertoire d'installation de Tomcat **

--Cliquez ici s'il est basé sur l'idée que la source de données est fournie par le serveur d'application. --context.xml n'est pas soumis à la gestion de la configuration.

Surtout lorsque chaque développeur développe en déployant sur Tomcat sur Eclipse tout en utilisant sa propre base de données de développement pendant le développement, comment faire de context.xml une cible de gestion de la configuration et la changer en fonction de l'environnement Présenter.

Comment changer

Idée basique

Tous les fichiers qui décrivent les paramètres de source de données pour chaque développeur sont gérés par Git et la commutation est effectuée à l'aide de liens symboliques. Le lien symbolique est un paramètre WTP et doit être déployé sous META-INF.

Le context.xml qui décrit les paramètres de la source de données pour chaque développeur est placé sous le répertoire context / user '' avec le nom de fichier context_login user name.xml ''. Ceci est géré par Git. Le nom d'utilisateur de connexion est le nom d'utilisateur de connexion Windows (variable d'environnement ``% USERNAME% ''). Dans l'exemple ci-dessous, alice, bob et charlie sont les noms d'utilisateur de connexion du développeur. De cette façon, créez autant de fichiers qu'il y a de développeurs.

Chaque développeur configure la source de données en créant un lien symbolique vers son propre context_login username.xml '' en tant que context / META-INF / context.xml ''. Réalise la commutation.

Structure du répertoire du projet Eclipse

Créez de nouveaux répertoires context / META-INF '' et context / user '' sous le projet Eclipse.

context/meta-infLe contenu de se trouve dans l'application Web selon les paramètres décrits ci-dessous.meta-infIl sera déployé en dessous.

context/Le contexte pour chaque développeur mentionné ci-dessus sous utilisateur_***.Placez le fichier xml. Aussi, un fichier batch pour créer des liens symboliques(Voir ci-dessous)Place également.



(Répertoire racine du projet) ┊ ├ context │ ├ META-INF │ │ ├ .gitignore │ │ └ context.xml ← <setup-context.Un lien symbolique créé par bat. Non géré par Git> │ │ │ └ user │ ├ setup-context.bat ← <Fichier batch pour créer des liens symboliques(Voir ci-dessous)> │ ├ context_alice.xml ← <Un contexte qui décrit les paramètres de la source de données d'Alice.xml> │ ├ context_bob.xml ← <Contexte décrivant les paramètres de la source de données Bob.xml> │ └ context_charlie.xml ← <Un contexte qui décrit les paramètres de la source de données Charlie.xml> ┊



#### **`context_***.Le contenu de xml est le contexte suivant.Dans le xml lui-même, ne modifiez que la destination de la connexion selon le développeur.(Ci-dessous un exemple dans MySQL)`**

context_***.xml


<?xml version="1.0" encoding="UTF-8"?>
<Context path="/webapp" docBase="webapp" crossContext="true" reloadable="true" debug="1">
	<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"
                  driverClassName="com.mysql.jdbc.Driver"
                  url="jdbc:mysql://hôte:3306/Nom de la base de données"
                  username="Nom d'utilisateur" password="mot de passe"
                  maxIdle="10" defaultAutoCommit="false" />
</Context>

Créer un lien symbolique

setup-context.bat est un fichier batch permettant de créer des liens symboliques pour une création facile. Le développeur clone le projet, puis exécute ce fichier de commandes. installer-context.chauve souris%USERNAME%Voir le contexte_Nom d'utilisateur connexion.Contexte un lien symbolique vers xml/META-INF/context.Il sera créé au format xml.



 Ce lien symbolique est le seul fichier qui change pour chaque développeur. Ce lien symbolique est hors du contrôle Git comme décrit ci-dessous, il n'y a donc aucun conflit.

## Définir des liens symboliques hors de la gestion Git

 En raison des spécifications de Git, l'entité du lien symbolique est enregistrée dans le référentiel, de sorte que `` `` context / META-INF / context.xml '' '' est exclu de la gestion Git. Par conséquent, créez `` `` context / META-INF / .gitignore``` comme suit.



#### **`.gitignore`**
```python

/context.xml

Paramètres du projet Eclipse

Configurez le projet dans Eclipse comme suit: En conséquence, lorsque Tomcat est démarré avec WTP, les fichiers sous context / META-INF / seront copiés sous `` META-INF '' de l'application Web.

  1. Ouvrez les propriétés du projet dans Eclipse et ouvrez l'assemblage de déploiement.

  2. Appuyez sur le bouton "Ajouter ..." et sélectionnez "Dossier" dans la nouvelle directive d'assemblage. assembly.png

  3. Sélectionnez le répertoire context / META-INF``` et spécifiez `META-INF /` pour le chemin de déploiement pour enregistrer vos paramètres. context.png

Maintenant, lorsque vous démarrez Tomcat en utilisant WTP, context.xml``` (en fait context _ ***. Xml` ) selon le développeur sera `` WEB-INF / Il est déployé sous «» et peut changer les paramètres de la source de données.

Fichier batch pour créer des liens symboliques

setup-context.Créez une chauve-souris avec le contenu suivant. En substance, vous créez simplement un lien symbolique avec la commande mklink. Si le lien symbolique existe déjà, nous vous demanderons confirmation et le remplacerons.




#### **`setup-context.bat`**
```python

@echo off

set CONTEXT_DIR=..\META-INF
set CONTEXT_FILE=context.xml

%~d0
pushd %~p0

set USER_CONTEXT_DIR=%~p0

for %%I IN ( %USER_CONTEXT_DIR:~0,-1% ) do set "USER_CONTEXT_DIR=%%~nI"

cd %CONTEXT_DIR%

if not exist %CONTEXT_FILE% goto :MAKELINK

set /P INPUT="[WARNING] %CONTEXT_FILE%Existe.Supprimer Êtes-vous sûr de vouloir? (y/n)"
if not %INPUT%==y goto :END

del %CONTEXT_FILE%

:MAKELINK
mklink %CONTEXT_FILE% ..\%USER_CONTEXT_DIR%\context_%USERNAME%.xml

:END
popd

pause

Méthode d'opération

Vous pouvez maintenant opérer dans le flux suivant.

  1. Lorsque le nombre de développeurs augmente, préparez une base de données pour ce développeur, créez context_ <nom d'utilisateur du développeur> .xml`` pour vous y connecter, et ``context / users Placez-le sous / `` et validez.
  2. Le développeur clone le projet et l'importe dans Eclipse.
  3. Le développeur exécute context / user / setup-context.bat```. [^ permission]
  4. context / META-INF / context.xml``` est créé sous forme de lien symbolique.
  5. Mettez à jour en appuyant sur F5 dans l'Explorateur de packages d'Eclipse. Confirmez que context / META-INF / context.xml` '' est affiché.
  6. Lorsque vous démarrez Tomcat en utilisant WTP, context / META-INF / context.xml `` `` est copié sous `` META-INF``` de l'application Web en fonction des paramètres du projet d'Eclipse et des données Activé comme paramètre source.

[^ permission]: À ce stade, si le message "Vous ne disposez pas des privilèges suffisants pour effectuer cette opération" s'affiche, exécutez le fichier batch avec les privilèges d'administrateur.

Il se peut que peu de projets de développement utilisent directement les sources de données Tomcat de nos jours, mais cela peut réduire un peu le stress sur le terrain.

Recommended Posts

Comment basculer Tomcat context.xml avec Eclipse WTP
Comment utiliser la bibliothèque Z3 dans Scala avec Eclipse
Comment utiliser la bibliothèque JDD dans Scala avec Eclipse
Comment exécuter JUnit dans Eclipse
Comment définir Lombok dans Eclipse
Comment changer d'images miniatures avec JavaScript
Comment inclure Spring Tool dans Eclipse 4.6.3?
Comment changer de version Java avec direnv dans le terminal sur Mac
[Pour les débutants] Comment déboguer avec Eclipse
[Java FX] Comment écrire des autorisations Eclipse dans build.gradle
Comment colorer la sortie de la console de code dans Eclipse
Comment démarrer avec Eclipse Micro Profile
Comment générer automatiquement un constructeur dans Eclipse
Pour déboguer avec Eclipse
Comment intégrer des variables JavaScript dans HTML avec Thymeleaf
La bonne façon de voir la source Tomcat dans Eclipse
Comment trier par ordre croissant / décroissant avec SQLite
Comment appeler des fonctions en bloc avec la réflexion Java
Organisé comment interagir avec le JDK par étapes
[Comment insérer une vidéo dans un hameau avec Rails]
Comment supprimer des images non balisées en masse avec Docker
Comment démarrer le serveur local de Tomcat sans utiliser eclipse
Comment Git gérer les projets Java EE dans Eclipse
Comment interroger Array dans jsonb avec Rails + postgres
Comment déboguer le fichier jar généré avec Eclipse
Comment numéroter (nombre) avec html.erb
Comment mettre à jour avec activerecord-import
Comment utiliser Eclipse Debug_Shell
Connectez-vous à Oracle avec Eclipse!
Installez le plug-in Tomcat dans Eclipse
Comment obtenir des valeurs en temps réel avec TextWatcher (Android)
Comment définir le code de caractère et le code de saut de ligne dans Eclipse
Comment changer dynamiquement les JDK lors de la construction de Java avec Gradle
Mappage à une classe avec un objet de valeur dans How to My Batis
Comment déployer une application Java sur Alibaba Cloud EDAS dans Eclipse
Comment changer Java à l'ère d'OpenJDK sur Mac
Comment configurer un proxy avec authentification dans Feign
Comment s'inscrire en tant que client dans Square à l'aide de Tomcat
Comment basculer dynamiquement entre FIN et RST dans Netty
Comment utiliser Lombok au printemps
Comment trouver May'n dans XPath
Comment masquer la barre de défilement dans WebView
Comment démarrer avec Slim
Comment itérer indéfiniment en Ruby
Comment exécuter Ant dans Gradle
Comment créer un fichier jar sans dépendances dans Maven
Comment maîtriser la programmation en 3 mois
Comment entourer n'importe quel caractère avec "~"
J'ai essayé de créer un environnement de développement http2 avec Eclipse + Tomcat
Comment apprendre JAVA en 7 jours
Comment obtenir des paramètres dans Spark
Comment installer Bootstrap dans Ruby
Comment utiliser mssql-tools avec Alpine
Comment utiliser InjectorHolder dans OpenAM
Comment obtenir la valeur de boolean avec jQuery sous forme simple de rails
Comment installer jQuery dans Rails 6
Comment renommer un modèle avec des contraintes de clé externes dans Rails