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.

-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

Reply via email to