Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    9

    problema con lo startup di una servlet in tomcat 6.0.29

    Salve a tutti,
    sto seguendo dei corsi web in internet e ho problemi con un esempio realizzato che supporta il concetto di Tread safety.
    La servlet non si riesce ad istanzare per il cui sul browser ottengo il messaggio :

    *************************************************
    HTTP Status 500 -

    type Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    javax.servlet.ServletException: Error instantiating servlet class GestionePrenotazioni
    org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:857)
    org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run( JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:619)

    root cause

    java.lang.NoClassDefFoundError: LGestionePrenotazioni$Prenotazione;
    java.lang.Class.getDeclaredFields0(Native Method)
    java.lang.Class.privateGetDeclaredFields(Class.jav a:2291)
    java.lang.Class.getDeclaredFields(Class.java:1743)
    org.apache.catalina.util.DefaultAnnotationProcesso r.processAnnotations(DefaultAnnotationProcessor.ja va:181)
    org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:857)
    org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run( JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:619)

    root cause

    java.lang.ClassNotFoundException: GestionePrenotazioni$Prenotazione
    org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoader.java:1645)
    org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoader.java:1491)
    java.lang.Class.getDeclaredFields0(Native Method)
    java.lang.Class.privateGetDeclaredFields(Class.jav a:2291)
    java.lang.Class.getDeclaredFields(Class.java:1743)
    org.apache.catalina.util.DefaultAnnotationProcesso r.processAnnotations(DefaultAnnotationProcessor.ja va:181)
    org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:857)
    org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run( JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:619)

    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs.
    ************************************************** ***
    Qualcuno mi puo' aiutare ?
    Saluti
    Mitia64


    --------------------------------------------------
    il codice della servlet e' il seguente
    ---------------------------------------------------
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.util.*;
    import java.io.*;
    import java.text.*;

    public class GestionePrenotazioni extends HttpServlet {

    class Prenotazione {
    public String descrizione;
    public int postiTotali;
    public int postiLiberi;

    Prenotazione() {
    descrizione = "";
    postiTotali=0;
    postiLiberi=0;
    }

    void SetDescrizione(String desc) {
    descrizione=desc;
    return;
    }

    void SetPostiTotali(int posti) {
    postiTotali=posti;
    return;
    }

    void SetPostiLiberi(int posti) {
    postiLiberi=posti;
    return;
    }

    int GetPostiLiberi() {
    int posti=postiLiberi;
    return(posti);
    }
    } Prenotazione volo;

    public void init(ServletConfig conf) throws ServletException {
    super.init(conf);
    volo=new Prenotazione();
    //volo.descrizione=getInitParameter("descrizioneVolo ");
    volo.SetDescrizione(getInitParameter("descrizioneV olo"));

    //volo.postiTotali=Integer.parseInt(getInitParameter ("numeroTotalePosti"));
    volo.SetPostiTotali(Integer.parseInt(getInitParame ter("numeroTotalePosti")));
    try {
    String path=getServletContext().getRealPath("")+File.sepa rator+
    getInitParameter("nomeFilePosti");
    DataInputStream f=new DataInputStream(new FileInputStream(path));
    // volo.postiLiberi=f.readInt();
    volo.SetPostiLiberi(f.readInt());
    f.close();
    } catch (IOException e) {
    // volo.postiLiberi=Integer.parseInt(getInitParameter ("numeroTotalePosti"));
    volo.SetPostiLiberi(Integer.parseInt(getInitParame ter("numeroTotalePosti")));
    }
    }
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    ......
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

    ...... public void destroy() {
    try {
    String path=getServletContext().getRealPath("")+File.sepa rator+getInitParameter("nomeFilePosti");
    DataOutputStream f=new DataOutputStream(new FileOutputStream(path));
    // f.writeInt(volo.postiLiberi);
    f.writeInt(volo.GetPostiLiberi());
    f.close();
    } catch (IOException e) { }
    }
    }





    --------------------------------------------------
    il codice web.xml e' il seguente:
    ---------------------------------------------------

    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!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>GestionePrenotazioni</servlet-name>
    <servlet-class>GestionePrenotazioni</servlet-class>
    <init-param>
    <param-name>descrizioneVolo</param-name>
    <param-value>MD714: Genova - Roma</param-value>
    </init-param>
    <init-param>
    <param-name>numeroTotalePosti</param-name>
    <param-value>100</param-value>
    </init-param>
    <init-param>
    <param-name>nomeFilePosti</param-name>
    <param-value>posti_liberi</param-value>
    </init-param>
    <init-param>
    <param-name>nomeFileClienti</param-name>
    <param-value>clienti.txt</param-value>
    </init-param>
    </servlet>

    <servlet-mapping>
    <servlet-name>GestionePrenotazioni</servlet-name>
    <url-pattern>/servlet/Prenotazione</url-pattern>
    </servlet-mapping>
    </web-app>
    ~

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    9

    ancora : problema con lo startup di una servlet in tomcat 6.0.29

    Ciao a tutti ,
    capisco che il problema indicato, nel messaggio precedente, sia stato espresso in modo incomprensibile per cui penso di avere individuato il problema attraverso delle prove.
    Vi riporto le info che sono riuscito a estrarre :

    - data una servlet generica MiaServlet
    - inserisco nella servlet la dichiarazione di una classe del tipo
    class MiaClasse {
    String descrizione;
    int numero;
    }
    - se ora ricompilo e installo la servlet
    (cp MiaServlet.class <tomcat_home>/webapps/test/WEB-INF/classess/. )
    la servlet viene istanziata e il tutto funziona

    - se aggiungo alla servlet la definizione di una oggetto appartenente alla classe MiaClasse
    del tipo :
    MiaClasse variabile_mia_classe;
    e ricompilo la servlet e installo
    (cp MiaServlet.class <tomcat_home>/webapps/test/WEB-INF/classess/. )
    la servlet non viene istanziata e non funziona l'applicazione

    ho come la sensazione di aver dimenticato qualche cosa, ma che cosa?

    Saluti e Grazie
    Mitia64

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    9

    ancora problema con lo startup di una servlet in tomcat 6.0.29

    Salve a tutti,
    forse ho trovato la soluzione anche se non comprendo.
    La dichiarazione di una classe interna (inner class) ad una servlet mi crea una exception durante la creazione dell' istanza della servlet, per cui l'applicazione non funziona.
    Se la classe viene dichiarata esternamente come classe public funziona tutto (ho due sorgenti MyServlet.java e MyClass.java).

    Qualcuno sa dirmi se e' possibile creare una classe interna (inner class) ad una servlet ?

    Grazie
    Mitia64

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.