You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <de...@tapestry.apache.org> on 2007/09/03 20:01:15 UTC

[jira] Closed: (TAPESTRY-1631) tapestry-spring initializes lazy-init beans too soon

     [ https://issues.apache.org/jira/browse/TAPESTRY-1631?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Howard M. Lewis Ship closed TAPESTRY-1631.
------------------------------------------

       Resolution: Fixed
    Fix Version/s: 5.0.6

Thanks for the patch.

> tapestry-spring initializes lazy-init beans too soon
> ----------------------------------------------------
>
>                 Key: TAPESTRY-1631
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1631
>             Project: Tapestry
>          Issue Type: Bug
>          Components: tapestry-spring
>    Affects Versions: 5.0.5
>         Environment: Spring 2.0.4
>            Reporter: Nick James
>            Assignee: Howard M. Lewis Ship
>             Fix For: 5.0.6
>
>         Attachments: tapestry-spring-1631.patch
>
>
> We have some spring beans which are intended for various environments, so we can have a weblogic transaction manager configured in a weblogic container, but not when we run inside the Jetty container. To achieve this, we mark these beans with the lazy-init=true attribute.
> Starting in tapestry-spring 5.0.5, *all* of our spring beans get initialized at startup, including the weblogic transaction manager., which results in a ClassNotFoundException.
> In SpringModuleDef.java, there is a method in the ModuleDef which looks like:
>                 public Class getServiceInterface()
>                 {
>                     return getBean().getClass();
>                 }
> The call to getBean() causes the bean to be instantiated, and hence triggers the CNFE. I have taken the liberty of patching this code, so that this method makes a call to _context.getType(beanName) through an additional method getBeanType() that I added.
> This change passes the testing in maven, and after it is installed in my local Maven repository, my application runs!
> My only concern is that my code change is sending to Tapestry the type that Spring thinks the bean is, rather than the actual Class of the bean. I expect that means that proxies will look to Tapestry like the proxied type, instead of the actual class of the proxy.
> I have a very simple subversion patch that I will try to attach to this report.

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


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org