Méthode de déploiement Jetty9 de plusieurs projets et configuration d'hôte virtuel

1. Introduction

Jetty déploiera automatiquement presque tous les packages, répertoires et fichiers xml de guerre sous le répertoire webapps. Si le package war, le répertoire et le fichier xml ont le même nom, l'ordre de déploiement est fichier xml> package war> répertoire. S'il y a: bank.war, bank directory, bank.xml dans le répertoire webapps, où le répertoire bancaire est le répertoire décompressé de bank.war, le package bank.war ou le répertoire bancaire est référencé dans bank.xml, alors seulement Le fichier xml est déployé. S'ils ont des noms différents mais sont dans le même projet, le projet sera déployé à plusieurs reprises! Les packages, répertoires et fichiers xml du même projet doivent donc tous porter le même nom.

2. Configuration du chemin de contexte de la jetée (chemin de contexte)

  • Chemin de contexte
    par défaut Par défaut, Jetty utilisera le nom du projet dans le répertoire webapps comme chemin de contexte. Si le nom du projet est ROOT, le chemin du contexte est /. Si vous placez bank.war (ou répertoire bancaire) sous le répertoire webapps, le chemin de contexte est / bank. Si vous renommez bank.war en ROOT.war, le chemin de contexte est /. Ensuite, le chemin de contexte de l'ULR pour accéder à la banque est: http: // localhost: 8888 / bank

  • Chemin de contexte personnalisé
    Si la méthode ci-dessus ne peut pas répondre aux exigences, vous pouvez configurer le chemin de contexte via le fichier xml:

  1. La première étape: créez un fichier xml dans le répertoire webapps sous le répertoire racine de la jetée, le nom peut être arbitraire, comme jetyy-webapp.xml;
  2. Étape 2: en supposant que nous avons un projet bank.war dans le répertoire webapps, configurons un chemin de contexte personnalisé pour lui et ajoutons le contenu suivant dans le fichier xml:
    jetyy-webapp.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure id="GroceryWebapp" class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath">/bank888</Set>
  <Set name="war"><Property name="jetty.webapps" default="."/>/bank.war</Set>
</Configure>

Une fois la configuration terminée, le chemin de contexte pour accéder au site de la banque est: http: // localhost: 8888 / bank888

3. Configurer l'hôte virtuel

L'hébergement Web offre une autre façon d'accéder au Web. L'hébergement Web est généralement un nom de domaine enregistré dans DNS. Plusieurs noms de domaine correspondent à une IP. L'hébergement virtuel peut résoudre le même IP partageant une instance de serveur Jetty.

La configuration de l'hôte virtuel a les méthodes suivantes:

  • Utilisez une copie du fichier xml configuré dans le chemin de contexte sous le répertoire webapps, comme jetty-webapp.xml ci-dessus.
  • Pour tous les contextes trouvés dans le répertoire webapps, créez un déploiement personnalisé en liant et en configurant l'hôte virtuel.
  • Dans le cas d'applications intégrées à Jetty, la configuration et l'accès à l'hôte virtuel peuvent également être obtenus en appelant directement l'API
  • Utilisez WEB-INF / jetty-web.xml pour configurer l'hôte virtuel ( obsolète )

3.1 Le nom de l'hôte virtuel

Jetty prend en charge les noms d'hôte virtuel suivants sous cette forme:

  • www.hostname.com, un nom d'hôte qualifié complet comme celui-ci. Une telle configuration peut être reçue en utilisant l'accès depuis www.hostname.com et hostname.com
  • .hostname.com, utilisez des caractères génériques pour qualifier l'hôte, mais ne correspond qu'à n'importe quel nom du premier niveau, tel que.foo.com peut correspondre à www.foo.com et m.foo.com, mais ne peut pas correspondre à www.other.foo.com
  • 10.0.0.2, l'adresse IP peut également être utilisée comme nom d'hôte virtuel, ce qui indique que le contexte est de traiter les demandes reçues du port du serveur sans le nom d'hôte spécifié
  • @ConnectorName, le nom de la connexion, ce n'est pas strictement un hôte virtuel, il correspond uniquement à la demande reçue par le connecteur dont le nom est défini par Connector.setName (String).
  • www.√integral.com, noms de domaine non ASCII et IDN

3.2 Configurer l'hôte virtuel

Nous configurons l'hôte virtuel pour le contexte / bank888:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure id="GroceryWebapp" class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath">/bank888</Set>
  <Set name="war"><Property name="jetty.webapps" default="."/>/bank.war</Set>
  <Set name="virtualHosts">
    <Array type="java.lang.String">
      <Item>www.MyVirtualDomain.com</Item>
      <Item>m.MyVirtualDomain.com</Item>
      <Item>*.OtherVirtualDomain.com</Item>
      <Item>@ConnectorName</Item>
      <Item>localhost</Item>
      <Item>127.0.0.1</Item>
    </Array>
  </Set>
</Configure>

Remarque: En pratique, @ConnectorName est plus sujet aux problèmes et s'il échoue, le contexte échouera .
La méthode d'accès devient (hôte virtuel + port + chemin de contexte): http://127.0.0.1:8080/bank888
Si vous devez également ajouter un hôte virtuel pour d'autres éléments dans les webapps, vous pouvez continuer de la manière ci-dessus sous le répertoire webapps Créez un fichier xml. Il est recommandé que le fichier xml soit le même que le nom de guerre ou le nom de répertoire, sinon cela entraînera un déploiement répété.

Remarque: Le mode d'hôte virtuel ne fournit que d'autres moyens d'accéder au Web et n'affecte pas la méthode d'accès d'origine (l'original: IP + port + chemin de contexte).

4. Fermer l'accès au répertoire sous Jetty9 (fermer la traversée du répertoire et fermer l'affichage du fichier dans le répertoire

  • Avant de fermer l'accès au répertoire, visitez http: // localhost: 8888 pour
    Insérez la description de l'image ici
    afficher tout le Web sous le répertoire webapps. La situation ci-dessus se produit sans configurer de contexte personnalisé.
  • Personnalisez le contexte Web de configuration, fermez l'accès au répertoire
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure id="GroceryWebapp" class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath">/</Set>
  <Set name="war"><Property name="jetty.webapps" default="."/>/gro.war</Set>
  <Set name="virtualHosts">
    <Array type="String">
      <Item>www.MyVirtualDomain.com</Item>
      <Item>m.MyVirtualDomain.com</Item>
      <Item>*.OtherVirtualDomain.com</Item>
      <Item>localhost</Item>
      <Item>127.0.0.1</Item>
    </Array>
  </Set>
  <!--关闭目录访问-->
<Call name="setInitParameter">
	<Arg>org.eclipse.jetty.servlet.Default.dirAllowed</Arg>
	<Arg>false</Arg>
</Call>
</Configure> 

Le contexte Web défini ci-dessus est / et l'accès au répertoire est fermé. Si vous visitez http: // localhost: 8888 à ce moment:
Insérez la description de l'image ici

Remarque: Les résultats de la pratique montrent que tant qu'il existe un contexte Web dans le contexte de configuration personnalisé, il est pratiquement impossible d'afficher le répertoire Web sous les applications Web. Cela semble n'avoir rien à voir avec la configuration suivante:

<Call name="setInitParameter">
	<Arg>org.eclipse.jetty.servlet.Default.dirAllowed</Arg>
	<Arg>false</Arg>
</Call>

Scannez le code pour en voir plus:
Insérez la description de l'image ici

Publié 381 articles originaux · loué 85 · 80 000 vues +

Je suppose que tu aimes

Origine blog.csdn.net/weixin_40763897/article/details/105505113
conseillé
Classement