On 03/02/2010 23:50, Martin Grotzke wrote:
On Fri, 2010-01-29 at 14:58 +0000, Pid wrote:
On 29/01/2010 11:33, Martin Grotzke wrote:
Hi Pid,
what you describe is correct and works, I've implemented a Manager
implementation that uses simple attributes until now (for memcached
based session failover, memcached-session-manager:
http://code.google.com/p/memcached-session-manager/ ).
However, now I want to support a complex, nested child element for a
TranscoderStrategy in my case (somehow comparable to the Store element
that is allowed as child element for the PersistentManager), that
supports different attributes depending on the TranscoderStrategy
implementation. It's possible to put all attributes into the Manager
element, but this is not what one would want to do - the related
attributes are spread between the Manager related attributes.
I'm not sure I understand.
Is the requirement an aesthetic thing or does the existing method not
actually work for your use case?
Well, you might call it aesthetic. But you might also call it a better
design, as closely related attributes are encapsulated by a dedicated
element (high-cohesion).
To make it more concrete, instead of
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211 n2:localhost:11212"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="true"
customXmlFormat="org.example.SomeXmlFormat,org.example.AnotherXmlFormat"
/>
I want
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211 n2:localhost:11212"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
>
<TranscoderFactory
className="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="true"
customXmlFormat="org.example.SomeXmlFormat,org.example.AnotherXmlFormat"
/>
</Manager>
where the allowed attributes of the TranscoderFactory element depend on
the actual TranscoderFactory class (specified with className).
Unfortunately, this is not possible in the current version of tomcat
(don't know if there are any plans to change this).
Your requirement seems quite specific and I suspect that as there's a
way to handle this already, it's unlikely to change.
In recent versions of Tomcat the Digester complains if it finds
unexpected elements during startup. Do you get any error messages in
the catalina.out log or on the console, when you implement your
preferred structure?
>
No, I got no errors, the element was just ignored.
http://tomcat.apache.org/tomcat-6.0-doc/config/manager.html
If you've extended PersistentManagerBase then you must supply a Store
element, maybe your configuration options can be set as attributes on
that element.
I don't want to use the Store element...
If you've extended ManagerBase then maybe you can add an object FooBar
(with getter& setter) and attributes as needed.
Or have you tried this already?
Yes, I had already tried this without success. What's evaluated for the
Manager element is defined in the
org.apache.catalina.startup.ContextRuleSet.java, e.g. this are the
relevant lines for the Store:
digester.addObjectCreate(prefix + "Context/Manager/Store",
null, // MUST be specified in the element
"className");
digester.addSetProperties(prefix + "Context/Manager/Store");
digester.addSetNext(prefix + "Context/Manager/Store",
"setStore",
"org.apache.catalina.Store");
I think you're probably stuck then.
p
On Fri, 2010-01-29 at 10:10 +0000, Pid wrote:
On 29/01/2010 00:31, Martin Grotzke wrote:
Hi,
is it somehow possible to have a custom nested element below the Manager
element in server.xml/context.xml? E.g.
<Manager className="org.app.MyManager">
<FooBar foo="bar"/>
</Manager>
where the MyManager class has a property fooBar?
If the MyManager class has a field called fooBar, with matching getter
and setter, then (my guess, based on how Valves work, is that) you can
probably set it by doing this:
<Manager className="org.app.MyManager" fooBar="somevalue">
</Manager>
p
AFAICS the ContextRuleSet defines what's possible in the Context element
without any hook - so it seems that there's no possibility to achieve
this.
If someone could tell me that I'm wrong with this asumption I would be
happy! :-)
Thanx&& cheers,
Martin
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org