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