2017-06-03 1 views
1

Je suis curieux de savoir comment le débogueur IntelliJ utilise le domain.xml de mon serveur glassfish et rapporte une page Web lorsque cela est demandé. En particulier, j'ai un projet IntelliJ appelé blobGame qui utilise un serveur Glassfish qui ouvre une page Web appelée blobGame lorsque les artefacts .war et .ear sont déployés.Spécificités sur la façon dont le serveur Glassfish est exécuté avec le débogueur IntelliJ?

Premièrement, comment ces artefacts sont-ils déployés? Quand je les utiliser, je dois avoir l'URL du localhost soit http://localhost:60836/blobGame_war_exploded et localhost: 60836/blobGame NE FONCTIONNE PAS, même si je change dans la configuration de débogage - here is my debugger info

Pourquoi est-ce? Pourquoi l'URL doit-elle être /blobGame_war_exploded? Il ne peut même pas être /blobGame_ear_exploded, comme je le vois aussi dans le domain.xml.

Voici l'extrait de domain.xml pour mon domaine appelé « domain2 »:

<applications> 
 
    <application object-type="user" name="blobGame_ear_exploded" directory-deployed="true" location="file:/C:/Users/Kevin/EECS/blobGame/out/artifacts/blobGame_ear_exploded/"> 
 
     <property name="archiveType" value="ear"></property> 
 
     <property name="isComposite" value="true"></property> 
 
     <property name="appLocation" value="file:/C:/Users/Kevin/EECS/blobGame/out/artifacts/blobGame_ear_exploded/"></property> 
 
     <property name="org.glassfish.ejb.container.application_unique_id" value="98074431158681600"></property> 
 
     <property name="defaultAppName" value="blobGame_ear_exploded"></property> 
 
     <module name="web.war"> 
 
     <engine sniffer="ejb"></engine> 
 
     <engine sniffer="security"></engine> 
 
     <engine sniffer="weld"></engine> 
 
     <engine sniffer="web"></engine> 
 
     </module> 
 
     <engine sniffer="ear"></engine> 
 
    </application> 
 
    <application context-root="/blobGame_war_exploded" object-type="user" name="blobGame_war_exploded" directory-deployed="true" location="file:/C:/Users/Kevin/EECS/blobGame/out/artifacts/blobGame_war_exploded/"> 
 
     <property name="archiveType" value="war"></property> 
 
     <property name="appLocation" value="file:/C:/Users/Kevin/EECS/blobGame/out/artifacts/blobGame_war_exploded/"></property> 
 
     <property name="org.glassfish.ejb.container.application_unique_id" value="98074431158812672"></property> 
 
     <property name="defaultAppName" value="blobGame_war_exploded"></property> 
 
     <module name="blobGame_war_exploded"> 
 
     <engine sniffer="ejb"></engine> 
 
     <engine sniffer="security"></engine> 
 
     <engine sniffer="weld"></engine> 
 
     <engine sniffer="web"></engine> 
 
     </module> 
 
    </application> 
 
    </applications>

Deuxièmement, pourquoi le déploiement utilisent encore des objets précédents (comme je suppose qu'ils êtes-vous) lorsque je redéploie ou redémarre le serveur? Plus précisément, lorsque j'appuie sur redémarrer, j'obtiens exactement les mêmes fichiers HTML et javascript que je me suis retrouvé avec, et même si j'ai édité les fichiers html ou JS pendant le temps avant mon deuxième débogage. (J'ajoute alert ("test") dans le nouveau debug, mais il n'apparait pas dans le nouveau debug Quand j'accède à la page index.html de façon indépendante, l'alerte est affichée).

Voici le index.html

<!DOCTYPE html> 
 
<html lang="en"> 
 
    <head> 
 
     <meta charset="UTF-8"> 
 
     <title>keyBoardDemo</title> 
 
    </head> 
 
    <body> 
 
     <canvas id="canvas" width="800" height="600" style="border:1px solid #000000;"></canvas> 
 
     <p id="main"></p> 
 
     <script type="text/javascript" src=resources.js></script> 
 
     <script type="text/javascript" src=canvas.js></script> 
 
     <script type="text/javascript" src=keyboard.js></script> 
 
     <script type="text/javascript" src=packethandler.js></script> 
 
     <script type="text/javascript" src=player.js></script> 
 
     <script type="text/javascript" src=websocket.js></script> 
 
    </body> 
 
</html>

et voici les canvas.js qu'il appelle:

alert("test 123"); //this is not called on the second redeployment! 
 

 

 
var canvas = document.getElementById("canvas"); 
 
var context = canvas.getContext("2d");

Répondre

1

Premièrement, comment ces artefacts sont-ils déployés? Quand je les utiliser, je dois avoir l'URL ...

Par défaut, IDEA calcule la racine de contexte du nom d'artefact, en remplaçant les caractères non pris en charge par des underscores. Ainsi, l'artefact «blobGame: war exploded» obtient par défaut la racine de contexte «blobGame_war_exploded».

Pour modifier la racine de contexte pour l'artefact, vous pouvez ouvrir l'onglet « Déploiement » de la configuration d'exécution, cochez « Utiliser la racine de contexte personnalisé » et entrez la valeur souhaitée dans le champ

« navigateur ouvert 'champ sur l'onglet' Serveur 'n'affecte pas les paramètres du serveur, il vous permet juste d'ouvrir l'URL que vous voulez après le démarrage du serveur.La valeur du champ par défaut à l'URL calculée à partir du premier artefact, mais une fois que l'utilisateur l'a modifié IDEA suppose que l'utilisateur connaît mieux.

Plus précisément, quand je presse restart, je reçois exactement le même HTML et javascript fichiers que je suis resté avec avant, ...

La séquence attendue est la suivante:

  1. faire une modification à une ressource
  2. mettre à jour l'application sur le serveur avec l'action 'Mise à jour <> application': le choix 'Mettre à jour la ressource' devrait être suffisant pour une application éclatée, redéployer/r EDÉMARREZ peut être nécessaire pour l'artefact archive
  3. reload (rafraîchissement) la page, qui utilise la ressource dans le navigateur

Je soupçonne que vous manquez le dernier (3) étape. Veuillez noter que l'étape (2) met seulement à jour la ressource sur le serveur, et pour voir un changement dans le navigateur (sur le client) vous devriez recharger les ressources correspondantes du serveur en actualisant la page manuellement.

espoir qui aide, je vais rediriger your second post à cette réponse

+0

Non, je fais toujours rafraîchir mon navigateur Chrome (la page Web que j'utilise) chaque fois que je redémarre le serveur ou redéployer ou des classes mise à jour, etc .. .. ça ne marche pas. Comme je l'ai dit, même après le redémarrage d'IntelliJ, il conserve mon déploiement inchangé même si les fichiers ont été modifiés. –

+0

Veuillez soumettre votre nouveau Youtrack et joindre (en privé) votre dossier .idea. S'il vous plaît voir https://intellij-support.jetbrains.com/hc/en-us/articles/207241135 si vous n'êtes pas familier avec YouTrack. –