Hi Dirk,
Your example is really pretty complicated :-)
Seriously, Tiles relies on the fact that the configuration is read at
startup only once. This is done by using the listener, the filter or
the servlet.
For some strange reason, I think that your Spring integration does not
load on startup, so I guess it is a bug in Spring, or in your code.
What I mean is that Tiles is not responsible for a misuse of the
startup procedure.
For example, I think that the container creation and its assignment to
TilesAccess should be done in a synchronized block.

Ciao
Antonio

2007/8/19, Schaefer, Dirk Alexander <[EMAIL PROTECTED]>:
> hi all,
>
> i'm new to tiles2 and currently trying hard to get it working within my 
> spring enabled web application.
> actually almost the hole thing is working proper with one exception.
>
> tiles2 crashes while it reads the definitions from the definitionsFile(s) i 
> told it to read from within the following circumstances:
>
>     1. start the tomcat servlet container.
>     2. no request sent to tomcat since startup.
>     3. sending multiple request using a web application test application 
> simultaneously.
>
> if i do this, a realy big number of exceptions occurre inside of tomcat. 
> investigating those exceptions i figured out, that there is a problem when 
> the definitions are getting read from the xml string held inside tiles. as 
> far as i can see, those definitions are then getting read using digester. as 
> i can see, reading the definitions is neither synchronized nor is it using 
> independent instances (thread bounded) of the class it is using for this 
> purpose.
>
> the result is, that the different threads are messing with each other and the 
> process of loading the definitions crashs.
>
> if i use it the following way, everything works proper:
>
>     1. start the tomcat servlet container.
>     2. send one single request to it at least.
>     3. send as many request simultanously as the server can handle.
>
> interessting, isn't it?
>
> ---------------------------------------------------
>
> how i use tiles2:
>
> i do not use any of tiles' servlets, listeners, ... i initialize tiles the 
> programmatical way by using the spring framework's TilesConfigurer introduced 
> in its version 2.1 m4. in general it is first setting up servlet initial 
> parameters that are defining the several factory, preparer, ... 
> implementations to use by tiles.
>
> after that it initializes the tiles framework the following way:
> public void afterPropertiesSet() throws TilesException {
>
>     TilesContainer container = createTilesContainer(this.servletContext);
>
>     TilesAccess.setContainer(this.servletContext, container);
>
> }
>
> protected TilesContainer createTilesContainer(ServletContext context) throws 
> TilesException {
>
>     ServletContextAdapter adaptedContext = new ServletContextAdapter(new 
> DelegatingServletConfig());
>
>     TilesContainerFactory factory = 
> TilesContainerFactory.getFactory(adaptedContext);
>
>     return factory.createContainer(adaptedContext);
>
> }
>
> where afterPropertiesSet() is the method which needs to be invoked in order 
> to initialize tiles. DelegatingServletConfig is a simple inner class of 
> TilesConfigurer which makes the configurer's settings according to the 
> factory/preparer/... implementations to use by tiles available as initial 
> servlet property settings.
>
> can anyone confirm that this is a bug within tiles2 or is it just me, who's 
> using tiles the wrong way?
>
> thx a lot, greez,
>
> dirk

Reply via email to