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>
~

Rispondi quotando