PDA

View Full Version : [JSLT] Accedo al DB, ma spunta questo errore.


Matrixbob
10-06-2005, 11:32
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report

message

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

exception

org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jstl/sql cannot be resolved in either web.xml or the jar files deployed with this application
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:50)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:114)
org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:316)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:147)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1543)
org.apache.jasper.compiler.Parser.parse(Parser.java:126)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:146)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.5.9

Matrixbob
10-06-2005, 11:33
Questo è il "file.jsp":
<html>

<head><title>JDBC with JSTL</title></head>

<body>

<%@ taglib uri="http://java.sun.com/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

<sql:setDataSource driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/queryjdbc?user=root&password=MIAPWD" var="conn1" />

<sql:query var="persone" dataSource="${conn1}">select * from persona order by cf /sql:query>

<table border=1 align="center">

<thead><th>Codice Fiscale </th><th>Nome </th><th>Cognome </th></thead>

<tbody>
<c:forEach var="row" items="${persone.rows}">

<tr>
<td> <c:out value="${row.cf}"/> </td>
<td> <c:out value="${row.name}"/> </td>
<td> <c:out value="${row.cognome}"/> </td>
</tr>

</c:forEach>
</tbody>

</table>

</body>

</html>

Matrixbob
10-06-2005, 11:35
Che URI dovrei mettere?! :confused: :rolleyes:

Matrixbob
10-06-2005, 11:48
Incredibile :eek: nemmeno con:
<%@ taglib uri="http://java.sun.com/jstl/ea/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jstl/ea/core" prefix="c" %>

come dice qui:
http://www.onjava.com/pub/a/onjava/2002/03/13/jsp.html

:muro:
org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jstl/ea/sql cannot be resolved in either web.xml or the jar files deployed with this application

beppegrillo
10-06-2005, 11:56
Hai messo le librerie di jstl e configurato correttamente tomcat per riconoscerle?

Matrixbob
10-06-2005, 12:01
Hai messo le librerie di jstl e configurato correttamente tomcat per riconoscerle?
Direi di si ...

1] Ho settato così:
D:\www\public_html\WEB-INF\lib\jstl.jar

perchè in public_html stanno le mia jsp.

2] Le DBTAG in questa maniera funzionano.

3] il file è da 24kB

Mi sembra un problema di URI dei TAG, non della mia configurazione, ma potrei sempre sbagliare.

beppegrillo
10-06-2005, 12:17
Direi di si ...

1] Ho settato così:
D:\www\public_html\WEB-INF\lib\jstl.jar

perchè in public_html stanno le mia jsp.

2] Le DBTAG in questa maniera funzionano.

3] il file è da 24kB

Mi sembra un problema di URI dei TAG, non della mia configurazione, ma potrei sempre sbagliare.
Mi fai vedere il tuo web.xml?

Matrixbob
10-06-2005, 12:39
Mi fai vedere il tuo web.xml?
Quello in WEB-INF?!
E' questo:
<web-app>
<servlet>
<servlet-name>GreetingServlet</servlet-name>
<servlet-class>GreetingServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GreetingServlet</servlet-name>
<url-pattern>/GreetingServlet</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>GreetingServletPost</servlet-name>
<servlet-class>GreetingServletPost</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GreetingServletPost</servlet-name>
<url-pattern>/GreetingServletPost</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>QueryJdbc</servlet-name>
<servlet-class>QueryJdbc</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>QueryJdbc</servlet-name>
<url-pattern>/QueryJdbc</url-pattern>
</servlet-mapping>
</web-app>

Praticamente ci son solo le Servlet che ho, non sapevo ci dovesse essere qualcosaltro e soprattutto riferite alle JSP.

beppegrillo
10-06-2005, 12:45
Quello in WEB-INF?!
E' questo:

<web-app>
<servlet>
<servlet-name>GreetingServlet</servlet-name>
<servlet-class>GreetingServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GreetingServlet</servlet-name>
<url-pattern>/GreetingServlet</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>GreetingServletPost</servlet-name>
<servlet-class>GreetingServletPost</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GreetingServletPost</servlet-name>
<url-pattern>/GreetingServletPost</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>QueryJdbc</servlet-name>
<servlet-class>QueryJdbc</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>QueryJdbc</servlet-name>
<url-pattern>/QueryJdbc</url-pattern>
</servlet-mapping>
</web-app>


Praticamente ci son solo le Servlet che ho, non sapevo ci dovesse essere qualcosaltro e soprattutto riferite alle JSP.

Se non gli specifici dove si trovano le tue tag libraries non sà dove prenderle.
Bisogna mettere una cosa simile nel web.xml (o della tua applicazione o quello generale)

<taglib>
<taglib-uri>miaJSTL</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
<taglib>

Matrixbob
10-06-2005, 12:53
Se non gli specifici dove si trovano le tue tag libraries non sà dove prenderle.
Bisogna mettere una cosa simile nel web.xml (o della tua applicazione o quello generale)

<taglib>
<taglib-uri>miaJSTL</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
<taglib>
Ma guarda che proprio perchè essendo standard dovrebbe sapere che le standard sono nella cartella "lib".
Non le ho mica fatte io che devo specificargliele, se le avessi fatte io ti darei ragione.
Infatti per i DBTAG o il JDBC non ho fatto questa dichiarazione, cmq proverò come hai detto tu.

Matrixbob
10-06-2005, 12:56
CMQ quello che dici te forse è un'alternativa all'uso di questa direttiva:
<%@ taglib uri="http://java.sun.com/jstl/ea/sql" prefix="sql" %>

dove in teoria mi pare che vada a dirgli dove trovare la definizione in Internet.
Forse è meglio provare a definirle come dici tu in locale.
Se di questo si tratta.

Matrixbob
10-06-2005, 13:00
Grillo sono in difficoltà, non è che potresti essere + preciso sulla sintassi che dovrei utilizzare nel web.xml ?!

<taglib>
<taglib-uri> questo lo ignoro proprio </taglib-uri>
<taglib-location>/WEB-INF/lib/jslt.jar</taglib-location>
</taglib>

Matrixbob
10-06-2005, 13:02
Ho controllato con le DBTAG cosa facevo e facevo questo nel "file.jsp":
<%@ taglib uri="http://jakarta.apache.org/taglibs/dbtags" prefix="sql" %>

e con il file "taglibs-dbtags.jar" in "D:\www\public_html\WEB-INF\lib".

Basta, tutto lì.

beppegrillo
10-06-2005, 13:12
Le direttive da mettere nel web.xml sono :
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
<taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>
Anche se stiamo parlando delle librerie standard, devi comunque dirgli a quale path corrisponde l'uri che gli dai.
Ps. Poi quando fai gli include utilizza gli uri che ti ho messo io, visto che sono quelli dell'ultima versione di jstl.

^TiGeRShArK^
10-06-2005, 13:14
scusa, può essere ke mi confondo, ma tu non eri quello ke kiedeva quali jar utilizzare x le jstl???
poi le hai messe tutte nella directory, non è ke hai saltato il jar in cui ci sono i tag x l'sql???

Matrixbob
10-06-2005, 13:17
scusa, può essere ke mi confondo, ma tu non eri quello ke kiedeva quali jar utilizzare x le jstl???
poi le hai messe tutte nella directory, non è ke hai saltato il jar in cui ci sono i tag x l'sql???
Alla fine ho trovato il jslt.jar specifico da mettere in "lib".

Ma qui non dice che qualcosa è cambiato:

June 21, 2004
JSTL 1.2 Specification at java.net The jstl-spec-public project has been launched at java.net. The goal of this project is to make the JSTL 1.2 specification work as transparent as possible to the user community.


... in qualche modo mi rimandano qui:
http://java.sun.com/products/jsp/jstl/

magari è qui che troverò la nuova direttiva.

Matrixbob
10-06-2005, 13:29
Anche se stiamo parlando delle librerie standard, devi comunque dirgli a quale path corrisponde l'uri che gli dai.
Ps. Poi quando fai gli include utilizza gli uri che ti ho messo io, visto che sono quelli dell'ultima versione di jstl.
Ok come non detto, ma io ho un file unico jslt.jar non ho la location che dici tu, che metto:
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/lib/jslt.jar</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/lib/jslt.jar</taglib-location>
</taglib>

?!?!?!? :confused: :fagiano: ?!?!?!?

beppegrillo
10-06-2005, 13:36
Ok come non detto, ma io ho un file unico jslt.jar non ho la location che dici tu, che metto:

<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/lib/jslt.jar</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/lib/jslt.jar</taglib-location>
</taglib>


?!?!?!? :confused: :fagiano: ?!?!?!?
Se decomprimi quel jar vedi che ti verranno fuori le varie directory delle jstl :)

Matrixbob
10-06-2005, 14:03
Se decomprimi quel jar vedi che ti verranno fuori le varie directory delle jstl :)

Dato che ho strutturato così:
http://img100.echo.cx/img100/8784/nientejslt7da.gif

Ho settato così:
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/lib/jstl/javax/servlet/jsp/jstl/core</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/lib/jstl/javax/servlet/jsp/jstl/sql</taglib-location>
</taglib>

ma niente da fare, adesso ti posto l'errore.

Matrixbob
10-06-2005, 14:58
Anche secondo Jakarta si fa come dici tu in generale:
http://jakarta.apache.org/taglibs/tutorial.html


Installation and Deployment

a) Creating a Generic Tag Library
To Install a tag library you need to take the following steps:


bundle the tag classes in a jar file. Make sure to include the taglib {library}.tld file located in the /WEB-INF directory
add the tag {library}.jar file to the CLASSPATH
copy the {library}.jar file to the /WEB-INF/lib directory
define the taglib element in the /WEB-INF/web.xml file. For example:
<taglib>
<taglib-uri>http://jakarta.apache.org/taglibs/{library}</taglib-uri>
<taglib-location>/WEB-INF/{library}.tld</taglib-location>
</taglib>

define the tag extension in the jsp page. The <taglib-uri> and the uri directive must match. The prefix identifies the tags in the tag library within the jsp page. For example:
<%@ taglib uri="http://jakarta.apache.org/taglibs/{library}" prefix="x" %>


Mi segno un po' di link va, che non fa mai male:
http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSTL3.html#72409

Matrixbob
10-06-2005, 15:15
Ok,
ho scaricato il pacchetto consigliato da Jakarta "jakarta-taglibs-20050610.zip" ed è mooolto abbondante:
http://img208.echo.cx/img208/6335/jstl1mk.gif

Dentro la cartella standard ho le JSTL 1.1 (almeno questo è quello che dice il README):
http://img208.echo.cx/img208/8131/dajakarta4xm.gif

Ora sono confuso su come disporre i file ... :confused: :muro: :mbe:

Help che c'è la facciamo :fagiano: :oink: :O

Matrixbob
10-06-2005, 15:30
AGGIORNAMENTO DELLA MIA SITUAZIONE
Mio "D:\www\public_html\WEB-INF\web.xml":

<web-app>

<servlet>
<servlet-name>GreetingServlet</servlet-name>
<servlet-class>GreetingServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GreetingServlet</servlet-name>
<url-pattern>/GreetingServlet</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>GreetingServletPost</servlet-name>
<servlet-class>GreetingServletPost</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GreetingServletPost</servlet-name>
<url-pattern>/GreetingServletPost</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>QueryJdbc</servlet-name>
<servlet-class>QueryJdbc</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>QueryJdbc</servlet-name>
<url-pattern>/QueryJdbc</url-pattern>
</servlet-mapping>

<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>

</web-app>

Anche c.tld e sql.tld si trovano in questa directory "WEB-INF".

Ho invece spostato qui il JAR "D:\www\public_html\WEB-INF\lib\jstl.jar".

NUOVO ERRORE

type Exception report

message

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

exception

org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:50)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:279)
org.apache.jasper.compiler.TagLibraryInfoImpl.createValidator(TagLibraryInfoImpl.java:653)
org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:246)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:162)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1543)
org.apache.jasper.compiler.Parser.parse(Parser.java:126)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:146)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.lang.ClassNotFoundException: org.apache.taglibs.standard.tlv.JstlCoreTLV
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1332)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1181)
org.apache.jasper.compiler.TagLibraryInfoImpl.createValidator(TagLibraryInfoImpl.java:649)
org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:246)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:162)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1543)
org.apache.jasper.compiler.Parser.parse(Parser.java:126)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:146)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.

beppegrillo
10-06-2005, 15:33
Ok come non detto, ma io ho un file unico jslt.jar non ho la location che dici tu, che metto:

<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/lib/jslt.jar</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/lib/jslt.jar</taglib-location>
</taglib>



Allora decomprimi il secondo pacchetto che hai scaricato delle tag libraries (quello standard) in /WEB-INF/lib/ , dopo editi il web.xml aggiungendo quelle cose che ti ho inserito nel post precedente. Fatto questo non dovresti avere problemi, se li hai dimmi quali errori ricevi.

beppegrillo
10-06-2005, 15:40
Allora prendi i .tld e li metti in /WEB-INF e poi .jar rispettivi li metti in /WEB-INF/lib
E poi nel file web.xml metti una cosa così:
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/lib/sql.tld</taglib-location>
</taglib>
Deve funzionarti :D

Matrixbob
10-06-2005, 15:50
Allora prendi i .tld e li metti in /WEB-INF e poi .jar rispettivi li metti in /WEB-INF/lib
E poi nel file web.xml metti una cosa così:
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/lib/sql.tld</taglib-location>
</taglib>
Deve funzionarti :D
Infatti, è quello che penso anche io, ma non funziona.
Ho aperto il c.tld e vedo che usa l'URI:
http://java.sun.com/jsp/jstl/core

Ho provato a rinominarlo così nel mio web.xml e nella mia JSP, ma niente ... ALLA FACCIAZZA DELLO STANDARD!!!
SONO + CUSTOM CHE LE HARLEY DAVIDSON!!!! :mad: :ncomment: MA VAF' :muro: :mc:

Vado a farmi 1 giro che è meglio ... altrimenti :cry: !!!

Matrixbob
10-06-2005, 16:18
Allora prendi i .tld e li metti in /WEB-INF e poi .jar rispettivi li metti in /WEB-INF/lib
E poi nel file web.xml metti una cosa così:
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/lib/sql.tld</taglib-location>
</taglib>
Deve funzionarti :D
PS
... mi sa che qui il "lib" nel PATH non volevi metterlo.

Ho anche aggiunto nel CLASSPATH (come suggerito da Jakarta) il mio jstl.jar.

Adesso mi prendo veramente 1 pausa e vado a studiare Analisi 2, nel frattempo se qualche illuminato sa metter mano .... :D

Matrixbob
10-06-2005, 16:40
VOLEVO SOLO METTERE IN EVIDENZA CHE
I file possibili da scaricare per ste cXXzo di JSTL sono:

esclusivamente le JSTL
http://mirrors.publicshout.org/apache/jakarta/taglibs/standard/binaries/jakarta-taglibs-standard-1.1.2.zip

tutte le librerie TAG comprese quelle JSTL
http://cvs.apache.org/builds/jakarta-taglibs/nightly/jakarta-taglibs-20050610.zip

Miracolosamente i 2 file jstl.jar hanno dimensioni differenti.

In teoria ci dovrebbe servire 5 min x installarle, ma invece niente (almeno per me).

NO COMMENT.

Matrixbob
10-06-2005, 20:23
Ho dovuto mettere in "lib" anche standard.jar ed ora il problema di classe non trovata è sormontato!!

Questo è il codice che voglio eseguire:

<html>

<head><title>JDBC with JSTL</title></head>

<body>

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<sql:setDataSource driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/queryjdbc?user=root&password=cane" var="conn1" />

<sql:query var="persone" dataSource="${conn1}"> SELECT * FROM persone ORDER BY cf </sql:query>

<table border=1 align="center">

<thead><th>Codice Fiscale </th><th>Nome </th><th>Cognome </th></thead>

<tbody>
<c:forEach var="row" items="${persone.rows}">

<tr>
<td> <c:out value="${row.cf}"/> </td>
<td> <c:out value="${row.name}"/> </td>
<td> <c:out value="${row.cognome}"/> </td>
</tr>

</c:forEach>
</tbody>

</table>

</body>

</html>

... e questo è il nuovo errore:

exception

javax.servlet.ServletException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver"
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.provajdbc1_jsp._jspService(org.apache.jsp.provajdbc1_jsp:105)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver"
org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(Unknown Source)
org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(Unknown Source)
org.apache.jsp.provajdbc1_jsp._jspx_meth_sql_query_0(org.apache.jsp.provajdbc1_jsp:142)
org.apache.jsp.provajdbc1_jsp._jspService(org.apache.jsp.provajdbc1_jsp:81)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Matrixbob
10-06-2005, 20:51
Garantisco che il driver lo ho nella cartella "lib" e si chiama:
mysql-connector-java-3.1.8-bin.jar

Tano è vero che con le DBTAGS funziona questo:

<html>

<head><title>JDBC with Tags</title></head>

<body>

<%@ taglib uri="http://jakarta.apache.org/taglibs/dbtags" prefix="sql" %>

<sql:connection id="conn1">
<sql:url> jdbc:mysql://localhost/queryjdbc?user=root&password=cane </sql:url>
<sql:driver> org.gjt.mm.mysql.Driver </sql:driver>
</sql:connection>

<table border=1 align="center">

<thead>
<th>Codice Fiscale </th>
<th>Nome </th>
<th>Cognome </th>
</thead>

<tbody>
<sql:statement id="stm1" conn="conn1">
<sql:query> SELECT * FROM persone ORDER BY cf </sql:query>
<sql:resultSet id="rs1">
<tr>
<td><sql:getColumn position="1"/></td>
<td><sql:getColumn position="2"/></td>
<td><sql:getColumn position="3"/></td>
</tr>
</sql:resultSet>
</sql:statement>
</tbody>

</table>

<%--
<sql:statement id="ins1" conn="conn1">
<sql:query> INSERT INTO persone VALUES('DDDDDD','Tony','Russo') </sql:query>
<sql:execute ignoreErrors="true"/>
</sql:statement>
--%>

<sql:closeConnection conn="conn1"/>

</body>

</html>

Matrixbob
10-06-2005, 21:30
Ho provato anche quest'altra sintassi:
<sql:setDataSource driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/queryjdbc" user="root" password="MIAPWD" var="conn1" />

... analizzando l'sql.tld, ma probabilemnte l'errore sta altrove. :(

Matrixbob
10-06-2005, 22:27
Secondo me questo:
java.sql.SQLException: No suitable driver

è un BUG, perhè TOMCAT non può venirmi a dire che non c'è il driver dato che tutto quello che c'è in "lib" soprattutto in forma diJAR lui deve vederlo.

Inoltre glielo ho aggiunto nel CLASSPATH ... ancora un po' compilo io bit a bit.

IMPOSSIBILE anche che non si compili questo:
<sql:setDataSource
var="conn1"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/queryjdbc"
user="root"
password="MIAPWD"
/>

Matrixbob
11-06-2005, 10:19
Altro che "cubo di kubrick"!!!
Ragazzi godetevi il weekend, ma se da lunedì mi date un'ulteriore mano vi ringrazierei molto.
Anche solo pareri che poi ci penserò io a applicare.

Adesso proverò i vari test:
[1] Tutti i driver JDBC di MySQL
[2] Mi butto su PostgreSQL

Matrixbob
11-06-2005, 21:56
[1] Tutti i driver JDBC di MySQL

Bene, sembra non esistere 1 driver JDBC di tipo 4 per PostgreSQL:
http://jdbc.postgresql.org/download.html

Infatti mettendo il:
postgresql-8.0-311.jdbc3.jar

ottengo questa magnifica query [non fatta però :( ]:
http://img191.echo.cx/img191/8246/errquerypsql7oq.gif


[2] Mi butto su PostgreSQL
... va beh 1 PM per capirlo e posso già mettrelo da parte ...

Matrixbob
11-06-2005, 21:58
Questo era il "perfetto" codice:

<html>

<head><title>JDBC with JSTL</title></head>

<body>

<%@ taglib uri="http://jakarta.apache.org/taglibs/sql" prefix="sql" %>
<%@ taglib uri="http://jakarta.apache.org/taglibs/c" prefix="c" %>

<sql:setDataSource
var="conn1"
driver="org.postgresql.Driver"
url="jdbc:postgresql://localhost/queryjdbc"
user="postgres"
password="cane"
/>

<sql:query var="persone" dataSource="${conn1}">
SELECT * FROM persone ORDER BY cf
</sql:query>

<table border=1 align="center">

<thead><th>Codice Fiscale </th><th>Nome </th><th>Cognome </th></thead>

<tbody>

<c:forEach var="row" items="${persone.rows}">
<tr>
<td> <c:out value="${row.cf}"/> </td>
<td> <c:out value="${row.name}"/> </td>
<td> <c:out value="${row.cognome}"/> </td>
</tr>
</c:forEach>

</tbody>

</table>

</body>

</html>

Matrixbob
11-06-2005, 23:08
Cioè, guardate cosa sono stato costretto a fare:
http://forum.java.sun.com/thread.jspa?threadID=635379

Matrixbob
12-06-2005, 14:37
Forse qua la soluzione:
http://dev.mysql.com/doc/connector/j/en/cj-tomcat-config.html

ma non capisco come configurare il server.xml ...

e alla fine ho aggiunto dentro i TAG server questo:

<Context path="www" docBase="D:\www\public_html">

<Resource name="jdbc/MySQLDB"
auth="Container"
type="javax.sql.DataSource"/>

<!-- The name you used above, must match _exactly_ here!

The connection pool will be bound into JNDI with the name
"java:/comp/env/jdbc/MySQLDB"
-->

<ResourceParams name="jdbc/MySQLDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>

<!-- Don't set this any higher than max_connections on your
MySQL server, usually this should be a 10 or a few 10's
of connections, not hundreds or thousands -->

<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>

<!-- You don't want to many idle connections hanging around
if you can avoid it, only enough to soak up a spike in
the load -->

<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>

<!-- Don't use autoReconnect=true, it's going away eventually
and it's a crutch for older connection pools that couldn't
test connections. You need to decide if your application is
supposed to deal with SQLExceptions (hint, it should), and
how much of a performance penalty you're willing to pay
to ensure 'freshness' of the connection -->

<parameter>
<name>validationQuery</name>
<value>SELECT 1</value>
</parameter>

<!-- The most conservative approach is to test connections
before they're given to your application. For most applications
this is okay, the query used above is very small and takes
no real server resources to process, other than the time used
to traverse the network.

If you have a high-load application you'll need to rely on
something else. -->

<parameter>
<name>testOnBorrow</name>
<value>true</value>
</parameter>

<!-- Otherwise, or in addition to testOnBorrow, you can test
while connections are sitting idle -->

<parameter>
<name>testWhileIdle</name>
<value>true</value>
</parameter>

<!-- You have to set this value, otherwise even though
you've asked connections to be tested while idle,
the idle evicter thread will never run -->

<parameter>
<name>timeBetweenEvictionRunsMillis</name>
<value>10000</value>
</parameter>

<!-- Don't allow connections to hang out idle too long,
never longer than what wait_timeout is set to on the
server...A few minutes or even fraction of a minute
is sometimes okay here, it depends on your application
and how much spikey load it will see -->

<parameter>
<name>minEvictableIdleTimeMillis</name>
<value>60000</value>
</parameter>

<!-- Username and password used when connecting to MySQL -->

<parameter>
<name>username</name>
<value>root</value>
</parameter>

<parameter>
<name>password</name>
<value>cane</value>
</parameter>

<!-- Class name for the Connector/J driver -->

<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>

<!-- The JDBC connection url for connecting to MySQL, notice
that if you want to pass any other MySQL-specific parameters
you should pass them here in the URL, setting them using the
parameter tags above will have no effect, you will also
need to use &amp; to separate parameter values as the
ampersand is a reserved character in XML -->

<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/test</value>
</parameter>

</ResourceParams>
</Context>

Matrixbob
12-06-2005, 15:27
Ma niente anche così lo script delle DBTAGS funziona, mentre quello delle JSTL no.
Oltre questo non so fare ....

Matrixbob
13-06-2005, 21:03
UP!

Matrixbob
17-06-2005, 23:54
Così dice l'unica repplica che ho avuto dagli States:

if you use JSTL 1.1 use this:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

remember that you must use JSP2.0 and Tomcat 5.0
your web.xml must appear like :

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
.............
<taglib>
<taglib-uri>/WEB-INF/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/c</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
.............
</web-app>


Proverò al + presto.

Matrixbob
21-06-2005, 17:17
Così dice l'unica repplica che ho avuto dagli States:


Proverò al + presto.
Perfetto, come dice "tottem71" funziona.

DigitalKiller
22-06-2005, 11:41
Mi potresti spiegare come installare correttamente i taglibs e come utilizzarli?
Il tuo 3D mi ha incuriosito e dato che sto scrivendo delle pagine jsp, vorrei provare ad utilizzarli. :)
Grazie

Matrixbob
23-06-2005, 10:29
Mi potresti spiegare come installare correttamente i taglibs e come utilizzarli?
Il tuo 3D mi ha incuriosito e dato che sto scrivendo delle pagine jsp, vorrei provare ad utilizzarli. :)
Grazie
Prova a cercare info in questo tutorial che ho sritto con altri utenti di hwupgrade:
[Tutorial] Installazione "webserver" x programmazione "lato server" (http://www.hwupgrade.it/forum/showthread.php?t=939594)

Per quanto riguarda la configurazione JSLT segnalo anche:
The Tomcat 4 Servlet/JSP Container - JNDI Datasource HOW-TO (http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html)