2006-05-28

A JSP lenyom

Pár hónapja elhatároztam hogy bepótolom az elmaradásomat és némileg megtanulok normális klasszikus webalkalmazásokat írni. Nem rögtön a legmodernebb eszközökkel akartam kezdeni, hanem folyamatosan feljönni a szervletektől a jsp-n keresztül az Ajax-os eszközökig. Állítólag MVC keretrendszert is érdemes már használni. a Spring MVC-t választottam, mert a múltkor belenéztem a Struts-ba és nem volt szimpi első látásra (fölöslegesnek látszó mappeléseket és öröklődéseket kellett csinálni benne szerintem) és egyébként is a Spring-gel ismerkedtem mostanában.

Szóval: a szervletek és a sima régi JSP-k hamar megvoltak a hagyományos módszerrel. Mondhatni kiráztam a kisujjamból. Még akkor is lelkes voltam amikor az első Spring MVC handlermappingokat és controllereket konfiguráltam az xml-ben. Úgy gondoltam hogy ez tök jó lesz, cserélhető a megjelenítési réteg, moduláris meg minden. Amikor viszont egyre több jsp oldalam lett és közepesen bonyolult funkciókat akartam beépíteni, menthetetlenül kezdett kaotikussá válni az egész. Jávában, HTML-ben otthon kell lenni, ismerni kell a Spring (vagy akármelyik másik) MVC keretrendszer lelkivilágát és még a JSP-hez is érteni kell, beleértve az Expression Language-t -ami egy külön kis világ- és még a JSTL-t sem árt ha keni-vágja az ember. Nem beszéltem még az egyéb tag librarykról és még egy sor javascript-et sem írtam le. Nem mondom hogy MVC framework vagy EL, JSTL nélkül könnyebb programozni, de túl sokat nem segítenek. Fejleszteni egyébként is marha nehéz, mert csomó hiba futási időben derül ki és sokszor nem a hiba íródik ki közvetlenül, hanem valamelyik folyománya. És még hol vagyok az Ajaxtól, jól kinéző alkalmazásoktól? Ez egy sima model 2-es webalkalmazás lenne. Lehet hogy ki kellene próbálni más eszközöket.
Ehhez képest még a .net-es aspx megoldás is elég versenyképes a mögöttes kód rendszerével.

2006-05-03

JSTL meccs

Javalistán volt ez a probléma, de nekem is előjött:

"Ha egy JSP oldalba beleteszem a következõ sort:
nyitókacsacsőr%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %zárókacsacsőr

Akkor miért kapom a következõ üzenetet?
org.apache.jasper.JasperException: This absolute uri
(http://java.sun.com/jsp/jstl/core) cannot be resolved in either web.xml
or the jar files deployed with this application
A jstl.jar és a standard.jar fájlok bent vannak a WEB-INF/lib könyvtárban.

5.x-es Tomcat alatt működik, csak 4.x-es alatt nem."

Ezeket a linkeket ajánlották hozzá:
http://archive.midrange.com/web400/200404/msg00031.html
http://wiki.java.net/bin/view/People/DeployingCreatorApps -> Container

Mindenfélét találgattak, volt bennük igazság is, de megoldás végül nem született. Legalábbis nem írta a probléma felvetője hogy megtalálta a megoldást.

Az én próbálkozásaim, 5 hónappal a thread után:

Belenézve a standard.jar c.tld-jébe az uri http://java.sun.com/jstl/core, tehát a jsp-be is ez kell hogy kerüljön. Mellesleg JBoss 3.2.6-om van Apache Tomcat 5.0.28-cal. Így viszont NoSuchMethodError-t vág az arcomba úgyhogy verzióprobléma ez valószínűleg. Ez van még a tld-ben:
tlib version 1.0
jsp version 1.2
És bele van írva hogy JSTL 1.0 core library.

Meg kellene próbálni az 1.1-es JSTL-eket.
Letöltöttem az apache-ról az 1.1-et és átmásoltam a szükséges helyekre, de most is NoSuchMethodError jön. A JSTL-lel szállított standard-examples.war is elhasal ugyanúgy. Biztos 5-ös Tomcat van a JBoss-ban? (Igen.) Még a JBoss Management Console is ilyeneket dobál. Azt hiszem jobb lesz felhúznom egy új JBoss-t. Megtörtént (10 másodperc alatt). A téma most működik, beleértve a JBoss Management Console-t és a JSTL 1.1 példáit is.

Tehát végül nem tudom mi volt a probléma, de az biztos hogy a JBoss amin próbáltam már egy fél éve fenn van a gépemen és alaposan meg volt gyepálva. Ki tudja már milyen jar-okat cserélgettem ki, vagy töröltem benne.