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
> 


Odpovedet emailem