Starší komentáře ke článku: Java Servlets - JDBC, JNDI a dátové zdroje 2.

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Roman Pichlik

Datum vložení: 15.10.2003 7:23:08

Chtel jsem se zeptat jestli by nemelo byt synchronizovane i vytvoreni Statementu? Konkretene <B>con.createStatement(); </B> nebot k objektu con, ktery je instancni promennou, muze mit pristup vice vlaken a mohlo by dojit k nekonzistenci.

Avatar

Autor komentáře: Marek Branicky

Datum vložení: 15.10.2003 8:02:18

Vlastne <B>áno</B> máte pravdu. Vôbec som si tento aspekt neuvedomil. Ďakujem za upozornenie. Tak ako je <I>ds</I> inštančnou premennou tak je aj <I>con</I> inštančnou premennou.

Riešením teda je buď synchronizovať aj vytváranie objektu <I>Statement</I> alebo vložiť deklaráciu premennej <I>Connection con</I> do metódy <I>doGet()</I>.

Ďakujem že tak pozorne čítane moje články. Pomáhame si tým navzájom.

Avatar

Autor komentáře: Radovana Straube

Datum vložení: 15.10.2003 12:34:18

Ja spominany postup prenositelny aj na ine aplikacne servre alebo je pouzitelny len pod Tomcatom?

Avatar

Autor komentáře: Marek Branicky

Datum vložení: 15.10.2003 13:03:52

Budem citovať zo stránky <a href='http://jakarta.apache.org/commons/dbcp/' target='_blank'>http://jakarta.apache.org/commons/dbcp/</a> :

"Applications can use the commons-dbcp component <B>directly</B> or through the <B>existing interface</B> of their container / supporting framework. For example the Tomcat servlet container presents a DBCP DataSource as a JNDI Datasource."

Samotný postup uvedený v článku využíva JNDI Datasource. Takže ak váš server podporuje túto techniku, môžete použiť aj uvedený postup. V každom prípade treba si pozrieť dokumentáciu k vášmu serveru.

Takže myslím, že vaša otázka je zodpovedaná.

Avatar

Autor komentáře: Honza

Datum vložení: 1.3.2004 15:48:07

Pokud se nemýlím, tak zde uvedený způsob <B>musí</B> fungovat i na jiném kontejneru než je Tomcat. Specifikace j2ee (nevím jak starší ale určitě 1.4) přímo vyžaduje, aby databázový zdroj byl zpřístupněn přes JNDI, pomocí zde uvedeného principu, místo toho, aby byl objekt <I>connection</I> vytvářen přímo v kódu přes DriverManager. Lišit se asi bude mapování databázového ovladače na referenční název (přes JNDI dostupný v kontextu env/jdbc) - zde soubor <I>server.xml</I>.
Pokud jsou zde nějaké nepřesnosti, nebo pokud se úplně pletu, budu rád, když mne někdo opraví.
díky za reakci

Avatar

Autor komentáře: Emdot

Datum vložení: 15.10.2003 15:34:12

Diky za kvalitni clanek. Vypada to, ze se serie pomalu dostava s faze "Pro zacatecniky" do faze "Pro pokrocile". Diky za osvetleni tematu a hodne stesti a nadseni v nasledujicich clancich "Pro pokrocile"! :)

m.

PS: jeste je tam chybka v "1. Definovať JNDI zdroj v deskriptore webovej aplikácie - w<B>w</B>b.xml."

Avatar

Autor komentáře: Filip

Datum vložení: 16.10.2003 13:25:00

Moc pekny clanek. Neco z toho jsem si zkousel, ale narazil jsem na, pro me nepochopitelny, problem. Nadeklaruji si 2 promene typu String, jedne z nich priradim hodnotu primo v programu, do druhe ji nactu z DB (pomoci getString()). Obe hodnoty jsou stejne, ale kdyz je porovnam (if(pr1==pr2) ), vyhodnoti se mi to jako ruzne. Prosim Vas o radu jak toto vyresit.

Diky

Avatar

Autor komentáře: Marek Branicky

Datum vložení: 16.10.2003 13:56:22

Hmm. Takže píšete že máte dve premenné typu String.

1.) reťazce sa porovnávajú na rovnosť nie tak ako ste uviedol (==) ale pomocou metódy <I>equals()</I>. Čiže nejak takto: <I>pr1.equals(pr2); </I>. Metóda vám vráti true ak sa reťazce rovnajú (pozor na prázdne znaky).
2.) skúste samotné reťazce pred porovnaním na rovnosť (hlavne ten z databázy) orezať metódou <I>trim()</I>.

Prajem vám úspech.

Avatar

Autor komentáře: Tom Pop

Datum vložení: 8.12.2003 15:02:42

Zdravim,
jak mam vytvorit connection pool, kdyz mam vlastni aplikaci, ve ktere pouzivam svuj SQL konektor, vyuzivajici metody connect, disconnect apod.
Nakonfiguroval jsem si Tomcata -- web.xml, server.xml a ted potrebuju vytvorit pool a potom se k nemu pripojovat. Jde mi o to, ze nevim, jak prepsat ten vlastni konektor (abych nemusel menit ostatni tridy).
V podstate si to predstavuju tak, ze ta metoda init se spusti pri startu aplikace a doGet se spousti pri kazdem GET pozadavku na Tomcata. Staci tedy, kdyz svou tridu SQLConnector zmenim na potomka HttpServlet a nadefinuju v ni metody init a doGet jak je uvedeno v prikladu, jen vynecham z doGet vlastni SQL dotazy, ktere budu volat jinyma metodama konektoru? Je ma predstava spravna?
Diky moc za nakoupnuti.
tom

Avatar

Autor komentáře: Marek

Datum vložení: 11.12.2003 7:13:17

Na akom aplikacnom servery vasa aplikacia bezi?

Avatar

Autor komentáře: Roman Štorek

Datum vložení: 17.1.2004 23:12:36

Dobrý den chtěl sem se zeptat mám DB server v jedné síti a aplet, tyto sítě jsou spojeny přes Tomcat je možno za této situace použít JNDI pro snadné spojení apletu a Databáze? Za odpověď předem děkuji.

Avatar

Autor komentáře: Roman Štorek

Datum vložení: 17.1.2004 23:13:35

Dobrý den chtěl sem se zeptat mám DB server v jedné síti a aplet v síti druhé, tyto sítě jsou spojeny přes Tomcat je možno za této situace použít JNDI pro snadné spojení apletu a Databáze? Za odpověď předem děkuji.

Avatar

Autor komentáře: Kelt Keltsky

Datum vložení: 22.2.2005 18:13:38

Dobry den, dakujem za fajn clanok. Neviem sice, ako je to vo verzii Tomcatu, pod ktorou to autor testoval, ale v Tomcate 5.0.28 to urcite v subore server.xml nevyzera takto: ... <parameter> <name>user</name> <value>sa</value> </parameter> ... ale meno parametra je username, cize: ... <parameter> <name>username</name> <value>sa</value> </parameter> ... vela zdaru :)

Avatar

Autor komentáře: mm

Datum vložení: 13.7.2005 14:56:39

Při zkoušení Vašeho příkladu jsem narazil na tuto chybu: "SQLException caught: Cannot create JDBC driver of class '' for connect URL 'null' " Kde může být chyba? Knofiguraci contextu mám podle příkladu. Děkuji.

Avatar

Autor komentáře: benzin

Datum vložení: 17.8.2005 14:51:48

Jednoduse asi proto ze to na nove instalaci Tomcatu pod Windows nefunguje. Nevim proc je v instalaci server.xml, protoze to na zmeny v nem vubec nereaguje (samozrejme jsem restartoval). Nemam tuseni kam si uklada, ktere resources ma. Kazdopadne kdyz pouzijete administratorskou aplikacipro Tomcat zjistite, ze JNDI neni treba registrovat v server.xml, ale registruje se v adresari META-INF v souboru context.xml, primo vasi aplikace. P.S.: Jako temer v kazdem clanku narazim na opis angiclkych prikladu (ano jsou to zaklady u kterych neni co vymyslet), ktere ale nefunguji. Autor se nikterak nesnazi zkusit jeslti priklad co uvadi funguje s novymi nastorji, ktere se jak je u JAVA zvykem se meni primo pod rukama. Obdobne problemy mam i pri vyvoji na J2ME, kde jsou clanky uz v dobe vydani silne neaktulani a dopidit se pravdy byva casto nesnadne.

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 17.8.2005 16:40:44

Než budete příště kritizovat nějaký další článek, co kdybyste se nejprve zkusil zamyslet? Sám tvrdíte, že se nástroje pro Javu "mění přímo pod rukama" - nenapadlo vás opravdu nikdy, že článek žádné chyby neobsahuje, že v době vydání byl naprosto správný a přesný, se všemi příklady otestovanými a funkčními? Mnohdy autoři do článků píší i poznámky o tom, jaké změny se chystají do dalších verzí, nikdo ale nemůže dopředu vědět, jakou "životnost" nakonec bude popisované řešení mít!

Zpět na článek | Úvodní stránka Interval.cz