Ahoj,
pouzij classpath*: aby spring "videl" i do JAR souboru.
marek
On Thu, 2012-08-23 at 09:59 +0200, Dusan Zatkovsky wrote:
> Ahoj,
>
> zjavne som sa snahou o izolovanie problemu do nejakeho jednoducheho
> proof-of-concept zamotal.
>
> Principialne mi ide o to, ze mam web aplikaciu, ktora pri inicializacii
> spring kontextu nacitava vsetky .properties subory,
> ktore sa nachadzaju vo WEB-INF/classes. Tieto property subory sa do toho
> adresara dostanu pocas buildu rozkopirovanim
> z roznych maven submodulov.
>
> Vid.
> <bean id="fooPropertyPlaceholderConfigurer"
> class="cz.company.foo.core.utils.props.fooPropertyPlaceholderConfigurer">
> <property name="locations">
> <list>
> <value>classpath:*.properties</value>
> </list>
> </property>
>
> Mojim cielom bolo zabalit vsetky property subory do jedneho jar-ka a to
> pribalit k webapp. Vzhladom na
> uz citovane "...plus classes and resources in JAR files under the
> /WEB-INF/lib directory..." som ocakaval,
> ze spring tam tie property uvidi bez ohladu na to, ci budu vo war-e,
> alebo az v nim includovanom jar-e.
> Ale zjavne ich nevidi a ja nechapen, kde je ten rozpor.
>
>
> Jedine co ma prave teraz napada je, ze spring neni schopny evaluovat
> vyraz "*.properties", pretoze v pripade,
> ked su vo web-inf, tak sa rozbalia priamo na filesystem do
> TOMCAT/web-apps/...../WEB-INF, kdezto ked su v jar, tak
> ich proste nevidi ako subory a neni schopny ziskat ich zoznam...
>
> --
> Dusan
>
>
> > Ahoj,
> >
> > ja bezne vo web aplikaciach pouzivam
> >
> > URL url = MojaTrieda.getResource("…");
> >
> > a funguje to bez problemov. Vo vasom pripade by to zrejme malo byt URL url
> > = MojaTrieda.getResource("/src/main/resources/libresource.properties");
> > pripadne iba "/libresource.properties".
> >
> > Preco sa snazite pouzit getSystemResource a tym padom "System classloader"?
> > Podla http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html
> > System classloader nemoze vidiet resources z webovych aplikacii. Pouzite
> > bud getResource z nejakej vasej classy (ta je urcite nacitana webovym
> > classloaderom), alebo pouzite classloader zo
> > ServletContext.getClassLoader().
> >
> > -Peter
> >
> > On 22.8.2012, at 17:15, Dusan Zatkovsky <[email protected]> wrote:
> >
> >> Ahoj.
> >>
> >> Zapasim s nacitavanim resources z classpath webovej aplikacie v tomcat-e a
> >> nejak neviem prist veci na klb.
> >>
> >> Mam klasicku ( mavenom buildenu ) aplikaciu zlozenu z:
> >> - lib
> >> - command line client
> >> - webapp
> >>
> >> lib.jar obsahuje:
> >> ./src/main/resources/libresource.properties
> >>
> >> K tomuto suboru pristupujem v cli a webapp pomocou:
> >>
> >> URL url =
> >> ClassLoader.getSystemResource("libresource.properties");
> >>
> >> Properties p = new Properties();
> >> p.load(ClassLoader.getSystemResourceAsStream("libresource.properties"));
> >>
> >> V cli aplikacii to funguje, vo webapp nie ( getSystemResource vrati null ).
> >>
> >> Tomcat v dokumentacii classloader-u pise:
> >>
> >> A class loader is created for each web application that is deployed in a
> >> single Tomcat instance.
> >> All unpacked classes and resources in the /WEB-INF/classes directory of
> >> your web application,
> >> --> plus classes and resources in JAR files under the /WEB-INF/lib
> >> directory <-- of your web application,
> >> are made visible to this web application, but not to other ones.
> >>
> >> Co je presne co chcem. Ale zjavne to nefunguje tak ako ocakavam.
> >>
> >> Vygooglil som, ze riesenim je skopirovat ten property file pocas buildu
> >> priamo do webapp/target/WEB-INF/classes,
> >> co samozrejme nechcem, pretoze to ide presne proti cielu mojho snazenia (
> >> odstranit z projektu nadbytocne rozkopirovavanie ).
> >>
> >> V com robim chybu?
> >>
> >> Diky
> >>
> >> --
> >> Dusan
>