On May 7, 2008, at 10:30 AM, wesley wrote: > Hi Scott, > > Congratulations for the new release. > It seems that 3.1.6 release does not have this bug fixed.
Yep. The bug was reported way too late to get added in 3.1.6. It should be available in a snapshot by next week. -- Scott > > It's really a stop bug for me and prevents the whole webapp from > starting. > > -Wesley > > ----- Original Message ----- > From: "Scott Ferguson" <[EMAIL PROTECTED]> > To: "General Discussion for the Resin application server" > <[email protected]> > Sent: Monday, May 05, 2008 9:54 PM > Subject: Re: [Resin-interest] <database> config > shouldbeinitializedbeforeany > singleton beans > > >> >> On May 4, 2008, at 8:39 PM, wesley wrote: >> >>> I've set logging to "finer" and found datasource being initialized >>> after >>> AmberContainer parsing persistence.xml. >>> >>> After some tracing, I think the issue is also an order problem. >>> >>> After resin server initialized, it began to init the webapp, at the >>> order >>> below: >>> >>> 1. Look at persistence.xml and try to init an AmberContainer. >>> 2. Parse resin-web.xml to init DataSource, JCA connectors, EJBs and >>> Singletons. >>> >>> Note, at the first step method getJtaDataSource() of >>> com.caucho.amber.cfg.PersistenceUnitConfig will be >>> called. It tried to find a DataSource in JNDI and failed, >>> because a DataSource will be available in JNDI until the >>> 2nd step finished. >> >> Ok. This use of PersistenceUnitConfig should be lazy. Resin can >> register the PersistenceUnit/PersistenceContext before initializing >> the provider. >> >> thanks, I'd missed that case. http://bugs.caucho.com/view.php?id=2648 >> >>> I'm using hibernate persistence provider. >>> >>> Now I'm frustrated. How could we managed to garantee these init >>> orders? >>> 1. First of all, DataSource in resin-web.xml to make sure a >>> DataSource being >>> registered. >>> 2. persisence.xml to make sure any @PersistenceUnit and >>> @PersistenceContext >>> injection available. * >> >> This would be split into two parts: registering the @PersistenceUnit >> and a later start() phase. >> >>> 3. JCA connectors (if any) in resin-web.xml. * >>> 4. EJBs in resin-web.xml (if any). Why should EJBs be initialized >>> after >>> persistence.xml? It may need to inject a @PersistenceUnit. >> >> EJBs also have a 2-phase init process, so the same idea applies. >> >> -- Scott >> >>> 5. Singletons in resin-web.xml. >>> * 2 & 3 may be reversed. >>> >>> Any ideas? >>> >>> -Wesley >>> >>> >>> ----- Original Message ----- >>> From: "Scott Ferguson" <[EMAIL PROTECTED]> >>> To: "General Discussion for the Resin application server" >>> <[email protected]> >>> Sent: Monday, May 05, 2008 6:11 AM >>> Subject: Re: [Resin-interest] <database> config should >>> beinitializedbeforeany singleton beans >>> >>> >>>> >>>> On May 4, 2008, at 1:17 PM, wesley wrote: >>>> >>>>> Hi Scott, >>>>> >>>>> Is this issue resolved in snapshot0502? I've tried 0502 snapshot >>>>> and >>>>> found >>>>> my singleton beans still throwing the same exception: >>>>> >>>>> java.lang.UnsupportedOperationException: The user must supply a >>>>> JDBC >>>>> connection >>>>> >>>>> I believe that the same problem still exists: DataSource SHOULD be >>>>> initialized >>>>> and be put in JNDI registry before the singletons try to find it. >>>> >>>> That should be a different issue. That stack trace is happening at >>>> the end of the initialization, so all the data sources would >>>> already >>>> be initialized. >>>> >>>> If you set the logging to "finer" do you see the database getting >>>> registered? >>>> >>>> -- Scott >>>> >>>>> >>>>> >>>>> stacktrace at web-app initialing phase >>>>> ========================================================== >>>>> [04:08:57.373] {resin-15} java.lang.UnsupportedOperationException: >>>>> The user >>>>> must supply a JDBC connection >>>>> [04:08:57.373] {resin-15} at >>>>> org >>>>> .hibernate >>>>> .connection >>>>> .UserSuppliedConnectionProvider >>>>> .getConnection(UserSuppliedConnectionProvider.java:30) >>>>> [04:08:57.373] {resin-15} at >>>>> org >>>>> .hibernate >>>>> .jdbc.ConnectionManager.openConnection(ConnectionManager.java:423) >>>>> [04:08:57.373] {resin-15} at >>>>> org >>>>> .hibernate >>>>> .jdbc.ConnectionManager.getConnection(ConnectionManager.java:144) >>>>> [04:08:57.373] {resin-15} at >>>>> org >>>>> .hibernate >>>>> .jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java: >>>>> 139) >>>>> [04:08:57.373] {resin-15} at >>>>> org.hibernate.loader.Loader.prepareQueryStatement(Loader.java: >>>>> 1547) >>>>> [04:08:57.373] {resin-15} at >>>>> org.hibernate.loader.Loader.doQuery(Loader.java:673) >>>>> [04:08:57.373] {resin-15} at >>>>> org >>>>> .hibernate >>>>> .loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java: >>>>> 236) >>>>> [04:08:57.373] {resin-15} at >>>>> org.hibernate.loader.Loader.doList(Loader.java:2213) >>>>> [04:08:57.373] {resin-15} at >>>>> org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) >>>>> [04:08:57.373] {resin-15} at >>>>> org.hibernate.loader.Loader.list(Loader.java:2099) >>>>> [04:08:57.373] {resin-15} at >>>>> org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378) >>>>> [04:08:57.373] {resin-15} at >>>>> org >>>>> .hibernate >>>>> .hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java: >>>>> 338) >>>>> [04:08:57.373] {resin-15} at >>>>> org >>>>> .hibernate >>>>> .engine.query.HQLQueryPlan.performList(HQLQueryPlan.java: >>>>> 172) >>>>> [04:08:57.373] {resin-15} at >>>>> org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121) >>>>> [04:08:57.373] {resin-15} at >>>>> org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) >>>>> [04:08:57.373] {resin-15} at >>>>> org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:65) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .buysou >>>>> .jpa.PersistenceStrategy.getResultList(PersistenceStrategy.java: >>>>> 584) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .buysou >>>>> .stock >>>>> .business >>>>> .stock.GlobalStockCalendar.reload(GlobalStockCalendar.java: >>>>> 41) >>>>> [04:08:57.373] {resin-15} at >>>>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>> [04:08:57.373] {resin-15} at >>>>> sun >>>>> .reflect >>>>> .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>>>> [04:08:57.373] {resin-15} at >>>>> sun >>>>> .reflect >>>>> .DelegatingMethodAccessorImpl >>>>> .invoke(DelegatingMethodAccessorImpl.java:25) >>>>> [04:08:57.373] {resin-15} at >>>>> java.lang.reflect.Method.invoke(Method.java:597) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho >>>>> .config >>>>> .j2ee.PostConstructProgram.inject(PostConstructProgram.java: >>>>> 60) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho.webbeans.component.ComponentImpl.init(ComponentImpl.java: >>>>> 502) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho >>>>> .webbeans >>>>> .component >>>>> .SingletonClassComponent.init(SingletonClassComponent.java: >>>>> 139) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho >>>>> .webbeans >>>>> .component >>>>> .SingletonClassComponent.get(SingletonClassComponent.java: >>>>> 96) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho >>>>> .webbeans >>>>> .component >>>>> .SingletonClassComponent.get(SingletonClassComponent.java: >>>>> 81) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho >>>>> .webbeans >>>>> .manager.WebBeansContainer.startSingletons(WebBeansContainer.java: >>>>> 1079) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho >>>>> .webbeans >>>>> .manager >>>>> .WebBeansContainer.environmentStart(WebBeansContainer.java: >>>>> 1059) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho >>>>> .loader.EnvironmentClassLoader.start(EnvironmentClassLoader.java: >>>>> 583) >>>>> [04:08:57.373] {resin-15} at >>>>> com.caucho.server.webapp.WebApp.start(WebApp.java:1835) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho >>>>> .server.deploy.DeployController.startImpl(DeployController.java: >>>>> 667) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho >>>>> .server.deploy.DeployController.restartImpl(DeployController.java: >>>>> 630) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho >>>>> .server >>>>> .deploy >>>>> .StartAutoRedeployAutoStrategy >>>>> .alarm(StartAutoRedeployAutoStrategy.java:177) >>>>> [04:08:57.373] {resin-15} at >>>>> com >>>>> .caucho >>>>> .server.deploy.DeployController.handleAlarm(DeployController.java: >>>>> 789) >>>>> [04:08:57.373] {resin-15} at >>>>> com.caucho.util.Alarm.handleAlarm(Alarm.java:375) >>>>> [04:08:57.373] {resin-15} at >>>>> com.caucho.util.Alarm.run(Alarm.java: >>>>> 345) >>>>> [04:08:57.373] {resin-15} at >>>>> com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721) >>>>> [04:08:57.373] {resin-15} at >>>>> com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643) >>>>> [04:08:57.373] {resin-15} at java.lang.Thread.run(Thread.java: >>>>> 619) >>>>> = >>>>> = >>>>> = >>>>> ================================================================== >>>>> >>>>> -Wesley >>>>> >>>>> ----- Original Message ----- >>>>> From: "wesley" <[EMAIL PROTECTED]> >>>>> To: "General Discussion for the Resin application server" >>>>> <[email protected]> >>>>> Sent: Wednesday, April 23, 2008 1:51 AM >>>>> Subject: Re: [Resin-interest] <database> config should be >>>>> initializedbeforeany singleton beans >>>>> >>>>> >>>>>> So singleton beans will also got a lazy load after DataSource, >>>>>> right? >>>>>> >>>>>> Thanks, Scott. >>>>>> >>>>>> ps. Do you have time to look at my previous post about how to >>>>>> config jca >>>>>> connection pool max-active-time? >>>>>> >>>>>> ----- Original Message ----- >>>>>> From: "Scott Ferguson" <[EMAIL PROTECTED]> >>>>>> To: "General Discussion for the Resin application server" >>>>>> <[email protected]> >>>>>> Sent: Tuesday, April 22, 2008 10:35 PM >>>>>> Subject: Re: [Resin-interest] <database> config should be >>>>>> initialized >>>>>> beforeany singleton beans >>>>>> >>>>>> >>>>>>> >>>>>>> On Apr 22, 2008, at 2:45 AM, wesley wrote: >>>>>>> >>>>>>>> Hi Scott, >>>>>>>> >>>>>>>> I'm upgrading snap080331 to snap080417. I found my hibernate >>>>>>>> persistence unit not >>>>>>>> working, with no jta-data-source configured. >>>>>>>> I added 080417 src into my project and traced for a while and >>>>>>>> found >>>>>>>> the reason. >>>>>>> >>>>>>> This is something I worked on yesterday. The next snapshot >>>>>>> should >>>>>>> have the fix. >>>>>>> >>>>>>> The fix involves making the persistence.xml lookup of the >>>>>>> dataSource >>>>>>> lazy, so it only occurs using web-app start time, not at >>>>>>> persistence.xml start. >>>>>>> >>>>>>> -- Scott >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I put an breakpoint at com.caucho.naming.Jndi.bindImpl(...) >>>>>>>> line: >>>>>>>> 91 >>>>>>>> and recorded >>>>>>>> the jndi resources registered at order below: >>>>>>>> "java:comp/env/jmx/MBeanServer" ... >>>>>>>> "java:comp/env/jmx/GlobalMBeanServer" ... >>>>>>>> "java:comp/UserTransaction" ... >>>>>>>> "java:comp/TransactionManager" ... >>>>>>>> "java:/TransactionManager" ... >>>>>>>> "java:comp/ThreadPool" >>>>>>>> "java:comp/env/caucho/persistent-store" >>>>>>>> and then my singleton beans were then initialized, then >>>>>>>> "java:comp/env/jdbc/stock" // my <database> config in >>>>>>>> resin- >>>>>>>> web.xml >>>>>>>> "java:comp/env/activemq" // my <connection-factory> >>>>>>>> config >>>>>>>> in resin-web.xml >>>>>>>> >>>>>>>> Some of singleton beans need to access database by inject a >>>>>>>> EMF, so >>>>>>>> amber start to >>>>>>>> load persistence unit. During parsing the persistence.xml, the >>>>>>>> xml >>>>>>>> config will set the >>>>>>>> "jta-data-source" property of the >>>>>>>> com.caucho.amber.cfg.PersistenceUnitConfig object >>>>>>>> by reflection. Before doing it, it will call JNDI.lookup to >>>>>>>> find >>>>>>>> the >>>>>>>> DataSource with name >>>>>>>> specified in persistence.xml, of cource nothing found! It was >>>>>>>> not >>>>>>>> registered yet! >>>>>>>> >>>>>>>> I switched to snapshot080331 binary and still retained some src >>>>>>>> of >>>>>>>> 080417 (src package: >>>>>>>> com.caucho.amber, com.caucho.config, com.caucho.naming) then >>>>>>>> traced >>>>>>>> it again. >>>>>>>> This time I recored the the jndi resources registered at order >>>>>>>> below >>>>>>>> "java:comp/env/jmx/MBeanServer" ... >>>>>>>> "java:comp/env/jmx/GlobalMBeanServer" ... >>>>>>>> "java:comp/UserTransaction" ... >>>>>>>> "java:comp/TransactionManager" ... >>>>>>>> "java:/TransactionManager" ... >>>>>>>> "java:comp/ThreadPool" >>>>>>>> "java:comp/env/caucho/persistent-store" >>>>>>>> "java:comp/env/jdbc/stock" // my <database> config in >>>>>>>> resin- >>>>>>>> web.xml >>>>>>>> "java:comp/env/activemq" // my <connection-factory> >>>>>>>> config >>>>>>>> in resin-web.xml >>>>>>>> and then my singleton beans were then initialized. >>>>>>>> This is the right sequence. >>>>>>>> >>>>>>>> Though I didnot do further test, I think problem were not >>>>>>>> belonged >>>>>>>> to the three packages >>>>>>>> I retained during the two snapshot version switch. >>>>>>>> >>>>>>>> Suggestions are appreciated, thanks. >>>>>>>> >>>>>>>> -Wesley >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> resin-interest mailing list >>>>>>>> [email protected] >>>>>>>> http://maillist.caucho.com/mailman/listinfo/resin-interest >>>>>>> >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> resin-interest mailing list >>>>>>> [email protected] >>>>>>> http://maillist.caucho.com/mailman/listinfo/resin-interest >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> resin-interest mailing list >>>>>> [email protected] >>>>>> http://maillist.caucho.com/mailman/listinfo/resin-interest >>>>>> >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> resin-interest mailing list >>>>> [email protected] >>>>> http://maillist.caucho.com/mailman/listinfo/resin-interest >>>> >>>> >>>> >>>> _______________________________________________ >>>> resin-interest mailing list >>>> [email protected] >>>> http://maillist.caucho.com/mailman/listinfo/resin-interest >>>> >>> >>> >>> >>> _______________________________________________ >>> resin-interest mailing list >>> [email protected] >>> http://maillist.caucho.com/mailman/listinfo/resin-interest >> >> >> >> _______________________________________________ >> resin-interest mailing list >> [email protected] >> http://maillist.caucho.com/mailman/listinfo/resin-interest >> > > > > _______________________________________________ > resin-interest mailing list > [email protected] > http://maillist.caucho.com/mailman/listinfo/resin-interest _______________________________________________ resin-interest mailing list [email protected] http://maillist.caucho.com/mailman/listinfo/resin-interest
