2010-02-10 22 views
0

J'ai été développeur web pendant quelques années (certains ASP, principalement PHP) et j'ai récemment pris Java/JSP ces deux dernières années.tomcat 5.5 Configuration du chemin de contexte avec des hôtes virtuels (répertoire non webapps)

La seule chose que j'ai essayé à plusieurs reprises, mais qui continue à échouer, est la manière d'installer une application JSP qui fonctionne dans un autre emplacement qui n'est PAS le dossier webapps. Basculer mon application hors de webapps ne semble pas être un problème pour moi.

Quelqu'un pourrait-il m'aider à le résumer, ou me suggérer de poster quelque part qui le décrit?

Je l'ai googlé à plusieurs reprises et lire et relire la documentation sur le site Web de apache.org, mais je ne peux toujours pas sembler obtenir :(

Je suis en train d'installer un site « explosé » (dossiers et fichiers séparés - ne fait pas partie d'un fichier WAR)

Je sais que JE PEUX éditer le fichier server.xml, mais je ne suis pas supposé le faire (pas que ce soit important ... même lorsque j'essaie d'éditer que j'échoue).

Je sais qu'il me manque quelque chose dans le fonctionnement des chemins Je pensais comprendre mais je ne le pense pas

Toute aide est grandement appréciée !!

Aimez ce site.

- J'ai décidé de reformuler ma question avec plus de détails -

Disons que j'ai une structure de répertoires comme suit (** NOTE: ProjetWeb est pas dans le répertoire tomcat/webapps)

/webproject 
/webproject/htdocs 
/webproject/htdocs/images 
/webproject/htdocs/images/logo.gif 
/webproject/java 
/webproject/java/page1.jsp 
/webproject/java/page2.jsp 

Je voudrais installer un hôte virtuel afin que je puisse voir mon projet via une URL: http://webproject

Je PENSE tout ce que je besoin est deux choses (j'utilise apache):

  1. une entrée 'VirtualHost' dans mon fichier httpd.conf.
  2. un type de fichier 'contexte' ou un fragment quelque part.

Ai-je raison? Si oui, quelqu'un pourrait-il m'aider à définir ces deux éléments?

De même, si je veux utiliser une URL relative au domaine pour référencer mon fichier logo.gif depuis l'une de mes pages jsp, à quoi ressemblerait mon chemin? Et si je veux utiliser une URL relative au domaine pour faire référence à page2.jsp à partir de page1.jsp?

Répondre

0

CEPENDANT, s'il y a des chemins dans mon application qui font référence à des ressources (images, scripts, etc.) en utilisant un chemin qui commence à la racine (ie. Img src = "/ htdocs/images/foo.gif") il n'est pas trouvé.

Savez-vous que ces chemins sont censés être URL par rapport à l'URL de requête en cours (celui de la page JSP) et donc pas chemins du système de fichiers de disque local par rapport à leur emplacement au disque local système de fichiers?Comme vous utilisez /htdocs, il ressemble à ce que vous pensiez que ce dernier.

Ainsi, si la page JSP est par exemple à la demande http://example.com/context/page.jsp et le foo.gif est effectivement disponible par http://example.com/context/images/foo.gif, alors vous devez utiliser l'URL de la page-relative:

<img src="images/foo.gif"> 

domaine ou URL relative :

<img src="/context/images/foo.gif"> 

ou URL de protocole relatif:

<img src="//example.com/context/images/foo.gif"> 

ou URL absolue:

<img src="http://example.com/context/images/foo.gif"> 
+0

Merci pour l'aide.Mon utilisation de "htdocs" était un mauvais exemple, parce que je sais que ce dossier est généralement utilisé en référence aux systèmes de fichiers locaux pour la livraison de pages Web. Cependant, dans ce cas, ce n'est pas le cas (blâmez-le sur les normes de codage de mon client). Donc, j'utilise une URL relative au domaine. –

+0

Après avoir dit cela ... votre utilisation du terme «contexte» dans tous les exemples d'URL est ce que je pense que je suis manquant. Donc, même avec l'utilisation de "htdocs" je suppose que mon URL devrait être: "/context/htdocs/images/foo.gif" Le suivi, est-ce que je dois utiliser un contexte? Ou est-il possible que je puisse configurer mon URL relative au domaine sans contexte? c'est à dire. "/htdocs/images/foo.gif"? Tomcat EXIGE-t-il un contexte? –

+0

Vous devez juste vous assurer que l'URL relative correspond à son emplacement absolu par rapport à l'URL de requête de la page "parent". Examinez les exemples d'URL aforegiven une fois de plus. Si vous êtes toujours bloqué, veuillez poster l'URL ** absolute ** (ainsi, l'URL comme vous le voyez dans la barre d'adresse du navigateur) de * both * la page JSP et le fichier image, puis je dirai comment l'URL relative de l'image doit ressembler à celle utilisée dans la page JSP. – BalusC

0

OK, après avoir lutté avec cela, je l'ai finalement obtenu de travailler. Je ne dis pas que c'est la meilleure façon (ou même correcte!) De le faire, mais c'est ce qui a finalement fonctionné pour moi localement sur ma machine Windows (exécutant WAMP) et sur un serveur distant sous Linux.

Les chemins indiqués sont ceux où ils se trouvaient pour mes environnements. Évidemment, cela pourrait être différent pour votre situation.

AVANT-PREMIÈRE (Windows uniquement)

Avec Windows, vous devez configurer une entrée dans votre fichier hosts pour le nouveau "domaine".

WIN - C: \ Windows \ System32 \ drivers \ etc \ hosts

127.0.0.1 webproject.local 

PREMIER

besoin de modifier httpd.conf et ajoutez un hôte virtuel

WIN - C : \ wamp \ bin \ apache \ Apache2.2.11 \ conf \ extra \ httpd-vhosts.conf

LINUX - /etc/httpd/conf/httpd.conf

<VirtualHost *:80> 
    DocumentRoot "C:\wamp\www\webproject" 
    ServerName webproject.local 
</VirtualHost> 

DEUXIÈME

Installation d'un hôte et contexte dans server.xml. D'après ce que j'ai lu en ligne, éditer server.xml est déconseillé, mais c'était la seule façon de le comprendre.

WIN - C: \ Program Files (x86) \ Apache Software Foundation \ Tomcat 5.5 \ conf \ server.xml

LINUX - etc/tomcat5/server.xml

<Host name="webproject" debug="0" appBase="webapps" unpackWARs="true"> 
    <Context path="" docBase="C:/wamp/www/webproject"/> 
    <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="webproject.local_error-log." suffix=".txt" timestamp="true"/> 
</Host> 

La chose que je ne pense pas est juste, mais a travaillé pour moi utilisait "webapps" comme appBase même si mes fichiers ne sont pas dans le dossier "webapps". Je ne sais pas pourquoi cela fonctionne ... Je crains que c'est une de ces situations où cela fonctionne même si elle ne devrait pas. J'espère que quelqu'un de plus intelligent que moi peut offrir un aperçu.