Exécution de servlets dans Apache Tomcat

Je travaille sur les tutoriels en ligne de Java Ranch Cattle Drive et je me suis lancé dans les projets Servlets. Je voulais installer et exécuter Apache au lieu d’Orion, car je voulais apprendre un serveur HTTP plus traditionnel.

J’ai installé Apache sur ma machine (il s’agit d’un environnement Windows XP / Cygwin, donc j’utilise le package Apache fourni avec la dernière version de cygwin, actuellement la version 1.3.33 de httpd)

Je suis sur le sharepoint diriger un navigateur vers http: // localhost et le serveur récupère correctement la page de bienvenue (index.html) à C: \ cygwin \ var \ www \ htdocs.

J’ai installé Java EE et j’ai pu comstackr le Servlet suivant:

import java.io.* ; import javax.servlet.http.* ; public class BeeServlet extends HttpServlet { public void doGet( HttpServletRequest request , HttpServletResponse response ) { response.setContentType("text/html"); try { PrintWriter out = response.getWriter(); out.println( "a-buzz-buzz ..." ); out.close(); } catch( Exception e ) { System.out.println( "cannot get writer: " + e ); } } } 

Cela comstack dans un fichier .class sans erreurs. Ma question est la suivante: où dois-je installer ce fichier sur le serveur?

Le fichier s’appelle BeeServlet.class et le didacticiel indique comment diriger un navigateur vers http: // localhost / servlet / BeeServlet après avoir installé BeeServlet.class dans le répertoire approprié du serveur Web.

(EDIT: J’ai réussi à installer Tomcat et à afficher la page d’accueil de base, comme expliqué dans les étapes ci-dessous. Je ne suis toujours pas sûr de savoir où placer le fichier .class ou comment y accéder):

Voici les étapes de l’installation de Tomcat et de son exécution via Cygwin:

  1. Accédez à http://tomcat.apache.org/ et téléchargez la dernière version de Tomcat (pour la configuration du système ci-dessus, sélectionnez la méthode Windows Service Installer 32 bits / 64 bits, qui créera une installation de 9 Mo sous C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0).

  2. Ajoutez ce chemin à la variable d’environnement système Windows ‘Path’

  3. Démarrer un shell Cygwin bash

  4. tapez ‘tomcat7’ (avec Path set, il trouvera ce fichier .exe dans le chemin ci-dessus). Cela démarrera le serveur tomcat.

  5. Lancez un navigateur et dirigez-le vers http: // localhost: 8080 . Cela fera apparaître l’écran de bienvenue Tomcat (qui est en réalité Tomcat lisant le fichier: C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ webapps \ ROOT \ index.jsp).

  6. Créez de nouveaux répertoires sous C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ webapps nommés examples \ WEB-INF \ classes.

  7. Ajoutez une annotation @WebServlet au fichier de code source (cela se trouverait après toute importation): @WebServlet (urlPatterns = {“/ servlet / BeeServlet”}). Comstackz le fichier BeeServlet.java et placez le fichier .class dans C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ webapps \ examples \ WEB-INF \ classes \ BeeServlet.class

  8. Dirigez votre navigateur vers http: // localhost: 8080 / examples / servlet / BeeServlet

Vous devez laisser le servletcontainer savoir que vous avez un servlet qu’il doit exécuter. Comme vous êtes déjà sur Tomcat 7.0, une annotation @WebServlet devrait suffire.

 @WebServlet(urlPatterns={"/servlet/BeeServlet"}) public class BeeServlet extends HttpServlet { // ... } 

Ou l’ancienne méthode (probablement comme le tutoriel JavaRanch aurait dû le mentionner), par une déclaration dans web.xml .

  beeServlet BeeServlet   beeServlet /servlet/BeeServlet  

Veuillez noter que mettre des classes dans un package par défaut est une mauvaise pratique. Vous devez placer les classes dans un package si vous souhaitez qu’elles soient visibles par les classes à l’intérieur d’un package. Le servletcontainer, écrit en Java pur, doit également pouvoir les voir. Maintenant, Tomcat a des hacks pour cela, mais cela ne fonctionne que dans des versions / configurations spécifiques. Toujours, placez toujours les classes de servlet dans un package.

Voir également:

  • La page wiki de nos servlets

Sans rapport avec le problème concret:

J’ai installé Java EE

Veuillez noter que le téléchargement de Java EE depuis Oracle.com contient essentiellement le serveur d’applications Glassfish ainsi que de la documentation. Vous n’en avez pas besoin quand vous ne voulez que lancer des servlets sur Tomcat.

Voir également:

  • Java SE ou Java EE (standard ou entreprise)?

Apache est un serveur Web, pas un moteur de servlet / JSP. Tomcat est un moteur de servlet / JSP; Il en va de même pour Jetty. Vous devrez déployer vos servlets / JSP sur Tomcat et demander à Apache de transmettre les demandes à vos servlets / JSP à Tomcat.