Jeste upresneni
- ISO2 kod ceske republiky je "CZ", ISO2 kod cestiny je "cs", dole jsem
to prehodil... :-)
Ahoj, Archie.
----- Original Message -----
From: "Artur Linhart - Java Communication" <[EMAIL PROTECTED]>
To: <konference@java.cz>
Sent: Friday, September 01, 2006 10:10 AM
Subject: Re: CachedRowSet+nullPointerException
> Ahoj,
>
> Nasel jsem k tomu na
> (http://forum.java.sun.com/thread.jspa?forumID=423&threadID=540624)
> nasledujici vysvetleni i s dekompilovanym zdrojakem:
>
> I encountered your same error with JDBC RowSet trying to run the
> JdbcRowSetSample example.
> After having downloaded a Java disassembler (JAD), I decompressed
rowset.jar
> in a directory and disassembled the JdbcRowSetResourceBundle class.
> Luckily the bug in the constructor was very easy to find:
>
> private JdbcRowSetResourceBundle()
> throws IOException
> {
> Locale locale = Locale.getDefault();
> String s = locale.getCountry();
> if(!s.equals("") && !s.equals("US"))
> propResBundle = new
>
PropertyResourceBundle(Thread.currentThread().getContextClassLoader().getRes
> ourceAsStream("com/sun/rowset/RowSetResourceBundle_" + s + "." +
> "properties"));
> else
> propResBundle = new
>
PropertyResourceBundle(Thread.currentThread().getContextClassLoader().getRes
> ourceAsStream("com/sun/rowset/RowSetResourceBundle.properties"));
> }
>
> In practice the library cannot work on a machine with Locale different
from
> US, because the only Resource Bundle present in rowset.jar is
> RowSetResourceBundle.properties, while on such a machine this class
tries
to
> read RowSetResourceBundle_<Locale.getCountry()>.properties.
> So I copied the RowSetResourceBundle.properties file, renamed the copy
in
> RowSetResourceBundle_<Locale.getCountry()>.properties and added it to
the
> rowset.jar archive.
> Now everything works perfectly !
> Alternatively you could change your Locale to US locale.
>
> Happy to have solved a problem to you (and to me of course) !
>
>
> Cili jedna se o RowSetResourceBundle, coz jsi asi zjistil - ale hlavni
> problem je IMHO v tom, ze na misto _<LOCALE> se tady odcividne dosazuje
> country code a ne language code, coz mi teda neni jasne, myslel jsem, ze
> jako prvni se pise vzdycky language - Tzn. zjisti si countrycode z
> aktualniho locale (To asi neni CZ, ale mozna CS u Ceske republiky) - a
taky
> pozor na velka pismena, u language jsou mala, u country velka. Nejenom
ze
je
> to blbe naprogramovane, protoze standardne by se melo skakat vzdy po
> nejpodobnejsich resourcech a tudiz pokud nejsou by to melo vzit primo
ten
> RowSetResourceBundle.properties, ale i ten primo countrycode za tim
resource
> bundlem je spatne a mel by tam byt language code a country code az na
druhem
> miste - viz dokumentace k ResourceBundle.java:
>
> * Each resource bundle in a family contains the same items, but the
items
> have
> * been translated for the locale represented by that resource bundle.
> * For example, both "MyResources" and "MyResources_de" may have a
> * <code>String</code> that's used on a button for canceling operations.
> * In "MyResources" the <code>String</code> may contain "Cancel" and in
> * "MyResources_de" it may contain "Abbrechen".
> *
> * <P>
> * If there are different resources for different countries, you
> * can make specializations: for example, "MyResources_de_CH" contains
> objects for
> * the German language (de) in Switzerland (CH). If you want to only
> * modify some of the resources
> * in the specialization, you can do so.
>
> - Takze jestli neni problem v tom, ze to prejmenujes treba na *_en nebo
na
> *_cz ale oni tam vyzaduji jako kod *_US, resp. *_CS...
>
> Drzim palce,
>
> Ahoj, Archie
>
> ----- Original Message -----
> From: <[EMAIL PROTECTED]>
> To: <konference@java.cz>
> Sent: Friday, September 01, 2006 9:32 AM
> Subject: RE: CachedRowSet+nullPointerException
>
>
> > To Artur:
> > Velice dekuji za alespon jeden nazor a ochotu. Cenim si toho.
> >
> > Prohledal jsem snad vsechno co mi google vyplivnul na toto tema.
Vcetne
> > samozrejme oficialni diskuza na forums.java.sun.com
> > Vsude kdyz uz je nejaka odpoved. tak je zmenit nazev
> > RowSetResourceBundle.properties
> > na
> > RowSetResourceBundle_<LOCALE>.properties
> >
> > Toto jsem zkousel. Bohuzel bezvysledne. Stejne tak jsem zkousel podle
> Arturova
> > napadu kombinace JdbcRowSetResourceBundle.properties ci
> > JdbcRowSetResourceBundle.properties bohuzel taky bezvysledne. I kdyz
zda
> se to
> > rozumne. Jelikoz vsechny hlavni klasy tam zacinaji Jdbc. Ted tedy
zkusim
> jeste
> > najit primo zdrojaky ci nejakou kloudnou dokumentaci a popatrat, jakej
> > properties file tam tedy opravdu inicializuje.
> >
> > Toto je jedina vec na Jave, ktera me opravdu nesmirne vadi. Ze obcas
to
> > pripomina spis alchymii. Hlavne dle meho soudu CachedRowSet je pomerne
> hojne
> > pouzivany. Tento bug, ktery zde popisuji je znam uz vice nez dva roky
a
do
> teto
> > chvile nejenze nikdo nevydal bugfix, ale na celym internetu nenajdete
> kloudnou
> > odpoved od vyvojaru, na oficialnim foru ci proste nekde tak :o) Mozna
jsem
> jen
> > blbej a nekde jsem neco prehlidnul, ale vzhledem k tomu, ze nad timto
> problemem
> > sedim uz druhy den,to na me presne takto pusobi.
> >
> > BTW: Nenapadl by nekoho jiny rozumny zpusob jak cachovat data, aby se
v
> nich
> > dalo listovat?
> >
> > Poznamka:
> > Omlouvam se, ze neudrzuji historii, maily mam stazeny a archivovany
doma
> >
> > Diky
> > Zdenek Kasparek
> >
> > ----------------------------------------------------------------
> > This message was sent using IMP, the Internet Messaging Program.
>
> ----- Original Message -----
> From: "Artur Linhart - Java Communication" <[EMAIL PROTECTED]>
> To: <konference@java.cz>
> Sent: Friday, September 01, 2006 7:13 AM
> Subject: Re: CachedRowSet+nullPointerException
>
>
> > Ahoj,
> >
> > nemam bohuzel k dispozici zdrojaky od tridy
JdbcRowSetResourceBundle
> > (ani classu - ve standardnim J2SE JDK 1.4.1 jsem ji nenasel) tak
doufam
ze
> > nebudu placat uplne nesmysly, ale jak to popisujes, pripada mi, ze by
se
> > melo zjistit jak se v metode
> > com.sun.rowset.JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle
> > konstruje inputstream - podle zdrojaku trid ke kterym zdroje mam se
zda
ze
> > se nenajde dany property soubor a diky tomu se jako InputStream
podstrkuje
> > null - asi zjistit jake jmeno property souboru se tam pouziva (popr.
odkud
> > se generuje) a podle onoho jmena mu pak podstrcit soubor, ktery se
bude
> > jmenovat tak, jak se ocekava (ve spravne packagi). Rekl bych, ze se
urcite
> > nebude jmenovat PropertyResourceBundle.properties, ale asi nejak
jinak -
> > zrejme JdbcRowSetResourceBundle.properties (popr. napr.
> > JdbcRowSetResourceBundle_en.properties pro anglictinu, atp.) nebo
nejak,
> jak
> > se to stanovi v te metode getJdbcRowSetResourceBundle...
> > Do konstruktoru PropertyResourceBundle (InputStream stream) totiz uz
pri
> > volani z konstruktoru JdbcRowSetResourceBundle vstupuje s nejvetsi
> > pravdepodobnosti null, takze bych rekl ze s tridou
PropertyResourceBundle
> > nebo nejakou teoretickou chybou v ni to urcite souviset nebude...
> >
> > Prirozene je otazka jak najit spravny resource bundle - neni mozne ze
se
> tam
> > ma dohrat jeste nejaky jar s lokalizaci nebo neco podobneho? Kdyz se
tehle
> > chyby zbavis tim, ze tam das prazdny property soubor, tak to asi casem
> > spadne na tom, ze v tom property souboru neni nejaky klic, ktery to
bude
> > treba pozadovat...
> >
> > Mozna by pomohlo se podivat, jak zaridit spravne lokalizaci
CachedRowSet
a
> > to by mohlo vyresit tenhle problem ;-)
> >
> > Chyba muze souviset i s tim, ze tam sice mas nejaky spravny odvozeny
> > resource bundle, napr. JdbcRowSetResourceBundle_cz.properties, ale
jako
> > defaultni Locale neni nastaven jazyk ktery mu odpovida (v tomto
priklade
> ne
> > cestina, ale treba anglictina pro kterou resource bundle s nazvem
"*_cz"
> > nebude s fungovat) - bylo by dobre nakopirovat
> > (prejmenovat) takovehle nejake properties ktere tam treba existuji
> > specificke pro jazyk na jmeno property souboru bez toho "_cz" (nebo
jine
> > pripony) aby to fungovalo pro vsechny Locale, popr. zkusit zmenit
> defaultni
> > Locale...
> >
> > Jinak mne takhle obecne "z voleje" bez moznosti to zkoumat konkretne
nic
> > nenapada... Treba to nejak pomuze v hledani voditka pokud to primo
Tvuj
> > problem nebude resit...
> >
> > Ahoj, Artur.
> >
> > ----- Original Message -----
> > From: <[EMAIL PROTECTED]>
> > To: <konference@java.cz>
> > Sent: Thursday, August 31, 2006 4:58 PM
> > Subject: CachedRowSet+nullPointerException
> >
> >
> > > Dobre odpoledne,
> > > Pokud se nekdo setkal s nize uvedenym problemem a nasel reseni. Budu
> > nesmirne
> > > vdecny, za kazdy poznatek.
> > >
> > > Mam WebAplikaci
> > > JDK: 1.4
> > > Tomcat: 3.2
> > > Server: AS/400
> > >
> > > Volam servlet, ktery se connectuje na databazi (DB2) a vraci nejaky
> data.
> > > Jelikoz DB2 neumi LIMIT a ja potrebuju vracenymi daty listovat (
rozumej
> > > strankovat vystupni tabulku ) jal jsem se hledat reseni v cachovani
dat
> a
> > > listovani z cache.
> > > Pouzivam rowset.jar 1.0 . Ale dostal jsem se do situace, ve ktere
dkyz
> v
> > metode
> > > servletu chci vytvorit instanci
> > >
> > > CachedRowSet crs = new CachedRowSetImpl();
> > >
> > > dostanu nullPointerException cituji:
> > >
> > > java.lang.NullPointerException
> > > at java.io.Reader.<init>(Reader.java:61)
> > > at java.io.InputStreamReader.<init>(InputStreamReader.java:80)
> > > at java.util.Properties.load(Properties.java:266)
> > > at
> java.util.PropertyResourceBundle.<init>(PropertyResourceBundle.java:96)
> > > at com.sun.rowset.JdbcRowSetResourceBundle.<init>(Unknown Source)
> > > at
> >
>
com.sun.rowset.JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle(Unknown
> > > Source)
> > > at com.sun.rowset.CachedRowSetImpl.<init>(Unknown Source)
> > >
> > >
> > > Cele odpoledne marne hledam smysluplne reseni. Zjistil jsem, ze se
jedna
> o
> > bug
> > > souvisejici se spatnym ctenim PropertyResourceBundle. Nasel jsem par
> typu,
> > ze
> > > je potreba prejmenovat PropertyResourceBundle.properties, ale at se
> snazim
> > jak
> > > chci, nedari se mi za boha hnout z mista.
> > >
> > > Vi nekdo co stim?????
> > >
> > > Poznamka:
> > > Nemohu upgradovat JDK ani Tomcat, musim pracovat s vyse uvedenymi.
> > >
> > > Zdenek Kasparek
> > >
> > > ----------------------------------------------------------------
> > > This message was sent using IMP, the Internet Messaging Program.
> >
>