Wesley Wu wrote:
> Thanks for the quick response.
>
> I don't expect a quick resolve of this bug, since it DOES have a workaround.
>
> After some examination of the source code, I think the implementation around
> scoped adapter may need a serious refactorying because it's something like
> a HACK resolution.
>   
Yep. The final spec API for that concept doesn't match the way I think 
about the circular resolution issue (and had changed many times before 
the final release), but I'm still not sure if I just need to study the 
API more or if it's cleaner to work around it. So the current code is a 
mixture between the two.

-- Scott
> -Wesley
>
> 2010/1/29 Scott Ferguson <f...@caucho.com>:
>   
>> Wesley Wu wrote:
>>     
>>> Hi Scott,
>>>
>>> When a @ApplicationScoped/@Singleton bean is designed to be initialized
>>> after webapp starts (I.E. when first http request was fired) instead of 
>>> being
>>> initialized during startup stage, in given circumstance, it won't be
>>> injected correctly.
>>>
>>>       
>> Thanks for tracking this down. It looks like a circularity problem,
>> which we should handle but our current tests don't have exactly this
>> configuration.
>>
>> -- Scott
>>     
>>> This is my test case:
>>>
>>> ========== StartBean ===========
>>> public class StartBean {
>>>       @Inject
>>>       FirstBean firstBean;
>>> }
>>> ========== FirstBean  ===========
>>> public class FirstBean {
>>>       @Inject
>>>       SecondBean secondBean;
>>> }
>>> ========== SecondBean ===========
>>> public class SecondBean {
>>>       @Inject
>>>       ThirdBean thirdBean;
>>>       @Inject
>>>       FourthBean fourthBean;
>>> }
>>> ========== ThirdBean ===========
>>> public class ThirdBean {
>>>       @Inject
>>>       SingletonBean singletonBean;
>>> }
>>> ========== FourthBean ===========
>>> public class FourthBean {
>>>       @Inject
>>>       SingletonBean dao;
>>> }
>>> ========== SingletonBean  ===========
>>> @Singleton
>>> //@Startup
>>> public class SingletonBean {
>>> }
>>> ========== MyServlet ===========
>>> public class MyServlet extends HttpServlet {
>>>       @Inject
>>>       StartBean startBean;
>>>
>>>       protected void doGet(HttpServletRequest request, HttpServletResponse 
>>> response)
>>>                       throws ServletException, IOException {
>>>               System.out.println("hello");
>>>       }
>>> }
>>>
>>> ========= web.xml ===========
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <web-app xmlns="http://java.sun.com/xml/ns/javaee";
>>>            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>            xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>>                 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
>>>            version="2.5">
>>>
>>>       <servlet id="MyServlet">
>>>               <servlet-name>MyServlet</servlet-name>
>>>               <servlet-class>com.mycompany.servlet.MyServlet</servlet-class>
>>>       </servlet>
>>>       <servlet-mapping>
>>>               <servlet-name>MyServlet</servlet-name>
>>>               <url-pattern>/MyServlet</url-pattern>
>>>       </servlet-mapping>
>>> </web-app>
>>>
>>> =================================
>>>
>>> The "http://localhost:8080/MyServlet"; request will produce this exception:
>>>
>>> com.mycompany.servlet.MyServlet.startBean:
>>> com.mycompany.beans.StartBean.firstBean:
>>> com.mycompany.beans.FirstBean.secondBean:
>>> com.mycompany.beans.SecondBean.fourthBean:
>>> com.mycompany.beans.FourthBean.singletonBean:
>>> java.lang.IllegalArgumentException:
>>> Can not set com.mycompany.beans.SingletonBean field
>>> com.mycompany.beans.FourthBean.singletonBean
>>> to com.mycompany.beans.FourthBean
>>>
>>> When I annotate the SingletonBean as @Startup, it's fine. (uncomment
>>> the //@Startup line in SingletonBean.java)
>>>
>>> Either @Singleton or @ApplicationScoped throws the exception.
>>>
>>> It's a weird bug, taking me nearly two days to reproduce it in such a
>>> simple test case.
>>>
>>> -Wesley
>>>
>>>
>>> _______________________________________________
>>> resin-interest mailing list
>>> resin-interest@caucho.com
>>> http://maillist.caucho.com/mailman/listinfo/resin-interest
>>>
>>>
>>>       
>>
>> _______________________________________________
>> resin-interest mailing list
>> resin-interest@caucho.com
>> http://maillist.caucho.com/mailman/listinfo/resin-interest
>>
>>     
>
>
> _______________________________________________
> resin-interest mailing list
> resin-interest@caucho.com
> http://maillist.caucho.com/mailman/listinfo/resin-interest
>
>   



_______________________________________________
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest

Reply via email to