cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexander Klimetschek (JIRA)" <>
Subject [jira] Updated: (COCOON-2036) Handle circular dependencies in servlet connections
Date Thu, 05 Apr 2007 08:08:32 GMT


Alexander Klimetschek updated COCOON-2036:

    Attachment: circular-servlet-connections-warning.patch

Patch for cocoon-servlet-service-impl that affects only the ServletFactoryBean.

It throws an exception with the hint for a possible cyclic dependency. During debugging I
also found a problem that appears when you put a non-exisiting bean as a connection value-ref:
ServletFactoryBean.getObjectType() is supposed to return null if the type of the object can
not yet be determined, ie. when embeddedServlet == null. I fixed that which gives a better
exception stacktrace with Spring.

> Handle circular dependencies in servlet connections
> ---------------------------------------------------
>                 Key: COCOON-2036
>                 URL:
>             Project: Cocoon
>          Issue Type: Bug
>          Components: - Servlet service framework
>    Affects Versions: 2.2-dev (Current SVN)
>            Reporter: Alexander Klimetschek
>         Attachments: circular-servlet-connections-warning.patch
> Circular dependencies in servlet connections lead to a Spring exception [1]  in [2] that
does not provide any help. The previous implementation (block:) did allow circular dependencies
because they were not handled by spring but by custom code.
> Solution would be either to allow them (probably difficult to implement with spring)
or, if not, to provide a helpful warning message, that skips this problem. The latter could
be a check for embeddedServlet==null and, if not, throw an exception saying "you might have
a circular dependency in <servlet-foobar>".
> ---
> [1]:
> The exception is thrown after ServletFactoryBean.getObject() tries to create a proxy
for the embeddedServlet, which is null in the case of a circular dependency (one of the circle
endpoints is created, but the other will be null).
> Caused by: org.springframework.aop.framework.AopConfigException: Can't proxy null object
>         at org.springframework.aop.framework.ProxyFactory.<init>(
>         at org.apache.cocoon.servletservice.spring.ServletFactoryBean.getObject(
>         at
> [2]:
>     public Object getObject() throws Exception {
>         ProxyFactory proxyFactory = new ProxyFactory(this.embeddedServlet);
>         proxyFactory.addAdvice(new ServiceInterceptor());
>         if (this.mountPath != null) {
>             proxyFactory.addAdvisor(new MountableMixinAdvisor());
>         }
>         proxyFactory.addAdvisor(new ServletServiceContextMixinAdvisor());
>         return proxyFactory.getProxy();
>     } 

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message