Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    54

    [Java-Servlet] Errore 503

    Buon pomeriggio forum
    è un po' che non passo da queste parti ma avrei bisogno di una mano.
    Mi sto cimentando a sviluppare servlet ma per ora non combinato molto.. non riesco nemmeno a far partire la semplice helloworld..
    dunque.. mi sono creato la cartella ProvaServlet nella cartella webapps.. dentro di essa poi ho creato WEB-INF con le relative sotto cartelle lib, classes e src.. poi mi sono creato il file web.xml con il seguente codice:

    codice:
    <?xml version="1.0" encoding="windows-1250"?> <!DOCTYPE web-app PUBLIC       '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN'   'http://java.sun.com/dtd/web-app_2_3.dtd'> 
    <web-app>   
       <servlet>     
                  <servlet-name>Prova_Servlet</servlet-name>     
                  <servlet-class>Prova_Servlet</servlet-class>   
        </servlet>    
    
        <servlet-mapping>    
                   <servlet-name>Prova_Servlet</servlet-name>     
                   <url-pattern>/Prova_Servlet</url-pattern>   
        </servlet-mapping>
    </web-app>
    poi mi sono creato il file Prova_Servlet.java

    codice:
    import java.io.*; 
    import javax.servlet.*;
    import javax.servlet.http.*;  
    public class Prova_Servlet extends HttpServlet {   
          public void doGet(HttpServletRequest request, HttpServletResponse response)     throws IOException, ServletException     {        
             response.setContentType("text/html");         
             PrintWriter out = response.getWriter();        
             out.println("<html>");         
             out.println("<head>");         
             out.println("<title>SALVE!</title>");         
             out.println("</head>");         
             out.println("<body>");         
             out.println("<h1>Questa è una prima prova di una semplicissima servlet</h1>");                
             out.println("</body>");        
             out.println("</html>");         
             out.close();     
           } 
    }
    ho compilato senza errori questo file e ho messo Prova_Servlet.class dentro alla cartella lib sono andato sul browser ed ho scritto: http://localhost:8080/ProvaServlet/Prova_Servlet e mi ha restituito il seguente errore:

    HTTP Status 503 - This application is not currently available

    type Status report

    message This application is not currently available

    description The requested service (This application is not currently available) is not currently available.
    Apache Tomcat/6.0.33

    ho controllato il log e mi riporta questo errore:

    INFO: Deploying web application directory ProvaServlet
    3-feb-2012 16.43.18 org.apache.tomcat.util.modeler.Registry registerComponent
    GRAVE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/ProvaServlet,J2EEApplication=none,J2EEServer=none
    3-feb-2012 16.43.18 org.apache.catalina.startup.HostConfig deployDirectory
    GRAVE: Error deploying web application directory ProvaServlet
    java.lang.UnsupportedClassVersionError: Prova_Servlet : Unsupported major.minor version 51.0 (unable to load class Prova_Servlet)
    at org.apache.catalina.loader.WebappClassLoader.findC lassInternal(WebappClassLoader.java:2822)
    at org.apache.catalina.loader.WebappClassLoader.findC lass(WebappClassLoader.java:1159)
    at org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoader.java:1647)
    at org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoader.java:1526)
    at org.apache.catalina.startup.WebAnnotationSet.loadA pplicationServletAnnotations(WebAnnotationSet.java :108)
    at org.apache.catalina.startup.WebAnnotationSet.loadA pplicationAnnotations(WebAnnotationSet.java:58)
    at org.apache.catalina.startup.ContextConfig.applicat ionAnnotationsConfig(ContextConfig.java:297)
    at org.apache.catalina.startup.ContextConfig.start(Co ntextConfig.java:1078)
    at org.apache.catalina.startup.ContextConfig.lifecycl eEvent(ContextConfig.java:261)
    at org.apache.catalina.util.LifecycleSupport.fireLife cycleEvent(LifecycleSupport.java:142)
    at org.apache.catalina.core.StandardContext.start(Sta ndardContext.java:4612)
    at org.apache.catalina.core.ContainerBase.addChildInt ernal(ContainerBase.java:799)
    at org.apache.catalina.core.ContainerBase.addChild(Co ntainerBase.java:779)
    at org.apache.catalina.core.StandardHost.addChild(Sta ndardHost.java:601)
    at org.apache.catalina.startup.HostConfig.deployDirec tory(HostConfig.java:1079)
    at org.apache.catalina.startup.HostConfig.deployDirec tories(HostConfig.java:1002)
    at org.apache.catalina.startup.HostConfig.deployApps( HostConfig.java:506)
    at org.apache.catalina.startup.HostConfig.start(HostC onfig.java:1317)
    at org.apache.catalina.startup.HostConfig.lifecycleEv ent(HostConfig.java:324)
    at org.apache.catalina.util.LifecycleSupport.fireLife cycleEvent(LifecycleSupport.java:142)
    at org.apache.catalina.core.ContainerBase.start(Conta inerBase.java:1065)
    at org.apache.catalina.core.StandardHost.start(Standa rdHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(Conta inerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(Stan dardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(Sta ndardService.java:525)
    at org.apache.catalina.core.StandardServer.start(Stan dardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalin a.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootst rap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstr ap.java:414)

    come posso risolvere!? è da oggi che ci sbatto la testa consultando anche i file di esempio che sono presenti in tomcat ma non ho risolto..

  2. #2
    guarda un consiglio che ti posso dare e di usare netbeans

    fai new project java EE, new java Enterprise Application e fai tutto lui guarda il tutorial e capisci subito come crearlo. io non ho neanche avuto problemi. usa classfish come server.


    poi posso pure sbagliarmi pero io mi sn trovato bene. anche se è un consiglio di un neofita.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quando si parla di servlet deve sempre esserci un package.
    La tua servlet, invece, non è in nessun package.

    Questa è la prima cosa che ho notato e non sono andato avanti a guardare altro.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    54
    intanto grazie per le risposte..
    nell'esempio da cui ho preso spunto non parlava di package..
    come lo definisco!?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    54
    dunque.. ho fatto una piccola ricerca e ho provato a definire il package.. ma non penso di averlo fatto nel modo corretto in quanto mi mostra sempre lo stesso errore..
    questa è la modifica fatta al file Prova_Servlet.java
    codice:
    package test;
    
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    public class Prova_Servlet extends HttpServlet {
      //eredita il metodo doGet() della classe HttpServlet 
      public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
        {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println("<html>");
            out.println("<head>");
            out.println("<title>ZALVE!</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Questa è una prima prova di una semplicissima servlet che implementa il metodo doGet della classe HttpServlet</h1>");
            out.println("</body>");
            out.println("</html>");
            out.close();
        }
    }
    questa è la modifica al file xml
    codice:
     
    <?xml version="1.0" encoding="windows-1250"?>
    <!DOCTYPE web-app PUBLIC    
      '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN'
      'http://java.sun.com/dtd/web-app_2_3.dtd'>
    <web-app>
      <servlet>
        <servlet-name>Prova_Servlet</servlet-name>
        <servlet-class>test.Prova_Servlet</servlet-class>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>Prova_Servlet</servlet-name>
        <url-pattern>/Prova_Servlet</url-pattern>
      </servlet-mapping>
    </web-app>
    nella cartella classes di web-inf ho creato una cartella test dove ho messo il file .java e il file .class.. è tutto corretto quello che ho fatto oppure manca qualche passaggio!?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Cioè... tu stai scrivendo servlet (ambito JEE), senza avere le conoscenze di base dei package (JSE)? Non è un buon principio. Se non si conoscono bene le basi di JSE, non si può pensare di poter affrontare tecnologie più ampie e complesse come JEE.

    Ad ogni modo, la questione dei package è delicata, ma semplice:

    1) Una classe fa parte di un package se la prima riga del suo sorgente è appunto la direttiva "package". Tale direttiva prevede che sia dato un nome al package.
    2) Quando una classe fa parte di un package, deve essere contenuta all'interno di una directory che rispecchi fedelmente il nome del package.

    Vediamo alcuni esempi:

    Esempio 1: Classe "Pippo", nel package "test":
    codice:
    package test;
    ...
    public class Pippo ... {
       ...
    }
    Questa classe deve essere contenuta all'interno di una directory che si chiama "test":
    codice:
    test
     +-- Pippo.class
    Esempio 2: Classe "Pippo", nel package "app.commons.utils":
    codice:
    package app.commons.utils;
    ...
    public class Pippo ... {
       ...
    }
    Questa classe deve essere contenuta all'interno di una directory che si chiama "utils", la quale deve essere contenuta a sua volta in una directory chiamata "commons", la quale deve essere all'interno di una directory "app"
    codice:
    app
     +-- commons
           +-- utils
                 +-- Pippo.class
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    54
    grazie per la delucidazione innanzitutto..
    io ho sempre scritto file java senza mai aver definito il package.. per questo mi trovi impreparato sull'argomento.. ho qualche base di programmazione java dall'università ma questo aspetto proprio non me lo ricordo..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.