cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrus Adamchik (Commented) (JIRA)" <>
Subject [jira] [Commented] (CAY-1673) Running ROP and CayenneFilter on same project
Date Sat, 03 Mar 2012 18:05:57 GMT


Andrus Adamchik commented on CAY-1673:

I think what we can do on the Cayenne end is to skip instantiation of a CayenneRuntime inside
ROPHessianServlet and CayenneFilter if either of them detects that CayenneRuntime is already
present in the context. This way a user might create their own startup mechanism (another
filter, or a ServletContextListener) where he loads all the modules the application is interested
in... This will be the most efficient way to handle that.
> Running ROP and CayenneFilter on same project
> ---------------------------------------------
>                 Key: CAY-1673
>                 URL:
>             Project: Cayenne
>          Issue Type: Bug
>          Components: ROP
>    Affects Versions: 3.1M3
>         Environment: Tomcat 7.0.14
>            Reporter: Jozef DropĨo
>   Original Estimate: 20m
>  Remaining Estimate: 20m
> mapping for CayenneFilter is "/*" and I have ROPHessianServlet mounted on "/hessian".
The problem is when I start the project webpages run perfectly, but after first call on ROPHessianServlet,
I've got this error:
> org.apache.cayenne.ConfigurationException: [v.3.1M3 Sep 12 2011 19:59:45] DI container
has no binding for key <BindingKey: org.apache.cayenne.configuration.web.RequestHandler>
> 	at org.apache.cayenne.di.spi.DefaultInjector.getProvider(
> 	at org.apache.cayenne.di.spi.DefaultInjector.getProvider(
> 	at org.apache.cayenne.di.spi.DefaultInjector.getInstance(
> 	at org.apache.cayenne.configuration.web.CayenneFilter.doFilter(
> I find out that this error is caused because in init method of ROPHessianServlet is no
merging between existing ServerContext and new ServerContext created by servlet.
> I also fixed this bug by modifing the code like this:
> ....
>         CayenneRuntime currentRuntime = WebUtil.getCayenneRuntime(servletContext);
>         ArrayList<Module> modules = new ArrayList<Module>();
>         if (currentRuntime != null) {
>             modules.addAll(Arrays.asList(currentRuntime.getModules()));
>         }
>         modules.add(new ROPServerModule(
>                 eventBridgeParameters));
>         ServerRuntime runtime = new ServerRuntime(configurationLocation, modules.toArray(new
> ....

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message