You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Ken McWilliams <ke...@gmail.com> on 2012/11/13 08:38:52 UTC

Load Struts2 configuration from DB

I thought it would be interesting if I could create an interceptor stack
from already defined interceptors and store that definition in a database.
I also wanted to store action mappings (packages, actionName, method) along
with the name of the class which was to be associated with the action.

Anyways I'm a bit stuck...

First I thought I would create an DynamicInterceptorInterceptor which would
maintain it's own configuration and call the interceptors in turn. But I
think ActionProxy and ActionInvocation are supposed to be doing something
when calling Interceptors so that probably isn't good, and all actions
would target DynamicActionAction... this too I think has problems.

Then I though well if ActionProxy manages all the calls to the interceptor
and Action I could hide some configuration in there (by creating my own
ActionProxyFactory). If the actionProxy signature (ActionInvocation inv,
String namespace, String actionName, String methodName,
            boolean executeResult, boolean cleanupContext) matches one for
my magic DB action then I'll simply trick all the calls to invoke what
needs to be invoked using some special logic.

I'm not that familiar with struts2 thinking but it seems like this solution
would be quite ugly. What would be most ideal is to create a user defined
ConfigurationProvider which augments the existing configuration with
additional configuration.

Any advice?

For fun I was thinking if I could get that working I could make a web based
UI to edit Struts2 configuration (just the interceptor stack for now), save
that and reload the configuration. That would be pretty neat. If it could
then write a proper struts.xml file that would be pretty cool too.

Anyways this isn't for production, this is to better understand the
framework and do something interesting.

Re: Load Struts2 configuration from DB

Posted by Ken McWilliams <ke...@gmail.com>.
If struts fails to find the action configuration it will try to use an
instance of com.opensymphony.xwork2.UnknownHandlerManager to create a valid
configuration. So this seems like the extension point I need.


On Tue, Nov 13, 2012 at 12:38 AM, Ken McWilliams
<ke...@gmail.com>wrote:

> I thought it would be interesting if I could create an interceptor stack
> from already defined interceptors and store that definition in a database.
> I also wanted to store action mappings (packages, actionName, method) along
> with the name of the class which was to be associated with the action.
>
> Anyways I'm a bit stuck...
>
> First I thought I would create an DynamicInterceptorInterceptor which
> would maintain it's own configuration and call the interceptors in turn.
> But I think ActionProxy and ActionInvocation are supposed to be doing
> something when calling Interceptors so that probably isn't good, and all
> actions would target DynamicActionAction... this too I think has problems.
>
> Then I though well if ActionProxy manages all the calls to the interceptor
> and Action I could hide some configuration in there (by creating my own
> ActionProxyFactory). If the actionProxy signature (ActionInvocation inv,
> String namespace, String actionName, String methodName,
>             boolean executeResult, boolean cleanupContext) matches one for
> my magic DB action then I'll simply trick all the calls to invoke what
> needs to be invoked using some special logic.
>
> I'm not that familiar with struts2 thinking but it seems like this
> solution would be quite ugly. What would be most ideal is to create a user
> defined ConfigurationProvider which augments the existing configuration
> with additional configuration.
>
> Any advice?
>
> For fun I was thinking if I could get that working I could make a web
> based UI to edit Struts2 configuration (just the interceptor stack for
> now), save that and reload the configuration. That would be pretty neat. If
> it could then write a proper struts.xml file that would be pretty cool too.
>
> Anyways this isn't for production, this is to better understand the
> framework and do something interesting.
>