You can subscribe to this list here.
| 2003 |
Jan
|
Feb
(55) |
Mar
(100) |
Apr
(203) |
May
(330) |
Jun
(190) |
Jul
(302) |
Aug
(323) |
Sep
(197) |
Oct
(245) |
Nov
(490) |
Dec
(330) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(194) |
Feb
(400) |
Mar
(416) |
Apr
(415) |
May
(359) |
Jun
(381) |
Jul
(491) |
Aug
(311) |
Sep
(291) |
Oct
(273) |
Nov
(355) |
Dec
(266) |
| 2005 |
Jan
(306) |
Feb
(303) |
Mar
(520) |
Apr
(346) |
May
(255) |
Jun
(221) |
Jul
(171) |
Aug
(247) |
Sep
(147) |
Oct
(125) |
Nov
(165) |
Dec
(65) |
| 2006 |
Jan
(90) |
Feb
(53) |
Mar
(121) |
Apr
(103) |
May
(113) |
Jun
(103) |
Jul
(104) |
Aug
(67) |
Sep
(78) |
Oct
(82) |
Nov
(78) |
Dec
(70) |
| 2007 |
Jan
(77) |
Feb
(76) |
Mar
(63) |
Apr
(30) |
May
(47) |
Jun
(41) |
Jul
(44) |
Aug
(44) |
Sep
(49) |
Oct
(33) |
Nov
(25) |
Dec
(21) |
| 2008 |
Jan
(45) |
Feb
(13) |
Mar
(15) |
Apr
(12) |
May
(9) |
Jun
(33) |
Jul
(30) |
Aug
(7) |
Sep
(20) |
Oct
(17) |
Nov
(20) |
Dec
(10) |
| 2009 |
Jan
(8) |
Feb
(5) |
Mar
(12) |
Apr
(17) |
May
(19) |
Jun
(97) |
Jul
(77) |
Aug
(33) |
Sep
(24) |
Oct
(41) |
Nov
(16) |
Dec
(32) |
| 2010 |
Jan
(24) |
Feb
(14) |
Mar
(50) |
Apr
(71) |
May
(70) |
Jun
(64) |
Jul
(45) |
Aug
(62) |
Sep
(32) |
Oct
(4) |
Nov
(12) |
Dec
(2) |
| 2011 |
Jan
(1) |
Feb
(3) |
Mar
(4) |
Apr
(3) |
May
(6) |
Jun
(1) |
Jul
(4) |
Aug
(3) |
Sep
(4) |
Oct
(6) |
Nov
(3) |
Dec
(3) |
| 2012 |
Jan
(4) |
Feb
(8) |
Mar
(6) |
Apr
(10) |
May
(2) |
Jun
(3) |
Jul
(11) |
Aug
(10) |
Sep
(4) |
Oct
|
Nov
(1) |
Dec
(1) |
| 2013 |
Jan
(4) |
Feb
(1) |
Mar
(9) |
Apr
(1) |
May
(8) |
Jun
(2) |
Jul
(5) |
Aug
(2) |
Sep
|
Oct
(3) |
Nov
(10) |
Dec
(8) |
| 2014 |
Jan
(3) |
Feb
(12) |
Mar
(9) |
Apr
(12) |
May
(2) |
Jun
|
Jul
(3) |
Aug
(1) |
Sep
(1) |
Oct
(4) |
Nov
|
Dec
(2) |
| 2015 |
Jan
(1) |
Feb
(3) |
Mar
(4) |
Apr
(9) |
May
(2) |
Jun
(2) |
Jul
|
Aug
(2) |
Sep
(7) |
Oct
(9) |
Nov
(7) |
Dec
(9) |
| 2016 |
Jan
(7) |
Feb
(5) |
Mar
(5) |
Apr
(5) |
May
(8) |
Jun
(4) |
Jul
(5) |
Aug
(4) |
Sep
(6) |
Oct
(7) |
Nov
(2) |
Dec
(3) |
| 2017 |
Jan
(7) |
Feb
(8) |
Mar
(7) |
Apr
(3) |
May
(4) |
Jun
(3) |
Jul
(5) |
Aug
(8) |
Sep
(4) |
Oct
(2) |
Nov
(3) |
Dec
|
| 2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2019 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2021 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
(2) |
Aug
(5) |
Sep
(2) |
Oct
|
Nov
|
Dec
(1) |
| 2026 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: March, A. <am...@so...> - 2005-01-31 20:54:41
|
I can guarantee that the Hibernate object is not being held across requests. What I cannot be completely sure of is if it is being loaded from the session cache, 2nd tier cache, or the db. I do believe the thread is using the wrong session. The lazy initializer uses the session of the parent object. The parent object is fetched using the session passed by Spring, which should be the one in the ThreadLocal variable of the running Thread. Is anything I have stated untrue or possibly untrue? =20 ________________________________ From: spr...@li... [mailto:spr...@li...] On Behalf Of March, Andres Sent: Saturday, January 29, 2005 12:43 PM To: spr...@li... Subject: RE: [Springframework-developer] Non Thread-safe hibernate session =20 I understand that the lazy initializer is using the wrong session but all our objects are local variables. No object spans requests. So now I'm really confused. The LazyInitializer use the same session as the parent object was loaded in. What I guess I'm saying is that the parent object was also loaded by the wrong session. =20 This problem not only takes load to surface but also is completely random. Different pieces of data during the velocity merge end up failing. You will probably be able to see this by going to http://eq2players.station.sony.com <http://eq2players.station.sony.com/> . If you go to a page that has a lot of data and hit refresh a bunch, stuff will start vanishing. =20 What I can do is verify which session is created for thread 7, since I didn't put that in my trace. I will definitely triple check my code to make sure no object traverses requests. Thanks for your input but I'm still lost. =20 =20 ________________________________ From: spr...@li... [mailto:spr...@li...] On Behalf Of Guillaume Poirier Sent: Saturday, January 29, 2005 11:46 AM To: spr...@li... Subject: Re: [Springframework-developer] Non Thread-safe hibernate session =20 It could be possible if there a finally was missing or something like that, causing a Session to be kept in the ThreadLocal, but it wouldn't cause the Session to be used by a different Thread. Beside, the exception clearly happens with LazyInitialization which makes it doubtful to be related to ThreadLocal stuff, unless the JDK's ThreadLocal class had a concurrency bug that was somehow still unfound. Jurgen's analysis of the situation seems accurate to me. Guillaume Rob Harrop wrote:=20 It seems unlikely that this is a problem with Spring - those threads are created by Tomcat and not Spring. I am wondering however if at that level of load the ThreadLocal stuff isn't getting cleared somehow when a thread is put back in the pool? Is this possible?=20 Rob=20 March, Andres wrote:=20 Unfortunately, this is not the case here. We are using jmeter with unauthenticated requests and therefore put nothing in the httpsession. Additionally, your example should take place with as little as 2 requests: one fetching the object and sticking it into the HttpSession, the other trying to initialize its collections. In our case, we have to create a decent amount of load (~30 pages/sec) for the errors to occur. Any other ideas?=20 ------------------------------------------------------------------------ *From:* spr...@li... [mailto:spr...@li...] *On Behalf Of *Juergen Hoeller=20 *Sent:* Saturday, January 29, 2005 2:44 AM=20 *To:* spr...@li...=20 *Subject:* RE: [Springframework-developer] Non Thread-safe hibernate session=20 Actually, this can happen without either Spring or the ThreadLocal mechanism breaking: One of your persistent objects might hold a lazy persistent collection, which holds a reference to the Session that originally loaded it.=20 If you put such a persistent object into the HttpSession, for example, the original request that loaded the object (in thread TPProcessor1) will have completed and thus the Hibernate Session have been closed. Now, if you take your persistent object out of the HttpSession again in a new request (in thread TPProcessor7) and try to access it lazy collection, it's gonna fail because the original Session has been closed.=20 So the "leak" where a Session reference got out of its original request/thread context is your persistent object in the HttpSession here. This is a well-known problem: To make lazy loading work here, you need to attach the persistent object to the new Hibernate Session (via lock or saveOrUpdate).=20 Juergen=20 -----Original Message-----=20 *From:* spr...@li...=20 [mailto:spr...@li...]*On=20 Behalf Of *March, Andres=20 *Sent:* Friday, January 28, 2005 8:27 PM=20 *To:* spr...@li...=20 *Subject:* [Springframework-developer] Non Thread-safe hibernate=20 session=20 As you can see below, a thread, other than the one that had the=20 session created for it, tries to access a session but it has been=20 closed by the valid owner thread. This only occurs under decent=20 load. There must be some thread safety issue in Spring or the=20 whole ThreadLocal idea goes out the window. Does anybody have any=20 idea how this could occur? I don't see how I could be=20 misinterpreting this trace.=20 FATAL (SessionImpl.java:528) - Constructor for session:=20 net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor1=20 FATAL (SessionFactoryImpl.java:342) - Session :=20 net.sf.hibernate.impl.SessionImpl@b72884 created for Thread :=20 TP-Processor1=20 ...later on...=20 closing session : net.sf.hibernate.impl.SessionImpl@b72884 and=20 conn: com.mchange.v2.c3p0.impl.NewProxyConnection@4ad009 on Thread=20 : TP-Processor1=20 ...later on...=20 net.sf.hibernate.HibernateException: Session is closed :=20 net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor7=20 at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3313)=20 at=20 =20 net.sf.hibernate.proxy.LazyInitializer.initialize(LazyInitializer.java:4 7)=20 at=20 =20 net.sf.hibernate.proxy.LazyInitializer.initializeWrapExceptions(LazyInit ializer.java:60)=20 at=20 =20 net.sf.hibernate.proxy.LazyInitializer.getImplementation(LazyInitializer .java:164)=20 at=20 =20 net.sf.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializ er.java:108)=20 at=20 =20 com.sony.soe.guilds.model.GameCharacter$$EnhancerByCGLIB$$25b6cd13.getBi oImage(<generated>)=20 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)=20 at=20 =20 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:39)=20 at=20 =20 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25)=20 at java.lang.reflect.Method.invoke(Method.java:324)=20 at=20 =20 org.apache.velocity.runtime.parser.node.PropertyExecutor.execute(Propert yExecutor.java:111)=20 at=20 =20 org.apache.velocity.util.introspection.UberspectImpl$VelGetterImpl.invok e(UberspectImpl.java:300)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentif ier.java:157)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReferenc e.java:175)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReferen ce.java:307)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTNotNode.evaluate(ASTNotNode.j ava:47)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpres sion.java:46)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfState ment.java:69)=20 at=20 =20 org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.jav a:231)=20 at org.apache.velocity.runtime.directive.Parse.render(Parse.java:181)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective .java:116)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56 )=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfState ment.java:71)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56 )=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfState ment.java:71)=20 at=20 =20 org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.jav a:231)=20 at org.apache.velocity.runtime.directive.Parse.render(Parse.java:181)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective .java:116)=20 at=20 =20 org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.jav a:231)=20 at org.apache.velocity.Template.merge(Template.java:256)=20 at com.sony.soe.web.mvc.VelocityView.go(VelocityView.java:181)=20 at com.sony.soe.guilds.view.VelocityLayout.go(VelocityLayout.java:135)=20 at org.infohazard.maverick.flow.CommandBase.go(CommandBase.java:79)=20 at org.infohazard.maverick.Dispatcher.service(Dispatcher.java:345)=20 at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:237)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:157)=20 at=20 =20 net.sf.acegisecurity.ui.AbstractIntegrationFilter.doFilter(AbstractInteg rationFilter.java:170)=20 at=20 =20 com.sony.soe.guilds.controller.SecurityFilter.doFilter(SecurityFilter.ja va:118)=20 at=20 =20 net.sf.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.j ava:88)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:186)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:157)=20 at=20 =20 org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilt erInternal(OpenSessionInViewFilter.java:17=20 1)=20 at=20 =20 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequ estFilter.java:76)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:186)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:157)=20 at=20 =20 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:214)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104)=20 at=20 =20 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20)=20 at=20 =20 org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon textValve.java:198)=20 at=20 =20 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:152)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104)=20 at=20 =20 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20)=20 at=20 =20 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :137)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104)=20 at=20 =20 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :117)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:102)=20 at=20 =20 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20)=20 at=20 =20 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104)=20 at=20 =20 org.apache.catalina.valves.RequestDumperValve.invoke(RequestDumperValve. java:169)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:102)=20 at=20 =20 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20)=20 at=20 =20 org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)=20 at=20 =20 org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)=20 at=20 =20 org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:296)=20 at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:372)=20 at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:694) at=20 =20 org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java: 626)=20 at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:807)=20 at=20 =20 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool .java:644)=20 at java.lang.Thread.run(Thread.java:534)=20 -----------------------------------------=20 Andres March=20 Platform - Apps Engineering=20 Sony Online Entertainment=20 desk: 858.577.3373=20 cell: 619.519.1519=20 -------------------------------------------------------=20 This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting=20 Tool for open source databases. Create drag-&-drop reports. Save time=20 by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.=20 Download a FREE copy at http://www.intelliview.com/go/osdn_nl=20 _______________________________________________=20 Springframework-developer mailing list=20 Spr...@li...=20 https://lists.sourceforge.net/lists/listinfo/springframework-developer=20 |
|
From: Juergen H. <ju...@in...> - 2005-01-31 18:36:16
|
I'd rather let AbstractExcelView extend AbstractPoiExcelView, as AbstractExcelView should be the deprecated leaf in the class hierarchy. Also, let's go for "AbstractPoiExcelView", because POI supports more than just Excel. IMO, backwards-compatibility is also important for 1.2 and beyond. Not so much for internal classes, of course, but it is desirable for user-visible classes and in particular classes typically extended by the user. Juergen -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of Alef Arendsen Sent: Monday, January 31, 2005 7:33 PM To: spr...@li... Subject: RE: [Springframework-developer] Post - 1.1.4 --> 1.2? > If we implement such a compatible solution for JExcel, we > could of course release it in 1.1.5. What do you think? Ok, I'll add an AbstractPoiView (extending AbstractExcelView) and an AbstractJExcelView. Backward-compatibility is important if we're releasing a 1.1.5! ALef > > Juergen ------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Alef A. <al...@jt...> - 2005-01-31 18:29:57
|
> If we implement such a compatible solution for JExcel, we=20 > could of course release it in 1.1.5. What do you think? Ok, I'll add an AbstractPoiView (extending AbstractExcelView) and an AbstractJExcelView. Backward-compatibility is important if we're releasing a 1.1.5! ALef >=20 > Juergen |
|
From: Juergen H. <ju...@in...> - 2005-01-31 17:35:24
|
Alef, This hasn't been decided yet. I wouldn't mind doing a 1.1.5 release to get minor things out quicker, as it is unrealistic to expect 1.2 RC1 out before late March (with production-suitable JMX, JCA CCI, Hibernate3, and Cayenne support). Regarding the excel view stuff: Couldn't we implement a solution that doesn't break all current AbstractExcelView usages out there? Maybe keep AbstractExcelView POI-based and add a separate AbstractJExcelView? I know that it's not ideal from a naming perspective, but I'm a bit reluctant to make a non-backwards-compatible change in such a class that users typically extend - even without a phase of deprecation. There won't be hardly any shared logic between POI and JExcel anyway, so I actually don't think that we need a common base class for those web views. Implementing a separate AbstractJExcelView class would certainly be possible. We could even add an AbstractPoiExcelView class that carries POI in the name, keeping AbstractExcelView as a deprecated subclass of it for the time being. That would be backwards-compatible! If we implement such a compatible solution for JExcel, we could of course release it in 1.1.5. What do you think? Juergen -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of Alef Arendsen Sent: Monday, January 31, 2005 6:14 PM To: spr...@li... Subject: [Springframework-developer] Post - 1.1.4 --> 1.2? Juergen, everybody, Are we planning a 1.1.5 or is the 1.1.x release cycle finished after 1.1.4 is released? I'd like to add a couple of (minor) non-backward compatible refactorings (introduce AbstractExcelView and have to subclasses AbstractPoiView and AbstractJExcelView). Alef ----- october 2004 Ok, I still have to add the AbstractJExcelView to the sandbox. I'll wait with adding it to the main codebase until after 1.1.2 Alef > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...] > On Behalf Of Rod Johnson > Sent: Friday, October 15, 2004 12:01 PM > To: spr...@li... > Subject: Re: [Springframework-developer] Addition of jExcelView > > Alef > > I think such a minor incompatibility would be no problem in > 1.2. After all, it's a trivial change. But not acceptable in > 1.1.2, which will be in a couple of weeks. > > > Alef Arendsen wrote: > > I have a AbstractJExcelView lying around here that would be up for > > addition to Spring. Jexcel is another Excel api that works pretty > > smoothly and has some features POI doesn't have (inclusion > of images > > in sheets). I can just add an > > > org.springframework.web.servlet.view.document.AbstractJExcelVi > ew but I > > can also refactor the existing AbstractExcelView to only set the > > content type and load any templates and create two > subclasses for both > > Jexcel > > (AbstractJExcelView) and Poi (AbstractPoiExcelView). > > > > Of course this would mean a non-backwards-compatible change. What's > > the release plan (is there going to be 1.1.2) and if not, > what are the > > opinions on non-backwards-compatible changes for 1.2??? > > > > For now, I'll add it as AbstractJExcelView with AbstractView as its > > superclass, but if somebody wants to see it otherwise, > please let me > > know... > > > > Alef > > > > > > > > ------------------------------------------------------- > > This SF.net email is sponsored by: IT Product Guide on > > ITManagersJournal Use IT products in your business? Tell us > what you > > think of them. Give us Your Opinions, Get Free ThinkGeek Gift > > Certificates! Click to find out more > > http://productguide.itmanagersjournal.com/guidepromo.tmpl > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > -- > > ____________________________________________________ > Rod Johnson > Interface21 - Spring Services from the Source > http://www.springframework.com > > Founder, Spring Framework: > http://www.springframework.org > > Author, "Expert One-on-One J2EE Development Without EJB" > (May 2004, with Juergen Hoeller). > http://www.amazon.com/exec/obidos/ASIN/0764558315/ > > Author, "Expert One-on-One J2EE Design and Development" > (October 2002). > http://www.amazon.com/exec/obidos/tg/detail/-/0764543857/ > > > ____________________________________________________ > Interface21 Limited > Registered Office Summit House, 2-2a Highfield Road, > Dartford, Kent DA1 2JY Registered in England and Wales No. > 5187766 ____________________________________________________ > > > > ------------------------------------------------------- > This SF.net email is sponsored by: IT Product Guide on > ITManagersJournal Use IT products in your business? Tell us > what you think of them. Give us Your Opinions, Get Free > ThinkGeek Gift Certificates! Click to find out more > http://productguide.itmanagersjournal.com/guidepromo.tmpl > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > ------------------------------------------------------- This SF.net email is sponsored by: IT Product Guide on ITManagersJournal Use IT products in your business? Tell us what you think of them. Give us Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more http://productguide.itmanagersjournal.com/guidepromo.tmpl _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer ------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Alef A. <al...@jt...> - 2005-01-31 17:10:55
|
Juergen, everybody, Are we planning a 1.1.5 or is the 1.1.x release cycle finished after 1.1.4 is released? I'd like to add a couple of (minor) non-backward compatible refactorings (introduce AbstractExcelView and have to subclasses AbstractPoiView and AbstractJExcelView). Alef ----- october 2004 Ok, I still have to add the AbstractJExcelView to the sandbox. I'll wait with adding it to the main codebase until after 1.1.2 Alef > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...] > On Behalf Of Rod Johnson > Sent: Friday, October 15, 2004 12:01 PM > To: spr...@li... > Subject: Re: [Springframework-developer] Addition of jExcelView > > Alef > > I think such a minor incompatibility would be no problem in > 1.2. After all, it's a trivial change. But not acceptable in > 1.1.2, which will be in a couple of weeks. > > > Alef Arendsen wrote: > > I have a AbstractJExcelView lying around here that would be up for > > addition to Spring. Jexcel is another Excel api that works pretty > > smoothly and has some features POI doesn't have (inclusion > of images > > in sheets). I can just add an > > > org.springframework.web.servlet.view.document.AbstractJExcelVi > ew but I > > can also refactor the existing AbstractExcelView to only set the > > content type and load any templates and create two > subclasses for both > > Jexcel > > (AbstractJExcelView) and Poi (AbstractPoiExcelView). > > > > Of course this would mean a non-backwards-compatible change. What's > > the release plan (is there going to be 1.1.2) and if not, > what are the > > opinions on non-backwards-compatible changes for 1.2??? > > > > For now, I'll add it as AbstractJExcelView with AbstractView as its > > superclass, but if somebody wants to see it otherwise, > please let me > > know... > > > > Alef > > > > > > > > ------------------------------------------------------- > > This SF.net email is sponsored by: IT Product Guide on > > ITManagersJournal Use IT products in your business? Tell us > what you > > think of them. Give us Your Opinions, Get Free ThinkGeek Gift > > Certificates! Click to find out more > > http://productguide.itmanagersjournal.com/guidepromo.tmpl > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > -- > > ____________________________________________________ > Rod Johnson > Interface21 - Spring Services from the Source > http://www.springframework.com > > Founder, Spring Framework: > http://www.springframework.org > > Author, "Expert One-on-One J2EE Development Without EJB" > (May 2004, with Juergen Hoeller). > http://www.amazon.com/exec/obidos/ASIN/0764558315/ > > Author, "Expert One-on-One J2EE Design and Development" > (October 2002). > http://www.amazon.com/exec/obidos/tg/detail/-/0764543857/ > > > ____________________________________________________ > Interface21 Limited > Registered Office Summit House, 2-2a Highfield Road, > Dartford, Kent DA1 2JY Registered in England and Wales No. > 5187766 ____________________________________________________ > > > > ------------------------------------------------------- > This SF.net email is sponsored by: IT Product Guide on > ITManagersJournal Use IT products in your business? Tell us > what you think of them. Give us Your Opinions, Get Free > ThinkGeek Gift Certificates! Click to find out more > http://productguide.itmanagersjournal.com/guidepromo.tmpl > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > ------------------------------------------------------- This SF.net email is sponsored by: IT Product Guide on ITManagersJournal Use IT products in your business? Tell us what you think of them. Give us Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more http://productguide.itmanagersjournal.com/guidepromo.tmpl _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Alef A. <al...@jt...> - 2005-01-31 17:06:41
|
I think this cannot be something other than a classloading issue... I just replied, asking him to check all his shared directories again... Alef =20 > -----Original Message----- > From: spr...@li...=20 > [mailto:spr...@li...] > On Behalf Of Rob Harrop > Sent: Monday, January 31, 2005 3:01 PM > To: spr...@li... > Subject: [Springframework-developer] Stumped on a Forum Post >=20 > All, >=20 > I've been trying to help a guy on the forums, but I have to=20 > admit to being a little stumped now. His code is working fine=20 > with RC2 but not with 1.1.3. It is complaining about a=20 > missing method:=20 > MutablePropertyValues.addPropertyValue(PropertyValue). As far=20 > as I can tell this method exists in Spring 1.1.3. He is using=20 > JSF which is not something I'm familiar - does anyone else=20 > have any suggestions. >=20 > http://forum.springframework.org/viewtopic.php?t=3D3158 >=20 > Rob >=20 >=20 > ------------------------------------------------------- > This SF.Net email is sponsored by: IntelliVIEW -- Interactive=20 > Reporting Tool for open source databases. Create drag-&-drop=20 > reports. Save time by over 75%! Publish reports on the web.=20 > Export to DOC, XLS, RTF, etc. > Download a FREE copy at http://www.intelliview.com/go/osdn_nl > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer >=20 >=20 >=20 >=20 |
|
From: Colin S. <col...@ex...> - 2005-01-31 14:53:20
|
Here's a thread from the Hibernate forums about how to handle the ehcache config issue that some people are going to have when switching to the new Hibernate 2.1.8. http://forum.hibernate.org/viewtopic.php?t=938297 Basically, the name of the ehcache provider for hibernate changed a while ago, but a lot of people didn't pick up on this. Use "net.sf.hibernate.cache.EhCacheProvider" as it's in the reference doc not the old "net.sf.ehcache.hibernate.Provider" Colin |
|
From: Rob H. <ro...@ca...> - 2005-01-31 13:37:17
|
All, I've been trying to help a guy on the forums, but I have to admit to being a little stumped now. His code is working fine with RC2 but not with 1.1.3. It is complaining about a missing method: MutablePropertyValues.addPropertyValue(PropertyValue). As far as I can tell this method exists in Spring 1.1.3. He is using JSF which is not something I'm familiar - does anyone else have any suggestions. http://forum.springframework.org/viewtopic.php?t=3158 Rob |
|
From: Juergen H. <ju...@in...> - 2005-01-30 21:35:45
|
Everybody, If you're interested in the semantics of BeanFactory hierarchies, please have a look at the following JIRA issue: http://opensource.atlassian.com/projects/spring/browse/SPR-496 I'm unclear about the exact semantics of such a BeanFactory variant, and about whether it's desirable to provide such a variant out-of-the-box. Juergen |
|
From: Juergen H. <ju...@in...> - 2005-01-30 20:53:56
|
Developers, I'm about to release Spring 1.1.4 tomorrow morning. Please refrain from committing to CVS until the release is out. If there's anything urgent you'd like to get in, please let me know immediately :-) Juergen |
|
From: <al...@jt...> - 2005-01-30 20:23:22
|
<html><head>
<style>
.white { color:#FFFFFF }.index { background-color:#FFFFFF }.index-passed { =
color:#004400 }.index-failed { color:#FF0000; font-weight:bold }.index-head=
er { font-weight:bold }.link { font-family:arial,helvetica,sans-serif; font=
-size:10pt; color:#FFFFFF; text-decoration:none; }.tab-table { margin: 0em =
0em 0.5em 0em; }.tabs { font-family:arial,helvetica,sans-serif; font-size:8=
pt; color:#000000; font-weight:bold; padding: 0em 2em; background-color:#EE=
EEEE; }.tabs-link { color:#000000; text-decoration:none; }.tabs-link:visite=
d { color:#000000; text-decoration:none; }.tabs-selected { font-family:aria=
l,helvetica,sans-serif; font-size:8pt; color:#000000; font-weight:bold; pad=
ding: 0em 2em; }.tabs-selected { border: inset; }.header-title { font-famil=
y:arial,helvetica,sans-serif; font-size:12pt; color:#000000; font-weight:bo=
ld; }.header-label { font-weight:bold; }.header-data { font-family:arial,he=
lvetica,sans-serif; font-size:10pt; color:#000000; }.modifications-data { f=
ont-family:arial,helvetica,sans-serif; font-size:8pt; color:#000000; }.modi=
fications-sectionheader { background-color:#000066; font-family:arial,helve=
tica,sans-serif; font-size:10pt; color:#FFFFFF; }.modifications-oddrow { ba=
ckground-color:#CCCCCC }.modifications-evenrow { background-color:#FFFFCC }=
.changelists-oddrow { background-color:#CCCCCC }.changelists-evenrow { back=
ground-color:#FFFFCC }.changelists-file-spacer { background-color:#FFFFFF }=
.changelists-file-evenrow { background-color:#EEEEEE }.changelists-file-odd=
row { background-color:#FFFFEE }.changelists-file-header { background-color=
:#666666; font-family:arial,helvetica,sans-serif; font-size:8pt; color:#FFF=
FFF; }.compile-data { font-family:arial,helvetica,sans-serif; font-size:8pt=
; color:#000000; }.compile-error-data { font-family:arial,helvetica,sans-se=
rif; font-size:8pt; color:#FF0000; }.compile-warn-data { font-family:arial,=
helvetica,sans-serif; font-size:8pt; color:#CC9900; }.compile-sectionheader=
{ background-color:#000066; font-family:arial,helvetica,sans-serif; font-s=
ize:10pt; color:#FFFFFF; }.distributables-data { font-family:arial,helvetic=
a,sans-serif; font-size:8pt; color:#000000; }.distributables-sectionheader =
{ background-color:#000066; font-family:arial,helvetica,sans-serif; font-si=
ze:10pt; color:#FFFFFF; }.distributables-oddrow { background-color:#CCCCCC =
}.unittests-sectionheader { background-color:#000066; font-family:arial,hel=
vetica,sans-serif; font-size:10pt; color:#FFFFFF; }.unittests-oddrow { back=
ground-color:#CCCCCC }.unittests-data { font-family:arial,helvetica,sans-se=
rif; font-size:8pt; color:#000000; }.unittests-error { font-family:arial,he=
lvetica,sans-serif; font-size:8pt; color:#901090; }.unittests-failure { fon=
t-family:arial,helvetica,sans-serif; font-size:8pt; color:#FF0000; }.checks=
tyle-oddrow { background-color:#CCCCCC }.checkstyle-data { font-family:aria=
l,helvetica,sans-serif; font-size:8pt; color:#000000; }.checkstyle-sectionh=
eader { background-color:#000066; font-family:arial,helvetica,sans-serif; f=
ont-size:10pt; color:#FFFFFF; }
</style>
</head><body>
<p>
<table width=3D"98%" border=3D"0" cellspacing=3D"0" cellpadding=3D"2" align=
=3D"center"><tr><td class=3D"header-title">BUILD COMPLETE - =
build.197</td></tr><tr><td class=3D"header-data"><span class=
=3D"header-label">Date of build: </span>01/30/2005 20:58:59</td></tr><=
tr><td class=3D"header-data"><span class=3D"header-label">Time to build:&nb=
sp;</span>23 minutes 44 seconds</td></tr><tr><td class=3D"header-data"><spa=
n class=3D"header-label">Last changed: </span>01/30/2005 07:41:34</td>=
</tr><tr><td class=3D"header-data"><span class=3D"header-label">Last log en=
try: </span>*** empty log message ***</td></tr></table><p>
<p>
<p>
<table xmlns=3D"http://www.w3.org/TR/html4/strict.dtd" width=3D"98%" border=
=3D"0" cellspacing=3D"0" cellpadding=3D"2" align=3D"center"><tr><td class=
=3D"compile-sectionheader"> Errors/Warnings: (=
6) </td></tr><tr><td><pre class=3D"compile-data">Note: S=
ome input files use or override a deprecated API.<br class=3D"none"/>Note: =
Recompile with -deprecation for details.<br class=3D"none"/>Note: /jteam/bu=
ild2/checkout/spring/spring/mock/org/springframework/mock/web/MockHttpSessi=
on.java uses or overrides a deprecated API.<br class=3D"none"/>Note: Recomp=
ile with -deprecation for details.<br class=3D"none"/>Note: Some input file=
s use or override a deprecated API.<br class=3D"none"/>Note: Recompile with=
-deprecation for details.<br class=3D"none"/></pre></td></tr></table><p>
<table xmlns=3D"http://www.w3.org/TR/html4/strict.dtd" width=3D"98%" border=
=3D"0" cellspacing=3D"0" cellpadding=3D"2" align=3D"center"><tr><td class=
=3D"compile-sectionheader"> Javadoc Errors/War=
nings: (29) </td></tr><tr><td><pre class=3D"compile-data=
">/jteam/build2/checkout/spring/spring/src/org/springframework/jdbc/datasou=
rce/LazyConnectionDataSourceProxy.java:199: warning - Parameter "username" =
is documented more than once.<br/>/jteam/build2/checkout/spring/spring/src/=
org/springframework/jdbc/support/lob/OracleLobHandler.java:76: warning - Ta=
g @see: reference not found: oracle.sql.BLOB<br/>/jteam/build2/checkout/spr=
ing/spring/src/org/springframework/jdbc/support/lob/OracleLobHandler.java:7=
6: warning - Tag @see: reference not found: oracle.sql.CLOB<br/>/jteam/buil=
d2/checkout/spring/spring/src/org/springframework/jdbc/support/lob/OracleLo=
bHandler.java:115: warning - Tag @see: reference not found: oracle.sql.BLOB=
#DURATION_SESSION<br/>/jteam/build2/checkout/spring/spring/src/org/springfr=
amework/jdbc/support/lob/OracleLobHandler.java:115: warning - Tag @see: ref=
erence not found: oracle.sql.BLOB#MODE_READWRITE<br/>/jteam/build2/checkout=
/spring/spring/src/org/springframework/jdbc/support/lob/OracleLobHandler.ja=
va:115: warning - Tag @see: reference not found: oracle.sql.CLOB#DURATION_S=
ESSION<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/jdb=
c/support/lob/OracleLobHandler.java:115: warning - Tag @see: reference not =
found: oracle.sql.CLOB#MODE_READWRITE<br/>/jteam/build2/checkout/spring/spr=
ing/src/org/springframework/jdbc/support/lob/OracleLobHandler.java:154: war=
ning - Tag @see: reference not found: oracle.jdbc.OracleConnection<br/>/jte=
am/build2/checkout/spring/spring/src/org/springframework/jdbc/support/lob/O=
racleLobHandler.java:164: warning - Tag @see: reference not found: oracle.s=
ql.BLOB#createTemporary<br/>/jteam/build2/checkout/spring/spring/src/org/sp=
ringframework/jdbc/support/lob/OracleLobHandler.java:164: warning - Tag @se=
e: reference not found: oracle.sql.CLOB#createTemporary<br/>/jteam/build2/c=
heckout/spring/spring/src/org/springframework/jdbc/support/nativejdbc/JBoss=
NativeJdbcExtractor.java:49: warning - Tag @see: reference not found: org.j=
boss.resource.adapter.jdbc.WrappedConnection#getUnderlyingConnection<br/>/j=
team/build2/checkout/spring/spring/src/org/springframework/jdbc/support/nat=
ivejdbc/JBossNativeJdbcExtractor.java:49: warning - Tag @see: reference not=
found: org.jboss.resource.adapter.jdbc.WrappedStatement#getUnderlyingState=
ment<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/jdbc/=
support/nativejdbc/JBossNativeJdbcExtractor.java:49: warning - Tag @see: re=
ference not found: org.jboss.resource.adapter.jdbc.WrappedResultSet#getUnde=
rlyingResultSet<br/>/jteam/build2/checkout/spring/spring/src/org/springfram=
ework/jdbc/support/nativejdbc/WebLogicNativeJdbcExtractor.java:45: warning =
- Tag @see: reference not found: weblogic.jdbc.extensions.WLConnection#getV=
endorConnection<br/>/jteam/build2/checkout/spring/spring/src/org/springfram=
ework/jdbc/support/nativejdbc/WebSphereNativeJdbcExtractor.java:34: warning=
- Tag @see: reference not found: com.ibm.ws.rsadapter.jdbc.WSJdbcConnectio=
n<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/jdbc/sup=
port/nativejdbc/WebSphereNativeJdbcExtractor.java:34: warning - Tag @see: r=
eference not found: com.ibm.ws.rsadapter.jdbc.WSJdbcUtil#getNativeConnectio=
n<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/jdbc/sup=
port/nativejdbc/WebSphereNativeJdbcExtractor.java:34: warning - Tag @see: r=
eference not found: com.ibm.ejs.cm.proxy.ConnectionProxy#getPhysicalConnect=
ion<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/orm/ib=
atis/SqlMapClientFactoryBean.java:177: warning - Tag @see: reference not fo=
und: com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransactionConfig<br/>/j=
team/build2/checkout/spring/spring/src/org/springframework/orm/ibatis/SqlMa=
pClientFactoryBean.java:177: warning - Tag @see: reference not found: com.i=
batis.sqlmap.engine.transaction.jta.JtaTransactionConfig<br/>/jteam/build2/=
checkout/spring/spring/src/org/springframework/orm/ibatis/SqlMapClientFacto=
ryBean.java:205: warning - Tag @see: reference not found: com.ibatis.sqlmap=
.engine.transaction.jdbc.JdbcTransactionConfig<br/>/jteam/build2/checkout/s=
pring/spring/src/org/springframework/orm/ibatis/SqlMapClientFactoryBean.jav=
a:205: warning - Tag @see: reference not found: com.ibatis.sqlmap.engine.tr=
ansaction.jta.JtaTransactionConfig<br/>/jteam/build2/checkout/spring/spring=
/src/org/springframework/transaction/jta/WebLogicJtaTransactionManager.java=
:67: warning - Tag @see: reference not found: weblogic.transaction.Transact=
ionManager#forceResume<br/>/jteam/build2/checkout/spring/spring/src/org/spr=
ingframework/transaction/jta/WebLogicServerTransactionManagerFactoryBean.ja=
va:45: warning - Tag @see: reference not found: weblogic.transaction.TxHelp=
er#getTransactionManager<br/>/jteam/build2/checkout/spring/spring/src/org/s=
pringframework/transaction/jta/WebSphereTransactionManagerFactoryBean.java:=
47: warning - Tag @see: reference not found: com.ibm.ws.Transaction.Transac=
tionManagerFactory#getTransactionManager<br/>/jteam/build2/checkout/spring/=
spring/src/org/springframework/transaction/jta/WebSphereTransactionManagerF=
actoryBean.java:47: warning - Tag @see: reference not found: com.ibm.ejs.jt=
s.jta.JTSXA#getTransactionManager<br/>/jteam/build2/checkout/spring/spring/=
src/org/springframework/transaction/jta/WebSphereTransactionManagerFactoryB=
ean.java:47: warning - Tag @see: reference not found: com.ibm.ejs.jts.jta.T=
ransactionManagerFactory#getTransactionManager<br/>/jteam/build2/checkout/s=
pring/spring/src/org/springframework/util/ObjectUtils.java:31: warning - Ta=
g @see: reference not found: org.apache.commons.lang.ObjectUtils<br/>/jteam=
/build2/checkout/spring/spring/src/org/springframework/util/StringUtils.jav=
a:47: warning - Tag @see: reference not found: org.apache.commons.lang.Stri=
ngUtils<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/we=
b/servlet/handler/metadata/PathMap.java:31: warning - @@org.apache.commons.=
attributes.Indexed() is an unknown tag.<br/></pre></td></tr></table><p>
<table width=3D"98%" border=3D"0" cellspacing=3D"0" cellpadding=3D"2" align=
=3D"center"><tr><td colspan=3D"4" class=3D"unittests-sectionheader"> =
Unit Tests: (2505) </td></tr><tr><td><tabl=
e width=3D"98%" border=3D"0" cellspacing=3D"0" cellpadding=3D"2" align=3D"c=
enter"><tr><td class=3D"unittests-data"> failure =
</td><td width=3D"40%" class=3D"unittests-data">testHelpPage</td><td width=
=3D"40%" class=3D"unittests-data">org.springframework.apptests.jpetstore.Al=
lTests</td></tr><tr class=3D"unittests-oddrow"><td class=3D"unittests-data"=
> failure </td><td width=3D"40%" class=3D"unittes=
ts-data">testPurchase</td><td width=3D"40%" class=3D"unittests-data">org.sp=
ringframework.apptests.jpetstore.AllTests</td></tr><tr><td class=3D"unittes=
ts-data"> failure </td><td width=3D"40%" class=3D=
"unittests-data">testSearch</td><td width=3D"40%" class=3D"unittests-data">=
org.springframework.apptests.jpetstore.AllTests</td></tr><tr class=3D"unitt=
ests-oddrow"><td class=3D"unittests-data"> failure =
</td><td width=3D"40%" class=3D"unittests-data">testHelpPage</td><td widt=
h=3D"40%" class=3D"unittests-data">org.springframework.apptests.jpetstore.A=
llTests</td></tr><tr><td class=3D"unittests-data"> failure =
</td><td width=3D"40%" class=3D"unittests-data">testPurchase</td>=
<td width=3D"40%" class=3D"unittests-data">org.springframework.apptests.jpe=
tstore.AllTests</td></tr><tr class=3D"unittests-oddrow"><td class=3D"unitte=
sts-data"> failure </td><td width=3D"40%" class=
=3D"unittests-data">testSearch</td><td width=3D"40%" class=3D"unittests-dat=
a">org.springframework.apptests.jpetstore.AllTests</td></tr></table></td></=
tr><tr></tr><tr><td colspan=3D"2"> </td></tr><tr><td colspan=3D"4" cla=
ss=3D"unittests-sectionheader"> Unit Test Error De=
tails: (6) </td></tr><tr><td class=3D"unittests-data" c=
olspan=3D"2"> Test: testHelpPage</td></tr><tr><td class=
=3D"unittests-data" colspan=3D"2"> Class: org.springfra=
mework.apptests.jpetstore.AllTests</td></tr><tr><td class=3D"unittests-data=
" colspan=3D"2"> Type: junit.framework.AssertionFailedError<=
/td></tr><tr><td class=3D"unittests-data" colspan=3D"2"> Mes=
sage: Exception: com.meterware.httpunit.HttpInternalErrorException: Error o=
n HTTP request: 500 Internal Error [http://localhost:13084/jpetstore/shop/h=
elp.do?param=3Dfreemarker]</td></tr><tr><td class=3D"unittests-failure" col=
span=3D"2"><pre>junit.framework.AssertionFailedError: Exception: com.meterw=
are.httpunit.HttpInternalErrorException: Error on HTTP request: 500 Interna=
l Error [http://localhost:13084/jpetstore/shop/help.do?param=3Dfreemarker]<=
br>=09at org.springframework.apptests.jpetstore.AllTests.testHelpPage(Unkno=
wn Source)<br>=09at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Met=
hod)<br>=09at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcces=
sorImpl.java:39)<br>=09at sun.reflect.DelegatingMethodAccessorImpl.invoke(D=
elegatingMethodAccessorImpl.java:25)<br>=09at java.lang.Thread.run(Thread.j=
ava:534)<br></pre></td></tr><tr><td class=3D"unittests-data" colspan=3D"2">=
Test: testPurchase</td></tr><tr><td class=3D"unittests=
-data" colspan=3D"2"> Class: org.springframework.apptes=
ts.jpetstore.AllTests</td></tr><tr><td class=3D"unittests-data" colspan=3D"=
2"> Type: junit.framework.AssertionFailedError</td></tr><tr>=
<td class=3D"unittests-data" colspan=3D"2"> Message: Excepti=
on: com.meterware.httpunit.HttpInternalErrorException: Error on HTTP reques=
t: 500 Internal Error [http://localhost:13084/jpetstore/shop/index.do]</td>=
</tr><tr><td class=3D"unittests-failure" colspan=3D"2"><pre>junit.framework=
.AssertionFailedError: Exception: com.meterware.httpunit.HttpInternalErrorE=
xception: Error on HTTP request: 500 Internal Error [http://localhost:13084=
/jpetstore/shop/index.do]<br>=09at org.springframework.apptests.jpetstore.A=
llTests.testPurchase(Unknown Source)<br>=09at sun.reflect.NativeMethodAcces=
sorImpl.invoke0(Native Method)<br>=09at sun.reflect.NativeMethodAccessorImp=
l.invoke(NativeMethodAccessorImpl.java:39)<br>=09at sun.reflect.DelegatingM=
ethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br>=09at jav=
a.lang.Thread.run(Thread.java:534)<br></pre></td></tr><tr><td class=3D"unit=
tests-data" colspan=3D"2"> Test: testSearch</td></tr><t=
r><td class=3D"unittests-data" colspan=3D"2"> Class: or=
g.springframework.apptests.jpetstore.AllTests</td></tr><tr><td class=3D"uni=
ttests-data" colspan=3D"2"> Type: junit.framework.AssertionF=
ailedError</td></tr><tr><td class=3D"unittests-data" colspan=3D"2"> =
Message: Exception: com.meterware.httpunit.HttpInternalErrorExcepti=
on: Error on HTTP request: 500 Internal Error [http://localhost:13084/jpets=
tore/shop/index.do]</td></tr><tr><td class=3D"unittests-failure" colspan=3D=
"2"><pre>junit.framework.AssertionFailedError: Exception: com.meterware.htt=
punit.HttpInternalErrorException: Error on HTTP request: 500 Internal Error=
[http://localhost:13084/jpetstore/shop/index.do]<br>=09at org.springframew=
ork.apptests.jpetstore.AllTests.testSearch(Unknown Source)<br>=09at sun.ref=
lect.NativeMethodAccessorImpl.invoke0(Native Method)<br>=09at sun.reflect.N=
ativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br>=09at s=
un.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl=
.java:25)<br>=09at java.lang.Thread.run(Thread.java:534)<br></pre></td></tr=
><tr><td class=3D"unittests-data" colspan=3D"2"> Test: =
testHelpPage</td></tr><tr><td class=3D"unittests-data" colspan=3D"2"> =
Class: org.springframework.apptests.jpetstore.AllTests</td><=
/tr><tr><td class=3D"unittests-data" colspan=3D"2"> Type: ju=
nit.framework.AssertionFailedError</td></tr><tr><td class=3D"unittests-data=
" colspan=3D"2"> Message: Exception: com.meterware.httpunit.=
HttpInternalErrorException: Error on HTTP request: 500 Internal Error [http=
://localhost:13084/jpetstore/shop/help.do?param=3Dfreemarker]</td></tr><tr>=
<td class=3D"unittests-failure" colspan=3D"2"><pre>junit.framework.Assertio=
nFailedError: Exception: com.meterware.httpunit.HttpInternalErrorException:=
Error on HTTP request: 500 Internal Error [http://localhost:13084/jpetstor=
e/shop/help.do?param=3Dfreemarker]<br>=09at org.springframework.apptests.jp=
etstore.AllTests.testHelpPage(Unknown Source)<br>=09at sun.reflect.NativeMe=
thodAccessorImpl.invoke0(Native Method)<br>=09at sun.reflect.NativeMethodAc=
cessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br>=09at sun.reflect.De=
legatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br>=
=09at java.lang.Thread.run(Thread.java:534)<br></pre></td></tr><tr><td clas=
s=3D"unittests-data" colspan=3D"2"> Test: testPurchase<=
/td></tr><tr><td class=3D"unittests-data" colspan=3D"2"> Cla=
ss: org.springframework.apptests.jpetstore.AllTests</td></tr><tr><td c=
lass=3D"unittests-data" colspan=3D"2"> Type: junit.framework=
.AssertionFailedError</td></tr><tr><td class=3D"unittests-data" colspan=3D"=
2"> Message: Exception: com.meterware.httpunit.HttpInternalE=
rrorException: Error on HTTP request: 500 Internal Error [http://localhost:=
13084/jpetstore/shop/index.do]</td></tr><tr><td class=3D"unittests-failure"=
colspan=3D"2"><pre>junit.framework.AssertionFailedError: Exception: com.me=
terware.httpunit.HttpInternalErrorException: Error on HTTP request: 500 Int=
ernal Error [http://localhost:13084/jpetstore/shop/index.do]<br>=09at org.s=
pringframework.apptests.jpetstore.AllTests.testPurchase(Unknown Source)<br>=
=09at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>=09at =
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:3=
9)<br>=09at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho=
dAccessorImpl.java:25)<br>=09at java.lang.Thread.run(Thread.java:534)<br></=
pre></td></tr><tr><td class=3D"unittests-data" colspan=3D"2"> =
Test: testSearch</td></tr><tr><td class=3D"unittests-data" colspan=
=3D"2"> Class: org.springframework.apptests.jpetstore.A=
llTests</td></tr><tr><td class=3D"unittests-data" colspan=3D"2"> =
Type: junit.framework.AssertionFailedError</td></tr><tr><td class=3D"u=
nittests-data" colspan=3D"2"> Message: Exception: com.meterw=
are.httpunit.HttpInternalErrorException: Error on HTTP request: 500 Interna=
l Error [http://localhost:13084/jpetstore/shop/index.do]</td></tr><tr><td c=
lass=3D"unittests-failure" colspan=3D"2"><pre>junit.framework.AssertionFail=
edError: Exception: com.meterware.httpunit.HttpInternalErrorException: Erro=
r on HTTP request: 500 Internal Error [http://localhost:13084/jpetstore/sho=
p/index.do]<br>=09at org.springframework.apptests.jpetstore.AllTests.testSe=
arch(Unknown Source)<br>=09at sun.reflect.NativeMethodAccessorImpl.invoke0(=
Native Method)<br>=09at sun.reflect.NativeMethodAccessorImpl.invoke(NativeM=
ethodAccessorImpl.java:39)<br>=09at sun.reflect.DelegatingMethodAccessorImp=
l.invoke(DelegatingMethodAccessorImpl.java:25)<br>=09at java.lang.Thread.ru=
n(Thread.java:534)<br></pre></td></tr><tr><td colspan=3D"2"> </td></tr=
></table><p>
<table width=3D"98%" border=3D"0" cellspacing=3D"1" cellpadding=3D"2" align=
=3D"center"><tr><td colspan=3D"6" class=3D"modifications-sectionheader"> =
Modifications since last build: =
(174) </td></tr><tr class=3D"modifications-evenrow"><td=
class=3D"modifications-data">modified</td><td class=3D"modifications-data"=
>kdonald</td><td class=3D"modifications-data">sandbox/src/org/springframewo=
rk/web/flow/Flow.java</td><td class=3D"modifications-data">*** empty log me=
ssage ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifica=
tions-data">modified</td><td class=3D"modifications-data">kdonald</td><td c=
lass=3D"modifications-data">sandbox/src/org/springframework/web/flow/Transi=
tion.java</td><td class=3D"modifications-data">*** empty log message ***</t=
d></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data"=
>modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"mod=
ifications-data">sandbox/src/org/springframework/web/flow/MulticastFlowLife=
cycleListener.java</td><td class=3D"modifications-data">*** empty log messa=
ge ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificatio=
ns-data">modified</td><td class=3D"modifications-data">kdonald</td><td clas=
s=3D"modifications-data">sandbox/src/org/springframework/web/flow/BeanFacto=
ryAwareFlow.java</td><td class=3D"modifications-data">*** empty log message=
***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modification=
s-data">modified</td><td class=3D"modifications-data">kdonald</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/web/flow/BeanFactor=
yAwareFlow.java</td><td class=3D"modifications-data">*** empty log message =
***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-=
data">modified</td><td class=3D"modifications-data">kdonald</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/web/flow/Flow.java<=
/td><td class=3D"modifications-data">*** empty log message ***</td></tr><tr=
class=3D"modifications-evenrow"><td class=3D"modifications-data">modified<=
/td><td class=3D"modifications-data">kdonald</td><td class=3D"modifications=
-data">sandbox/src/org/springframework/web/flow/action/BindAndValidateActio=
n.java</td><td class=3D"modifications-data">*** empty log message ***</td><=
/tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">mod=
ified</td><td class=3D"modifications-data">kdonald</td><td class=3D"modific=
ations-data">sandbox/src/org/springframework/web/flow/action/BindAndValidat=
eAction.java</td><td class=3D"modifications-data">*** empty log message ***=
</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-da=
ta">modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"=
modifications-data">sandbox/src/org/springframework/web/flow/action/BindAnd=
ValidateAction.java</td><td class=3D"modifications-data">*** empty log mess=
age ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificati=
ons-data">modified</td><td class=3D"modifications-data">kdonald</td><td cla=
ss=3D"modifications-data">sandbox/src/org/springframework/web/flow/action/P=
opulateFormAction.java</td><td class=3D"modifications-data">*** empty log m=
essage ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifi=
cations-data">modified</td><td class=3D"modifications-data">kdonald</td><td=
class=3D"modifications-data">sandbox/src/org/springframework/web/flow/acti=
on/AbstractActionBean.java</td><td class=3D"modifications-data">*** empty l=
og message ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"mod=
ifications-data">modified</td><td class=3D"modifications-data">jhoeller</td=
><td class=3D"modifications-data">src/org/springframework/aop/support/NameM=
atchMethodPointcut.java</td><td class=3D"modifications-data">polishing</td>=
</tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">m=
odified</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modi=
fications-data">src/org/springframework/jdbc/datasource/LazyConnectionDataS=
ourceProxy.java</td><td class=3D"modifications-data">polishing</td></tr><tr=
class=3D"modifications-oddrow"><td class=3D"modifications-data">modified</=
td><td class=3D"modifications-data">jhoeller</td><td class=3D"modifications=
-data">src/org/springframework/aop/framework/Cglib2AopProxy.java</td><td cl=
ass=3D"modifications-data">polishing</td></tr><tr class=3D"modifications-ev=
enrow"><td class=3D"modifications-data">modified</td><td class=3D"modificat=
ions-data">jhoeller</td><td class=3D"modifications-data">src/org/springfram=
ework/aop/framework/adapter/AdvisorAdapterRegistry.java</td><td class=3D"mo=
difications-data">polishing</td></tr><tr class=3D"modifications-oddrow"><td=
class=3D"modifications-data">modified</td><td class=3D"modifications-data"=
>jhoeller</td><td class=3D"modifications-data">src/org/springframework/aop/=
framework/DefaultAopProxyFactory.java</td><td class=3D"modifications-data">=
added early check for CGLIB, to fail with a clear error message if CGLIB is=
needed but not available</td></tr><tr class=3D"modifications-evenrow"><td =
class=3D"modifications-data">modified</td><td class=3D"modifications-data">=
jhoeller</td><td class=3D"modifications-data">src/org/springframework/util/=
DefaultPropertiesPersister.java</td><td class=3D"modifications-data">rename=
d "trimFrontWhitespace" and "trimRearWhitespace" to "trimLeadingWhitespace"=
and "trimTrailingWhitespace", respectively</td></tr><tr class=3D"modificat=
ions-oddrow"><td class=3D"modifications-data">modified</td><td class=3D"mod=
ifications-data">jhoeller</td><td class=3D"modifications-data">src/org/spri=
ngframework/util/StringUtils.java</td><td class=3D"modifications-data">rena=
med "trimFrontWhitespace" and "trimRearWhitespace" to "trimLeadingWhitespac=
e" and "trimTrailingWhitespace", respectively</td></tr><tr class=3D"modific=
ations-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"=
modifications-data">jhoeller</td><td class=3D"modifications-data">src/org/s=
pringframework/util/Log4jConfigurer.java</td><td class=3D"modifications-dat=
a">polishing</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modif=
ications-data">modified</td><td class=3D"modifications-data">jhoeller</td><=
td class=3D"modifications-data">src/org/springframework/web/util/Log4jWebCo=
nfigurer.java</td><td class=3D"modifications-data">support "file:" URL as "=
log4jConfigLocation" (as alternative to ServletContext resource)</td></tr><=
tr class=3D"modifications-evenrow"><td class=3D"modifications-data">modifie=
d</td><td class=3D"modifications-data">kdonald</td><td class=3D"modificatio=
ns-data">sandbox/src/org/springframework/web/flow/FlowSessionExecutionStack=
.java</td><td class=3D"modifications-data">*** empty log message ***</td></=
tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">modi=
fied</td><td class=3D"modifications-data">kdonald</td><td class=3D"modifica=
tions-data">sandbox/src/org/springframework/web/flow/FlowSessionExecutionIn=
fo.java</td><td class=3D"modifications-data">*** empty log message ***</td>=
</tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">m=
odified</td><td class=3D"modifications-data">kdonald</td><td class=3D"modif=
ications-data">sandbox/src/org/springframework/web/flow/FlowSessionExecutio=
nStack.java</td><td class=3D"modifications-data">*** empty log message ***<=
/td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data=
">modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"mo=
difications-data">sandbox/src/org/springframework/web/flow/struts/FlowActio=
n.java</td><td class=3D"modifications-data">*** empty log message ***</td><=
/tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">mo=
dified</td><td class=3D"modifications-data">robharrop</td><td class=3D"modi=
fications-data">sandbox/src/org/springframework/jmx/MBeanExporter.java</td>=
<td class=3D"modifications-data">Introduced RegistrationStrategy for JMX to=
aid in Geronimo integration.</td></tr><tr class=3D"modifications-oddrow"><=
td class=3D"modifications-data">added</td><td class=3D"modifications-data">=
robharrop</td><td class=3D"modifications-data">sandbox/src/org/springframew=
ork/jmx/registration/DefaultRegistrationStrategy.java</td><td class=3D"modi=
fications-data">Introduced RegistrationStrategy for JMX to aid in Geronimo =
integration.</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modi=
fications-data">added</td><td class=3D"modifications-data">robharrop</td><t=
d class=3D"modifications-data">sandbox/src/org/springframework/jmx/registra=
tion/MBeanServerAwareRegistrationStrategy.java</td><td class=3D"modificatio=
ns-data">Introduced RegistrationStrategy for JMX to aid in Geronimo integra=
tion.</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modification=
s-data">added</td><td class=3D"modifications-data">robharrop</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/jmx/registration/Re=
gistrationStrategy.java</td><td class=3D"modifications-data">Introduced Reg=
istrationStrategy for JMX to aid in Geronimo integration.</td></tr><tr clas=
s=3D"modifications-evenrow"><td class=3D"modifications-data">modified</td><=
td class=3D"modifications-data">kdonald</td><td class=3D"modifications-data=
">sandbox/src/org/springframework/web/flow/Transition.java</td><td class=3D=
"modifications-data">*** empty log message ***</td></tr><tr class=3D"modifi=
cations-oddrow"><td class=3D"modifications-data">modified</td><td class=3D"=
modifications-data">kdonald</td><td class=3D"modifications-data">sandbox/sr=
c/org/springframework/web/flow/Transition.java</td><td class=3D"modificatio=
ns-data">*** empty log message ***</td></tr><tr class=3D"modifications-even=
row"><td class=3D"modifications-data">modified</td><td class=3D"modificatio=
ns-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/sprin=
gframework/web/flow/ActionState.java</td><td class=3D"modifications-data">*=
** empty log message ***</td></tr><tr class=3D"modifications-oddrow"><td cl=
ass=3D"modifications-data">modified</td><td class=3D"modifications-data">kd=
onald</td><td class=3D"modifications-data">sandbox/src/org/springframework/=
web/flow/Transition.java</td><td class=3D"modifications-data">*** empty log=
message ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modi=
fications-data">modified</td><td class=3D"modifications-data">kdonald</td><=
td class=3D"modifications-data">sandbox/src/org/springframework/web/flow/Tr=
ansitionableState.java</td><td class=3D"modifications-data">*** empty log m=
essage ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modific=
ations-data">modified</td><td class=3D"modifications-data">kdonald</td><td =
class=3D"modifications-data">sandbox/src/org/springframework/web/flow/strut=
s/FlowAction.java</td><td class=3D"modifications-data">*** empty log messag=
e ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modificatio=
ns-data">modified</td><td class=3D"modifications-data">kdonald</td><td clas=
s=3D"modifications-data">sandbox/src/org/springframework/web/flow/struts/Fl=
owAction.java</td><td class=3D"modifications-data">*** empty log message **=
*</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-da=
ta">modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"=
modifications-data">sandbox/src/org/springframework/web/flow/Flow.java</td>=
<td class=3D"modifications-data">*** empty log message ***</td></tr><tr cla=
ss=3D"modifications-evenrow"><td class=3D"modifications-data">modified</td>=
<td class=3D"modifications-data">kdonald</td><td class=3D"modifications-dat=
a">sandbox/src/org/springframework/web/flow/FlowLifecycleListener.java</td>=
<td class=3D"modifications-data">*** empty log message ***</td></tr><tr cla=
ss=3D"modifications-oddrow"><td class=3D"modifications-data">added</td><td =
class=3D"modifications-data">kdonald</td><td class=3D"modifications-data">s=
andbox/src/org/springframework/web/flow/FlowSessionExecution.java</td><td c=
lass=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D=
"modifications-evenrow"><td class=3D"modifications-data">modified</td><td c=
lass=3D"modifications-data">kdonald</td><td class=3D"modifications-data">sa=
ndbox/src/org/springframework/web/flow/FlowSessionExecutionStack.java</td><=
td class=3D"modifications-data">*** empty log message ***</td></tr><tr clas=
s=3D"modifications-oddrow"><td class=3D"modifications-data">modified</td><t=
d class=3D"modifications-data">kdonald</td><td class=3D"modifications-data"=
>sandbox/src/org/springframework/web/flow/MulticastFlowLifecycleListener.ja=
va</td><td class=3D"modifications-data">*** empty log message ***</td></tr>=
<tr class=3D"modifications-evenrow"><td class=3D"modifications-data">modifi=
ed</td><td class=3D"modifications-data">kdonald</td><td class=3D"modificati=
ons-data">sandbox/src/org/springframework/web/flow/ActionState.java</td><td=
class=3D"modifications-data">*** empty log message ***</td></tr><tr class=
=3D"modifications-oddrow"><td class=3D"modifications-data">modified</td><td=
class=3D"modifications-data">kdonald</td><td class=3D"modifications-data">=
sandbox/src/org/springframework/web/flow/ActionState.java</td><td class=3D"=
modifications-data">*** empty log message ***</td></tr><tr class=3D"modific=
ations-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"=
modifications-data">robharrop</td><td class=3D"modifications-data">src/org/=
springframework/aop/framework/autoproxy/AbstractAutoProxyCreator.java</td><=
td class=3D"modifications-data">Fixed JavaDoc error in AbstractAutoProxyCre=
ator.</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modification=
s-data">modified</td><td class=3D"modifications-data">kdonald</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/util/DefaultObjectS=
tyler.java</td><td class=3D"modifications-data">*** empty log message ***</=
td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data=
">modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"mo=
difications-data">sandbox/src/org/springframework/web/flow/BeanFactoryAware=
Flow.java</td><td class=3D"modifications-data">*** empty log message ***</t=
d></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">=
modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"modi=
fications-data">sandbox/test/org/springframework/web/flow/FlowTests.java</t=
d><td class=3D"modifications-data">*** empty log message ***</td></tr><tr c=
lass=3D"modifications-evenrow"><td class=3D"modifications-data">deleted</td=
><td class=3D"modifications-data">kdonald</td><td class=3D"modifications-da=
ta">sandbox/src/org/springframework/web/flow/NoSuchFlowAttributeMapperExcep=
tion.java</td><td class=3D"modifications-data">*** empty log message ***</t=
d></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">=
added</td><td class=3D"modifications-data">kdonald</td><td class=3D"modific=
ations-data">sandbox/src/org/springframework/web/flow/NoSuchFlowAttributesM=
apperException.java</td><td class=3D"modifications-data">*** empty log mess=
age ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modificat=
ions-data">modified</td><td class=3D"modifications-data">kdonald</td><td cl=
ass=3D"modifications-data">sandbox/src/org/springframework/web/flow/SubFlow=
State.java</td><td class=3D"modifications-data">*** empty log message ***</=
td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data"=
>deleted</td><td class=3D"modifications-data">kdonald</td><td class=3D"modi=
fications-data">sandbox/src/org/springframework/web/flow/MultiActionBean.ja=
va</td><td class=3D"modifications-data">*** empty log message ***</td></tr>=
<tr class=3D"modifications-evenrow"><td class=3D"modifications-data">added<=
/td><td class=3D"modifications-data">kdonald</td><td class=3D"modifications=
-data">sandbox/src/org/springframework/web/flow/action/MultiActionBean.java=
</td><td class=3D"modifications-data">*** empty log message ***</td></tr><t=
r class=3D"modifications-oddrow"><td class=3D"modifications-data">modified<=
/td><td class=3D"modifications-data">kdonald</td><td class=3D"modifications=
-data">sandbox/src/org/springframework/web/flow/EventHandlerMethodNameResol=
ver.java</td><td class=3D"modifications-data">*** empty log message ***</td=
></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">=
modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"modi=
fications-data">sandbox/src/org/springframework/web/flow/FlowNavigationExce=
ption.java</td><td class=3D"modifications-data">*** empty log message ***</=
td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data"=
>modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"mod=
ifications-data">sandbox/src/org/springframework/web/flow/FlowSessionStatus=
.java</td><td class=3D"modifications-data">*** empty log message ***</td></=
tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">mod=
ified</td><td class=3D"modifications-data">kdonald</td><td class=3D"modific=
ations-data">sandbox/src/org/springframework/web/flow/MultiActionBean.java<=
/td><td class=3D"modifications-data">*** empty log message ***</td></tr><tr=
class=3D"modifications-oddrow"><td class=3D"modifications-data">modified</=
td><td class=3D"modifications-data">kdonald</td><td class=3D"modifications-=
data">sandbox/src/org/springframework/web/flow/FlowSessionExecutionInfo.jav=
a</td><td class=3D"modifications-data">*** empty log message ***</td></tr><=
tr class=3D"modifications-evenrow"><td class=3D"modifications-data">modifie=
d</td><td class=3D"modifications-data">kdonald</td><td class=3D"modificatio=
ns-data">sandbox/src/org/springframework/web/flow/FlowSessionExecutionStack=
.java</td><td class=3D"modifications-data">*** empty log message ***</td></=
tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">modi=
fied</td><td class=3D"modifications-data">kdonald</td><td class=3D"modifica=
tions-data">sandbox/src/org/springframework/web/flow/FlowSessionStatus.java=
</td><td class=3D"modifications-data">*** empty log message ***</td></tr><t=
r class=3D"modifications-evenrow"><td class=3D"modifications-data">modified=
</td><td class=3D"modifications-data">kdonald</td><td class=3D"modification=
s-data">sandbox/src/org/springframework/web/flow/EndState.java</td><td clas=
s=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D"mo=
difications-oddrow"><td class=3D"modifications-data">modified</td><td class=
=3D"modifications-data">kdonald</td><td class=3D"modifications-data">sandbo=
x/src/org/springframework/web/flow/FlowSessionExecutionInfo.java</td><td cl=
ass=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D"=
modifications-evenrow"><td class=3D"modifications-data">modified</td><td cl=
ass=3D"modifications-data">kdonald</td><td class=3D"modifications-data">san=
dbox/src/org/springframework/web/flow/FlowSessionExecutionStack.java</td><t=
d class=3D"modifications-data">*** empty log message ***</td></tr><tr class=
=3D"modifications-oddrow"><td class=3D"modifications-data">added</td><td cl=
ass=3D"modifications-data">kdonald</td><td class=3D"modifications-data">san=
dbox/src/org/springframework/web/flow/FlowSessionStatus.java</td><td class=
=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D"mod=
ifications-evenrow"><td class=3D"modifications-data">modified</td><td class=
=3D"modifications-data">kdonald</td><td class=3D"modifications-data">sandbo=
x/src/org/springframework/web/flow/StartState.java</td><td class=3D"modific=
ations-data">*** empty log message ***</td></tr><tr class=3D"modifications-=
oddrow"><td class=3D"modifications-data">modified</td><td class=3D"modifica=
tions-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/sp=
ringframework/web/flow/FlowSession.java</td><td class=3D"modifications-data=
">*** empty log message ***</td></tr><tr class=3D"modifications-evenrow"><t=
d class=3D"modifications-data">modified</td><td class=3D"modifications-data=
">kdonald</td><td class=3D"modifications-data">sandbox/src/org/springframew=
ork/web/flow/Flow.java</td><td class=3D"modifications-data">*** empty log m=
essage ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modific=
ations-data">modified</td><td class=3D"modifications-data">kdonald</td><td =
class=3D"modifications-data">sandbox/src/org/springframework/web/flow/SubFl=
owState.java</td><td class=3D"modifications-data">*** empty log message ***=
</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-da=
ta">modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"=
modifications-data">sandbox/src/org/springframework/web/flow/BeanFactoryAwa=
reFlow.java</td><td class=3D"modifications-data">*** empty log message ***<=
/td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data=
">modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"mo=
difications-data">sandbox/src/org/springframework/web/flow/BeanFactoryAware=
Flow.java</td><td class=3D"modifications-data">*** empty log message ***</t=
d></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data"=
>modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"mod=
ifications-data">sandbox/src/org/springframework/web/flow/StateGroups.java<=
/td><td class=3D"modifications-data">*** empty log message ***</td></tr><tr=
class=3D"modifications-oddrow"><td class=3D"modifications-data">modified</=
td><td class=3D"modifications-data">kdonald</td><td class=3D"modifications-=
data">sandbox/src/org/springframework/web/flow/MultiActionBean.java</td><td=
class=3D"modifications-data">*** empty log message ***</td></tr><tr class=
=3D"modifications-evenrow"><td class=3D"modifications-data">modified</td><t=
d class=3D"modifications-data">kdonald</td><td class=3D"modifications-data"=
>sandbox/src/org/springframework/web/flow/MultiActionBean.java</td><td clas=
s=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D"mo=
difications-oddrow"><td class=3D"modifications-data">added</td><td class=3D=
"modifications-data">kdonald</td><td class=3D"modifications-data">sandbox/s=
rc/org/springframework/web/flow/EventHandlerMethodNameResolver.java</td><td=
class=3D"modifications-data">simple multi action first cut</td></tr><tr cl=
ass=3D"modifications-evenrow"><td class=3D"modifications-data">added</td><t=
d class=3D"modifications-data">kdonald</td><td class=3D"modifications-data"=
>sandbox/src/org/springframework/web/flow/MultiActionBean.java</td><td clas=
s=3D"modifications-data">simple multi action first cut</td></tr><tr class=
=3D"modifications-oddrow"><td class=3D"modifications-data">modified</td><td=
class=3D"modifications-data">kdonald</td><td class=3D"modifications-data">=
sandbox/src/org/springframework/web/flow/BeanFactoryAwareFlow.java</td><td =
class=3D"modifications-data">*** empty log message ***</td></tr><tr class=
=3D"modifications-evenrow"><td class=3D"modifications-data">added</td><td c=
lass=3D"modifications-data">kdonald</td><td class=3D"modifications-data">sa=
ndbox/src/org/springframework/web/flow/BeanFactoryAwareFlow.java</td><td cl=
ass=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D"=
modifications-oddrow"><td class=3D"modifications-data">modified</td><td cla=
ss=3D"modifications-data">kdonald</td><td class=3D"modifications-data">sand=
box/src/org/springframework/web/flow/Flow.java</td><td class=3D"modificatio=
ns-data">*** empty log message ***</td></tr><tr class=3D"modifications-even=
row"><td class=3D"modifications-data">modified</td><td class=3D"modificatio=
ns-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/sprin=
gframework/web/flow/Flow.java</td><td class=3D"modifications-data">*** empt=
y log message ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"=
modifications-data">modified</td><td class=3D"modifications-data">kdonald</=
td><td class=3D"modifications-data">sandbox/src/org/springframework/web/flo=
w/SubFlowState.java</td><td class=3D"modifications-data">*** empty log mess=
age ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modificat=
ions-data">modified</td><td class=3D"modifications-data">kdonald</td><td cl=
ass=3D"modifications-data">sandbox/src/org/springframework/web/flow/ActionS=
tate.java</td><td class=3D"modifications-data">*** empty log message ***</t=
d></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">=
modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"modi=
fications-data">sandbox/src/org/springframework/web/flow/SubFlowState.java<=
/td><td class=3D"modifications-data">*** empty log message ***</td></tr><tr=
class=3D"modifications-evenrow"><td class=3D"modifications-data">modified<=
/td><td class=3D"modifications-data">kdonald</td><td class=3D"modifications=
-data">sandbox/src/org/springframework/web/flow/Flow.java</td><td class=3D"=
modifications-data">*** empty log message ***</td></tr><tr class=3D"modific=
ations-oddrow"><td class=3D"modifications-data">modified</td><td class=3D"m=
odifications-data">kdonald</td><td class=3D"modifications-data">sandbox/src=
/org/springframework/web/flow/FlowDao.java</td><td class=3D"modifications-d=
ata">*** empty log message ***</td></tr><tr class=3D"modifications-evenrow"=
><td class=3D"modifications-data">added</td><td class=3D"modifications-data=
">kdonald</td><td class=3D"modifications-data">sandbox/src/org/springframew=
ork/web/flow/NoSuchFlowDefinitionException.java</td><td class=3D"modificati=
ons-data">*** empty log message ***</td></tr><tr class=3D"modifications-odd=
row"><td class=3D"modifications-data">modified</td><td class=3D"modificatio=
ns-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/sprin=
gframework/web/flow/SubFlowState.java</td><td class=3D"modifications-data">=
*** empty log message ***</td></tr><tr class=3D"modifications-evenrow"><td =
class=3D"modifications-data">modified</td><td class=3D"modifications-data">=
kdonald</td><td class=3D"modifications-data">sandbox/src/org/springframewor=
k/web/flow/ActionState.java</td><td class=3D"modifications-data">*** empty =
log message ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"mo=
difications-data">modified</td><td class=3D"modifications-data">kdonald</td=
><td class=3D"modifications-data">sandbox/src/org/springframework/web/flow/=
CannotExecuteStateTransitionException.java</td><td class=3D"modifications-d=
ata">*** empty log message ***</td></tr><tr class=3D"modifications-evenrow"=
><td class=3D"modifications-data">modified</td><td class=3D"modifications-d=
ata">kdonald</td><td class=3D"modifications-data">sandbox/src/org/springfra=
mework/web/flow/Flow.java</td><td class=3D"modifications-data">*** empty lo=
g message ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modi=
fications-data">modified</td><td class=3D"modifications-data">jhoeller</td>=
<td class=3D"modifications-data">src/org/springframework/context/support/Ab=
stractApplicationContext.java</td><td class=3D"modifications-data">fixed ja=
vadoc typo</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifi=
cations-data">modified</td><td class=3D"modifications-data">davison</td><td=
class=3D"modifications-data">test/org/springframework/web/servlet/view/fre=
emarker/FreeMarkerMacroTests.java</td><td class=3D"modifications-data">*** =
empty log message ***</td></tr><tr class=3D"modifications-oddrow"><td class=
=3D"modifications-data">modified</td><td class=3D"modifications-data">jhoel=
ler</td><td class=3D"modifications-data">src/org/springframework/context/su=
pport/ReloadableResourceBundleMessageSource.java</td><td class=3D"modificat=
ions-data">never check the same message file twice for the same message</td=
></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">=
modified</td><td class=3D"modifications-data">robharrop</td><td class=3D"mo=
difications-data">sandbox/src/org/springframework/jmx/util/package.html</td=
><td class=3D"modifications-data">Polished JMX JavaDocs - still more to do.=
</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-dat=
a">modified</td><td class=3D"modifications-data">robharrop</td><td class=3D=
"modifications-data">sandbox/src/org/springframework/jmx/metadata/AbstractJ=
mxAttribute.java</td><td class=3D"modifications-data">Polished JMX JavaDocs=
- still more to do.</td></tr><tr class=3D"modifications-evenrow"><td class=
=3D"modifications-data">modified</td><td class=3D"modifications-data">robha=
rrop</td><td class=3D"modifications-data">sandbox/src/org/springframework/j=
mx/metadata/InvalidMetadataException.java</td><td class=3D"modifications-da=
ta">Polished JMX JavaDocs - still more to do.</td></tr><tr class=3D"modific=
ations-oddrow"><td class=3D"modifications-data">added</td><td class=3D"modi=
fications-data">robharrop</td><td class=3D"modifications-data">sandbox/src/=
org/springframework/jmx/metadata/package.html</td><td class=3D"modification=
s-data">Polished JMX JavaDocs - still more to do.</td></tr><tr class=3D"mod=
ifications-evenrow"><td class=3D"modifications-data">added</td><td class=3D=
"modifications-data">robharrop</td><td class=3D"modifications-data">sandbox=
/src/org/springframework/jmx/naming/package.html</td><td class=3D"modificat=
ions-data">Polished JMX JavaDocs - still more to do.</td></tr><tr class=3D"=
modifications-oddrow"><td class=3D"modifications-data">modified</td><td cla=
ss=3D"modifications-data">robharrop</td><td class=3D"modifications-data">sa=
ndbox/src/org/springframework/jmx/support/ConnectorServerFactoryBean.java</=
td><td class=3D"modifications-data">Polished JMX JavaDocs - still more to d=
o.</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-=
data">modified</td><td class=3D"modifications-data">robharrop</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/jmx/assembler/Metad=
ataModelMBeanInfoAssembler.java</td><td class=3D"modifications-data">Polish=
ed JMX JavaDocs - still more to do.</td></tr><tr class=3D"modifications-odd=
row"><td class=3D"modifications-data">added</td><td class=3D"modifications-=
data">robharrop</td><td class=3D"modifications-data">sandbox/src/org/spring=
framework/jmx/assembler/package.html</td><td class=3D"modifications-data">P=
olished JMX JavaDocs - still more to do.</td></tr><tr class=3D"modification=
s-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"modif=
ications-data">robharrop</td><td class=3D"modifications-data">sandbox/src/o=
rg/springframework/jmx/assembler/InterfaceBasedModelMBeanInfoAssembler.java=
</td><td class=3D"modifications-data">Polished JMX JavaDocs - still more to=
do.</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications=
-data">deleted</td><td class=3D"modifications-data">robharrop</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/jmx/adapters/Adapte=
rRegistrationException.java</td><td class=3D"modifications-data">Polished J=
MX JavaDocs - still more to do.</td></tr><tr class=3D"modifications-evenrow=
"><td class=3D"modifications-data">modified</td><td class=3D"modifications-=
data">robharrop</td><td class=3D"modifications-data">sandbox/src/org/spring=
framework/jmx/access/package.html</td><td class=3D"modifications-data">Poli=
shed JMX JavaDocs - still more to do.</td></tr><tr class=3D"modifications-o=
ddrow"><td class=3D"modifications-data">modified</td><td class=3D"modificat=
ions-data">jhoeller</td><td class=3D"modifications-data">test/org/springfra=
mework/orm/hibernate/support/LobTypeTests.java</td><td class=3D"modificatio=
ns-data">refined AbstractLobType' JTA synchronization to close the LobCreat=
or as early as possible (earlier for a commit)</td></tr><tr class=3D"modifi=
cations-evenrow"><td class=3D"modifications-data">modified</td><td class=3D=
"modifications-data">jhoeller</td><td class=3D"modifications-data">src/org/=
springframework/orm/hibernate/support/AbstractLobType.java</td><td class=3D=
"modifications-data">refined AbstractLobType' JTA synchronization to close =
the LobCreator as early as possible (earlier for a commit)</td></tr><tr cla=
ss=3D"modifications-oddrow"><td class=3D"modifications-data">modified</td><=
td class=3D"modifications-data">jhoeller</td><td class=3D"modifications-dat=
a">test/org/springframework/orm/hibernate/HibernateJtaTransactionTests.java=
</td><td class=3D"modifications-data">refined JTA synchronization to unbind=
the Session as early as possible (earlier for a commit)</td></tr><tr class=
=3D"modifications-evenrow"><td class=3D"modifications-data">modified</td><t=
d class=3D"modifications-data">jhoeller</td><td class=3D"modifications-data=
">src/org/springframework/orm/hibernate/SessionFactoryUtils.java</td><td cl=
ass=3D"modifications-data">refined JTA synchronization to unbind the Sessio=
n as early as possible (earlier for a commit)</td></tr><tr class=3D"modific=
ations-oddrow"><td class=3D"modifications-data">modified</td><td class=3D"m=
odifications-data">jhoeller</td><td class=3D"modifications-data">src/org/sp=
ringframework/web/servlet/mvc/AbstractFormController.java</td><td class=3D"=
modifications-data">polished error messages</td></tr><tr class=3D"modificat=
ions-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"mo=
difications-data">jhoeller</td><td class=3D"modifications-data">test/org/sp=
ringframework/remoting/jaxrpc/JaxRpcSupportTests.java</td><td class=3D"modi=
fications-data">reworked to avoid repeated HTTP lookup attempts</td></tr><t=
r class=3D"modifications-oddrow"><td class=3D"modifications-data">added</td=
><td class=3D"modifications-data">jhoeller</td><td class=3D"modifications-d=
ata">samples/petclinic/src/OJB-repository.dtd</td><td class=3D"modification=
s-data">added OJB repository DTD file (not included in ojb.jar)</td></tr><t=
r class=3D"modifications-evenrow"><td class=3D"modifications-data">modified=
</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modificatio=
ns-data">samples/petclinic/src/OJB-repository.xml</td><td class=3D"modifica=
tions-data">added OJB repository DTD file (not included in ojb.jar)</td></t=
r><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">added=
</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modificatio=
ns-data">lib/ojb/repository.dtd</td><td class=3D"modifications-data">added =
OJB repository DTD file (not included in ojb.jar)</td></tr><tr class=3D"mod=
ifications-evenrow"><td class=3D"modifications-data">modified</td><td class=
=3D"modifications-data">jhoeller</td><td class=3D"modifications-data">sampl=
es/petclinic/src/org/springframework/samples/petclinic/ojb/PersistenceBroke=
rClinic.java</td><td class=3D"modifications-data">leveraged "getObjectById"=
, added order-by clauses</td></tr><tr class=3D"modifications-oddrow"><td cl=
ass=3D"modifications-data">modified</td><td class=3D"modifications-data">jh=
oeller</td><td class=3D"modifications-data">test/org/springframework/web/se=
rvlet/view/freemarker/FreeMarkerMacroTests.java</td><td class=3D"modificati=
ons-data">reformatted, commented out failing tests</td></tr><tr class=3D"mo=
difications-evenrow"><td class=3D"modifications-data">modified</td><td clas=
s=3D"modifications-data">jhoeller</td><td class=3D"modifications-data">test=
/org/springframework/orm/ojb/PersistenceBrokerTemplateTests.java</td><td cl=
ass=3D"modifications-data">added "getObjectById(entityClass, idValue)" meth=
od, for single primary keys</td></tr><tr class=3D"modifications-oddrow"><td=
class=3D"modifications-data">modified</td><td class=3D"modifications-data"=
>jhoeller</td><td class=3D"modifications-data">src/org/springframework/orm/=
ojb/PersistenceBrokerOperations.java</td><td class=3D"modifications-data">a=
dded "getObjectById(entityClass, idValue)" method, for single primary keys<=
/td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-dat=
a">modified</td><td class=3D"modifications-data">jhoeller</td><td class=3D"=
modifications-data">src/org/springframework/orm/ojb/PersistenceBrokerTempla=
te.java</td><td class=3D"modifications-data">added "getObjectById(entityCla=
ss, idValue)" method, for single primary keys</td></tr><tr class=3D"modific=
ations-oddrow"><td class=3D"modifications-data">modified</td><td class=3D"m=
odifications-data">jhoeller</td><td class=3D"modifications-data">build.xml<=
/td><td class=3D"modifications-data">removed unnecessary javadoc links for =
secondary dependencies</td></tr><tr class=3D"modifications-evenrow"><td cla=
ss=3D"modifications-data">modified</td><td class=3D"modifications-data">jho=
eller</td><td class=3D"modifications-data">lib/readme.txt</td><td class=3D"=
modifications-data">re-added Commons Lang (for OJB)</td></tr><tr class=3D"m=
odifications-oddrow"><td class=3D"modifications-data">modified</td><td clas=
s=3D"modifications-data">jhoeller</td><td class=3D"modifications-data">lib/=
jakarta-commons/commons-lang.jar</td><td class=3D"modifications-data">re-ad=
ded Commons Lang (for OJB)</td></tr><tr class=3D"modifications-evenrow"><td=
class=3D"modifications-data">added</td><td class=3D"modifications-data">ro=
bharrop</td><td class=3D"modifications-data">sandbox/test/org/springframewo=
rk/aop/framework/aspectwerkz/AspectWerkzAopProxyTests.java</td><td class=3D=
"modifications-data">Added tests for AspectWerkz proxy</td></tr><tr class=
=3D"modifications-oddrow"><td class=3D"modifications-data">modified</td><td=
class=3D"modifications-data">robharrop</td><td class=3D"modifications-data=
">sandbox/src/org/springframework/aop/framework/aspectwerkz/AspectWerkzAopP=
roxy.java</td><td class=3D"modifications-data">Added tests for AspectWerkz =
proxy</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modificatio=
ns-data">added</td><td class=3D"modifications-data">robharrop</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/aop/framework/aspec=
twerkz/ExpressionBasedPointcut.java</td><td class=3D"modifications-data">Ad=
ded tests for AspectWerkz proxy</td></tr><tr class=3D"modifications-oddrow"=
><td class=3D"modifications-data">modified</td><td class=3D"modifications-d=
ata">jhoeller</td><td class=3D"modifications-data">test/org/springframework=
/orm/hibernate/HibernateJtaTransactionTests.java</td><td class=3D"modificat=
ions-data">fixed NPE in Session lookup code (when using both JTA synchroniz=
ation and Spring synchronization)</td></tr><tr class=3D"modifications-evenr=
ow"><td class=3D"modifications-data">modified</td><td class=3D"modification=
s-data">jhoeller</td><td class=3D"modifications-data">src/org/springframewo=
rk/orm/hibernate/SessionFactoryUtils.java</td><td class=3D"modifications-da=
ta">fixed NPE in Session lookup code (when using both JTA synchronization a=
nd Spring synchronization)</td></tr><tr class=3D"modifications-oddrow"><td =
class=3D"modifications-data">modified</td><td class=3D"modifications-data">=
jhoeller</td><td class=3D"modifications-data">src/org/springframework/orm/i=
batis/SqlMapClientFactoryBean.java</td><td class=3D"modifications-data">pol=
ishing</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modificati=
ons-data">modified</td><td class=3D"modifications-data">jhoeller</td><td cl=
ass=3D"modifications-data">src/org/springframework/orm/ojb/support/Persiste=
nceBrokerDaoSupport.java</td><td class=3D"modifications-data">polishing</td=
></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">m=
odified</td><td class=3D"modifications-data">jhoeller</td><td ...
[truncated message content] |
|
From: Dakota J. <dak...@gm...> - 2005-01-30 20:01:50
|
Thanks, Matt. I have been looking forward to this. I am going to spend the afternoon just nosing around in Morph. Jack "This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose, or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation." |
|
From: Alef A. <al...@jt...> - 2005-01-30 19:59:32
|
Someone accidentally start the build queue as root (I didn't build in a check yet :), some file permissions got messed up which caused the whole build to fail... Check is now in place and I've queued the Spring build. Should be done in half an hour or so... Alef =20 > -----Original Message----- > From: spr...@li...=20 > [mailto:spr...@li...] > On Behalf Of Darren Davison > Sent: Sunday, January 30, 2005 11:01 AM > To: spr...@li... > Subject: Re: [Springframework-developer] spring Build Failed >=20 > On Sun, 2005-01-30 at 00:19 +0100, al...@jt... wrote: > > BUILD FAILED Ant Error Message:=20 > > /jteam/build2/checkout/spring/spring/build.xml:61: > > Unable to delete file=20 > >=20 > /jteam/build2/checkout/spring/spring/target/classes/META-INF/s > pring.tld > > Date of build: 01/30/2005 00:16:42 > > Time to build: 53 seconds > > Last changed: 01/29/2005 12:39:32 > > Last log entry: polishing > >=20 > > Unit Tests: (2366)=20 > > failure=20 > > testAllMacros =20 > > org.springframework.web.servlet.view.freemarker.FreeMarkerMacroTests > > =20 > > =20 > > Unit Test Error Details: (1)=20 > > Test: testAllMacros > > Class:=20 > org.springframework.web.servlet.view.freemarker.FreeMarkerMacroTests > > Type: junit.framework.ComparisonFailure > > Message: expected:<... >> but was:<...> > > junit.framework.ComparisonFailure: expected:<... >>=20 > but was:<...> > > at=20 > org.springframework.web.servlet.view.freemarker.FreeMarkerMacr > oTests.testAllMacros(FreeMarkerMacroTests.java:163) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at=20 > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess > orImpl.java:39) > > at=20 > >=20 > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess > > orImpl.java:25) > > =20 >=20 > Alef, is your machine correctly updating from CVS? This file=20 > should be revision 1.3 (committed on 27th @ 16:35 GMT) which=20 > passes on all my boxes. >=20 > -- > Darren Davison > Public Key: #DD356B0D >=20 |
|
From: Alef A. <al...@jt...> - 2005-01-30 19:53:11
|
Hmmm, we've been moving around some stuff late last week on the machine building spring. It seems something went wrong in the process... I'll have a look at it. Alef =20 > -----Original Message----- > From: spr...@li...=20 > [mailto:spr...@li...] > On Behalf Of Darren Davison > Sent: Sunday, January 30, 2005 11:01 AM > To: spr...@li... > Subject: Re: [Springframework-developer] spring Build Failed >=20 > On Sun, 2005-01-30 at 00:19 +0100, al...@jt... wrote: > > BUILD FAILED Ant Error Message:=20 > > /jteam/build2/checkout/spring/spring/build.xml:61: > > Unable to delete file=20 > >=20 > /jteam/build2/checkout/spring/spring/target/classes/META-INF/s > pring.tld > > Date of build: 01/30/2005 00:16:42 > > Time to build: 53 seconds > > Last changed: 01/29/2005 12:39:32 > > Last log entry: polishing > >=20 > > Unit Tests: (2366)=20 > > failure=20 > > testAllMacros =20 > > org.springframework.web.servlet.view.freemarker.FreeMarkerMacroTests > > =20 > > =20 > > Unit Test Error Details: (1)=20 > > Test: testAllMacros > > Class:=20 > org.springframework.web.servlet.view.freemarker.FreeMarkerMacroTests > > Type: junit.framework.ComparisonFailure > > Message: expected:<... >> but was:<...> > > junit.framework.ComparisonFailure: expected:<... >>=20 > but was:<...> > > at=20 > org.springframework.web.servlet.view.freemarker.FreeMarkerMacr > oTests.testAllMacros(FreeMarkerMacroTests.java:163) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at=20 > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess > orImpl.java:39) > > at=20 > >=20 > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess > > orImpl.java:25) > > =20 >=20 > Alef, is your machine correctly updating from CVS? This file=20 > should be revision 1.3 (committed on 27th @ 16:35 GMT) which=20 > passes on all my boxes. >=20 > -- > Darren Davison > Public Key: #DD356B0D >=20 |
|
From: Matt S. <sga...@us...> - 2005-01-30 19:14:40
|
Morph is a Java framework that eases the internal interoperability of an application. As information flows through an application, it undergoes multiple transformations. Morph provides a standard way to implement these transformations. The goal of this release is to provide a near-final look at the Morph 1.0 API. However, if someone has a good idea for an API improvement before the Morph 1.0 release, it will certainly be incorporated. Also, before the 1.0 release, the composite package will probably be moved into its own SourceForge project. New in this release: - Test coverage at 61.1% - New wrapper package You can access the release at http://morph.sourceforge.net Matt |
|
From: Darren D. <da...@da...> - 2005-01-30 09:43:15
|
On Sun, 2005-01-30 at 00:19 +0100, al...@jt... wrote: > BUILD FAILED > Ant Error Message: /jteam/build2/checkout/spring/spring/build.xml:61: > Unable to delete > file /jteam/build2/checkout/spring/spring/target/classes/META-INF/spring.= tld > Date of build: 01/30/2005 00:16:42 > Time to build: 53 seconds > Last changed: 01/29/2005 12:39:32 > Last log entry: polishing >=20 > Unit Tests: (2366)=20 > failure=20 > testAllMacros > org.springframework.web.servlet.view.freemarker.FreeMarkerMacroTests > =20 > =20 > Unit Test Error Details: (1)=20 > Test: testAllMacros > Class: org.springframework.web.servlet.view.freemarker.FreeMarkerMacroTes= ts > Type: junit.framework.ComparisonFailure > Message: expected:<... >> but was:<...> > junit.framework.ComparisonFailure: expected:<... >> but was:<...> > at org.springframework.web.servlet.view.freemarker.FreeMarkerMacroTests.= testAllMacros(FreeMarkerMacroTests.java:163) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.= java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces= sorImpl.java:25) > =20 Alef, is your machine correctly updating from CVS? This file should be revision 1.3 (committed on 27th @ 16:35 GMT) which passes on all my boxes. --=20 Darren Davison Public Key: #DD356B0D |
|
From: <al...@jt...> - 2005-01-29 23:20:06
|
<html><head>
<style>
.white { color:#FFFFFF }.index { background-color:#FFFFFF }.index-passed { =
color:#004400 }.index-failed { color:#FF0000; font-weight:bold }.index-head=
er { font-weight:bold }.link { font-family:arial,helvetica,sans-serif; font=
-size:10pt; color:#FFFFFF; text-decoration:none; }.tab-table { margin: 0em =
0em 0.5em 0em; }.tabs { font-family:arial,helvetica,sans-serif; font-size:8=
pt; color:#000000; font-weight:bold; padding: 0em 2em; background-color:#EE=
EEEE; }.tabs-link { color:#000000; text-decoration:none; }.tabs-link:visite=
d { color:#000000; text-decoration:none; }.tabs-selected { font-family:aria=
l,helvetica,sans-serif; font-size:8pt; color:#000000; font-weight:bold; pad=
ding: 0em 2em; }.tabs-selected { border: inset; }.header-title { font-famil=
y:arial,helvetica,sans-serif; font-size:12pt; color:#000000; font-weight:bo=
ld; }.header-label { font-weight:bold; }.header-data { font-family:arial,he=
lvetica,sans-serif; font-size:10pt; color:#000000; }.modifications-data { f=
ont-family:arial,helvetica,sans-serif; font-size:8pt; color:#000000; }.modi=
fications-sectionheader { background-color:#000066; font-family:arial,helve=
tica,sans-serif; font-size:10pt; color:#FFFFFF; }.modifications-oddrow { ba=
ckground-color:#CCCCCC }.modifications-evenrow { background-color:#FFFFCC }=
.changelists-oddrow { background-color:#CCCCCC }.changelists-evenrow { back=
ground-color:#FFFFCC }.changelists-file-spacer { background-color:#FFFFFF }=
.changelists-file-evenrow { background-color:#EEEEEE }.changelists-file-odd=
row { background-color:#FFFFEE }.changelists-file-header { background-color=
:#666666; font-family:arial,helvetica,sans-serif; font-size:8pt; color:#FFF=
FFF; }.compile-data { font-family:arial,helvetica,sans-serif; font-size:8pt=
; color:#000000; }.compile-error-data { font-family:arial,helvetica,sans-se=
rif; font-size:8pt; color:#FF0000; }.compile-warn-data { font-family:arial,=
helvetica,sans-serif; font-size:8pt; color:#CC9900; }.compile-sectionheader=
{ background-color:#000066; font-family:arial,helvetica,sans-serif; font-s=
ize:10pt; color:#FFFFFF; }.distributables-data { font-family:arial,helvetic=
a,sans-serif; font-size:8pt; color:#000000; }.distributables-sectionheader =
{ background-color:#000066; font-family:arial,helvetica,sans-serif; font-si=
ze:10pt; color:#FFFFFF; }.distributables-oddrow { background-color:#CCCCCC =
}.unittests-sectionheader { background-color:#000066; font-family:arial,hel=
vetica,sans-serif; font-size:10pt; color:#FFFFFF; }.unittests-oddrow { back=
ground-color:#CCCCCC }.unittests-data { font-family:arial,helvetica,sans-se=
rif; font-size:8pt; color:#000000; }.unittests-error { font-family:arial,he=
lvetica,sans-serif; font-size:8pt; color:#901090; }.unittests-failure { fon=
t-family:arial,helvetica,sans-serif; font-size:8pt; color:#FF0000; }.checks=
tyle-oddrow { background-color:#CCCCCC }.checkstyle-data { font-family:aria=
l,helvetica,sans-serif; font-size:8pt; color:#000000; }.checkstyle-sectionh=
eader { background-color:#000066; font-family:arial,helvetica,sans-serif; f=
ont-size:10pt; color:#FFFFFF; }
</style>
</head><body>
<p>
<table width=3D"98%" border=3D"0" cellspacing=3D"0" cellpadding=3D"2" align=
=3D"center"><tr><td class=3D"header-title">BUILD FAILED</td></tr><tr><td cl=
ass=3D"header-data"><span class=3D"header-label">Ant Error Message: </=
span>/jteam/build2/checkout/spring/spring/build.xml:61: Unable to delete fi=
le /jteam/build2/checkout/spring/spring/target/classes/META-INF/spring.tld<=
/td></tr><tr><td class=3D"header-data"><span class=3D"header-label">Date of=
build: </span>01/30/2005 00:16:42</td></tr><tr><td class=3D"header-da=
ta"><span class=3D"header-label">Time to build: </span>53 seconds</td>=
</tr><tr><td class=3D"header-data"><span class=3D"header-label">Last change=
d: </span>01/29/2005 12:39:32</td></tr><tr><td class=3D"header-data"><=
span class=3D"header-label">Last log entry: </span>polishing</td></tr>=
</table><p>
<p>
<p>
<p>
<p>
<table width=3D"98%" border=3D"0" cellspacing=3D"0" cellpadding=3D"2" align=
=3D"center"><tr><td colspan=3D"4" class=3D"unittests-sectionheader"> =
Unit Tests: (2366) </td></tr><tr><td><tabl=
e width=3D"98%" border=3D"0" cellspacing=3D"0" cellpadding=3D"2" align=3D"c=
enter"><tr><td class=3D"unittests-data"> failure =
</td><td width=3D"40%" class=3D"unittests-data">testAllMacros</td><td width=
=3D"40%" class=3D"unittests-data">org.springframework.web.servlet.view.free=
marker.FreeMarkerMacroTests</td></tr></table></td></tr><tr></tr><tr><td col=
span=3D"2"> </td></tr><tr><td colspan=3D"4" class=3D"unittests-section=
header"> Unit Test Error Details: (1) =
</td></tr><tr><td class=3D"unittests-data" colspan=3D"2"> =
Test: testAllMacros</td></tr><tr><td class=3D"unittests-data" co=
lspan=3D"2"> Class: org.springframework.web.servlet.vie=
w.freemarker.FreeMarkerMacroTests</td></tr><tr><td class=3D"unittests-data"=
colspan=3D"2"> Type: junit.framework.ComparisonFailure</td>=
</tr><tr><td class=3D"unittests-data" colspan=3D"2"> Message=
: expected:<... >> but was:<...></td></tr><tr><td class=
=3D"unittests-failure" colspan=3D"2"><pre>junit.framework.ComparisonFailure=
: expected:<... >> but was:<...><br>=09at org.springfra=
mework.web.servlet.view.freemarker.FreeMarkerMacroTests.testAllMacros(FreeM=
arkerMacroTests.java:163)<br>=09at sun.reflect.NativeMethodAccessorImpl.inv=
oke0(Native Method)<br>=09at sun.reflect.NativeMethodAccessorImpl.invoke(Na=
tiveMethodAccessorImpl.java:39)<br>=09at sun.reflect.DelegatingMethodAccess=
orImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br></pre></td></tr><tr>=
<td colspan=3D"2"> </td></tr></table><p>
<table width=3D"98%" border=3D"0" cellspacing=3D"1" cellpadding=3D"2" align=
=3D"center"><tr><td colspan=3D"6" class=3D"modifications-sectionheader"> =
Modifications since last build: =
(152) </td></tr><tr class=3D"modifications-evenrow"><td=
class=3D"modifications-data">modified</td><td class=3D"modifications-data"=
>jhoeller</td><td class=3D"modifications-data">src/org/springframework/util=
/Log4jConfigurer.java</td><td class=3D"modifications-data">polishing</td></=
tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">modi=
fied</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modific=
ations-data">src/org/springframework/web/util/Log4jWebConfigurer.java</td><=
td class=3D"modifications-data">support "file:" URL as "log4jConfigLocation=
" (as alternative to ServletContext resource)</td></tr><tr class=3D"modific=
ations-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"=
modifications-data">kdonald</td><td class=3D"modifications-data">sandbox/sr=
c/org/springframework/web/flow/FlowSessionExecutionStack.java</td><td class=
=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D"mod=
ifications-oddrow"><td class=3D"modifications-data">modified</td><td class=
=3D"modifications-data">kdonald</td><td class=3D"modifications-data">sandbo=
x/src/org/springframework/web/flow/FlowSessionExecutionInfo.java</td><td cl=
ass=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D"=
modifications-evenrow"><td class=3D"modifications-data">modified</td><td cl=
ass=3D"modifications-data">kdonald</td><td class=3D"modifications-data">san=
dbox/src/org/springframework/web/flow/FlowSessionExecutionStack.java</td><t=
d class=3D"modifications-data">*** empty log message ***</td></tr><tr class=
=3D"modifications-oddrow"><td class=3D"modifications-data">modified</td><td=
class=3D"modifications-data">kdonald</td><td class=3D"modifications-data">=
sandbox/src/org/springframework/web/flow/struts/FlowAction.java</td><td cla=
ss=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D"m=
odifications-evenrow"><td class=3D"modifications-data">modified</td><td cla=
ss=3D"modifications-data">robharrop</td><td class=3D"modifications-data">sa=
ndbox/src/org/springframework/jmx/MBeanExporter.java</td><td class=3D"modif=
ications-data">Introduced RegistrationStrategy for JMX to aid in Geronimo i=
ntegration.</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifi=
cations-data">modified</td><td class=3D"modifications-data">kdonald</td><td=
class=3D"modifications-data">sandbox/src/org/springframework/web/flow/Tran=
sition.java</td><td class=3D"modifications-data">*** empty log message ***<=
/td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-dat=
a">modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"m=
odifications-data">sandbox/src/org/springframework/web/flow/Transition.java=
</td><td class=3D"modifications-data">*** empty log message ***</td></tr><t=
r class=3D"modifications-oddrow"><td class=3D"modifications-data">modified<=
/td><td class=3D"modifications-data">kdonald</td><td class=3D"modifications=
-data">sandbox/src/org/springframework/web/flow/ActionState.java</td><td cl=
ass=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D"=
modifications-evenrow"><td class=3D"modifications-data">modified</td><td cl=
ass=3D"modifications-data">kdonald</td><td class=3D"modifications-data">san=
dbox/src/org/springframework/web/flow/Transition.java</td><td class=3D"modi=
fications-data">*** empty log message ***</td></tr><tr class=3D"modificatio=
ns-oddrow"><td class=3D"modifications-data">modified</td><td class=3D"modif=
ications-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org=
/springframework/web/flow/TransitionableState.java</td><td class=3D"modific=
ations-data">*** empty log message ***</td></tr><tr class=3D"modifications-=
evenrow"><td class=3D"modifications-data">modified</td><td class=3D"modific=
ations-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/s=
pringframework/web/flow/struts/FlowAction.java</td><td class=3D"modificatio=
ns-data">*** empty log message ***</td></tr><tr class=3D"modifications-oddr=
ow"><td class=3D"modifications-data">modified</td><td class=3D"modification=
s-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/spring=
framework/web/flow/struts/FlowAction.java</td><td class=3D"modifications-da=
ta">*** empty log message ***</td></tr><tr class=3D"modifications-evenrow">=
<td class=3D"modifications-data">modified</td><td class=3D"modifications-da=
ta">kdonald</td><td class=3D"modifications-data">sandbox/src/org/springfram=
ework/web/flow/Flow.java</td><td class=3D"modifications-data">*** empty log=
message ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modif=
ications-data">modified</td><td class=3D"modifications-data">kdonald</td><t=
d class=3D"modifications-data">sandbox/src/org/springframework/web/flow/Flo=
wLifecycleListener.java</td><td class=3D"modifications-data">*** empty log =
message ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modif=
ications-data">added</td><td class=3D"modifications-data">kdonald</td><td c=
lass=3D"modifications-data">sandbox/src/org/springframework/web/flow/FlowSe=
ssionExecution.java</td><td class=3D"modifications-data">*** empty log mess=
age ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificati=
ons-data">modified</td><td class=3D"modifications-data">kdonald</td><td cla=
ss=3D"modifications-data">sandbox/src/org/springframework/web/flow/FlowSess=
ionExecutionStack.java</td><td class=3D"modifications-data">*** empty log m=
essage ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifi=
cations-data">modified</td><td class=3D"modifications-data">kdonald</td><td=
class=3D"modifications-data">sandbox/src/org/springframework/web/flow/Mult=
icastFlowLifecycleListener.java</td><td class=3D"modifications-data">*** em=
pty log message ***</td></tr><tr class=3D"modifications-oddrow"><td class=
=3D"modifications-data">modified</td><td class=3D"modifications-data">kdona=
ld</td><td class=3D"modifications-data">sandbox/src/org/springframework/web=
/flow/ActionState.java</td><td class=3D"modifications-data">*** empty log m=
essage ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifi=
cations-data">modified</td><td class=3D"modifications-data">kdonald</td><td=
class=3D"modifications-data">sandbox/src/org/springframework/web/flow/Acti=
onState.java</td><td class=3D"modifications-data">*** empty log message ***=
</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-dat=
a">modified</td><td class=3D"modifications-data">robharrop</td><td class=3D=
"modifications-data">src/org/springframework/aop/framework/autoproxy/Abstra=
ctAutoProxyCreator.java</td><td class=3D"modifications-data">Fixed JavaDoc =
error in AbstractAutoProxyCreator.</td></tr><tr class=3D"modifications-even=
row"><td class=3D"modifications-data">modified</td><td class=3D"modificatio=
ns-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/sprin=
gframework/util/DefaultObjectStyler.java</td><td class=3D"modifications-dat=
a">*** empty log message ***</td></tr><tr class=3D"modifications-oddrow"><t=
d class=3D"modifications-data">modified</td><td class=3D"modifications-data=
">kdonald</td><td class=3D"modifications-data">sandbox/src/org/springframew=
ork/web/flow/BeanFactoryAwareFlow.java</td><td class=3D"modifications-data"=
>*** empty log message ***</td></tr><tr class=3D"modifications-evenrow"><td=
class=3D"modifications-data">modified</td><td class=3D"modifications-data"=
>kdonald</td><td class=3D"modifications-data">sandbox/test/org/springframew=
ork/web/flow/FlowTests.java</td><td class=3D"modifications-data">*** empty =
log message ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"mo=
difications-data">deleted</td><td class=3D"modifications-data">kdonald</td>=
<td class=3D"modifications-data">sandbox/src/org/springframework/web/flow/N=
oSuchFlowAttributeMapperException.java</td><td class=3D"modifications-data"=
>*** empty log message ***</td></tr><tr class=3D"modifications-evenrow"><td=
class=3D"modifications-data">added</td><td class=3D"modifications-data">kd=
onald</td><td class=3D"modifications-data">sandbox/src/org/springframework/=
web/flow/NoSuchFlowAttributesMapperException.java</td><td class=3D"modifica=
tions-data">*** empty log message ***</td></tr><tr class=3D"modifications-o=
ddrow"><td class=3D"modifications-data">modified</td><td class=3D"modificat=
ions-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/spr=
ingframework/web/flow/SubFlowState.java</td><td class=3D"modifications-data=
">*** empty log message ***</td></tr><tr class=3D"modifications-evenrow"><t=
d class=3D"modifications-data">deleted</td><td class=3D"modifications-data"=
>kdonald</td><td class=3D"modifications-data">sandbox/src/org/springframewo=
rk/web/flow/MultiActionBean.java</td><td class=3D"modifications-data">*** e=
mpty log message ***</td></tr><tr class=3D"modifications-oddrow"><td class=
=3D"modifications-data">added</td><td class=3D"modifications-data">kdonald<=
/td><td class=3D"modifications-data">sandbox/src/org/springframework/web/fl=
ow/action/MultiActionBean.java</td><td class=3D"modifications-data">*** emp=
ty log message ***</td></tr><tr class=3D"modifications-evenrow"><td class=
=3D"modifications-data">modified</td><td class=3D"modifications-data">kdona=
ld</td><td class=3D"modifications-data">sandbox/src/org/springframework/web=
/flow/EventHandlerMethodNameResolver.java</td><td class=3D"modifications-da=
ta">*** empty log message ***</td></tr><tr class=3D"modifications-oddrow"><=
td class=3D"modifications-data">modified</td><td class=3D"modifications-dat=
a">kdonald</td><td class=3D"modifications-data">sandbox/src/org/springframe=
work/web/flow/FlowNavigationException.java</td><td class=3D"modifications-d=
ata">*** empty log message ***</td></tr><tr class=3D"modifications-evenrow"=
><td class=3D"modifications-data">modified</td><td class=3D"modifications-d=
ata">kdonald</td><td class=3D"modifications-data">sandbox/src/org/springfra=
mework/web/flow/FlowSessionStatus.java</td><td class=3D"modifications-data"=
>*** empty log message ***</td></tr><tr class=3D"modifications-oddrow"><td =
class=3D"modifications-data">modified</td><td class=3D"modifications-data">=
kdonald</td><td class=3D"modifications-data">sandbox/src/org/springframewor=
k/web/flow/MultiActionBean.java</td><td class=3D"modifications-data">*** em=
pty log message ***</td></tr><tr class=3D"modifications-evenrow"><td class=
=3D"modifications-data">modified</td><td class=3D"modifications-data">kdona=
ld</td><td class=3D"modifications-data">sandbox/src/org/springframework/web=
/flow/FlowSessionExecutionInfo.java</td><td class=3D"modifications-data">**=
* empty log message ***</td></tr><tr class=3D"modifications-oddrow"><td cla=
ss=3D"modifications-data">modified</td><td class=3D"modifications-data">kdo=
nald</td><td class=3D"modifications-data">sandbox/src/org/springframework/w=
eb/flow/FlowSessionExecutionStack.java</td><td class=3D"modifications-data"=
>*** empty log message ***</td></tr><tr class=3D"modifications-evenrow"><td=
class=3D"modifications-data">modified</td><td class=3D"modifications-data"=
>kdonald</td><td class=3D"modifications-data">sandbox/src/org/springframewo=
rk/web/flow/FlowSessionStatus.java</td><td class=3D"modifications-data">***=
empty log message ***</td></tr><tr class=3D"modifications-oddrow"><td clas=
s=3D"modifications-data">modified</td><td class=3D"modifications-data">kdon=
ald</td><td class=3D"modifications-data">sandbox/src/org/springframework/we=
b/flow/EndState.java</td><td class=3D"modifications-data">*** empty log mes=
sage ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifica=
tions-data">modified</td><td class=3D"modifications-data">kdonald</td><td c=
lass=3D"modifications-data">sandbox/src/org/springframework/web/flow/FlowSe=
ssionExecutionInfo.java</td><td class=3D"modifications-data">*** empty log =
message ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifi=
cations-data">modified</td><td class=3D"modifications-data">kdonald</td><td=
class=3D"modifications-data">sandbox/src/org/springframework/web/flow/Flow=
SessionExecutionStack.java</td><td class=3D"modifications-data">*** empty l=
og message ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"mo=
difications-data">added</td><td class=3D"modifications-data">kdonald</td><t=
d class=3D"modifications-data">sandbox/src/org/springframework/web/flow/Flo=
wSessionStatus.java</td><td class=3D"modifications-data">*** empty log mess=
age ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificati=
ons-data">modified</td><td class=3D"modifications-data">kdonald</td><td cla=
ss=3D"modifications-data">sandbox/src/org/springframework/web/flow/StartSta=
te.java</td><td class=3D"modifications-data">*** empty log message ***</td>=
</tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">m=
odified</td><td class=3D"modifications-data">kdonald</td><td class=3D"modif=
ications-data">sandbox/src/org/springframework/web/flow/FlowSession.java</t=
d><td class=3D"modifications-data">*** empty log message ***</td></tr><tr c=
lass=3D"modifications-oddrow"><td class=3D"modifications-data">modified</td=
><td class=3D"modifications-data">kdonald</td><td class=3D"modifications-da=
ta">sandbox/src/org/springframework/web/flow/Flow.java</td><td class=3D"mod=
ifications-data">*** empty log message ***</td></tr><tr class=3D"modificati=
ons-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"mod=
ifications-data">kdonald</td><td class=3D"modifications-data">sandbox/src/o=
rg/springframework/web/flow/SubFlowState.java</td><td class=3D"modification=
s-data">*** empty log message ***</td></tr><tr class=3D"modifications-oddro=
w"><td class=3D"modifications-data">modified</td><td class=3D"modifications=
-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/springf=
ramework/web/flow/BeanFactoryAwareFlow.java</td><td class=3D"modifications-=
data">*** empty log message ***</td></tr><tr class=3D"modifications-evenrow=
"><td class=3D"modifications-data">modified</td><td class=3D"modifications-=
data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/springfr=
amework/web/flow/BeanFactoryAwareFlow.java</td><td class=3D"modifications-d=
ata">*** empty log message ***</td></tr><tr class=3D"modifications-oddrow">=
<td class=3D"modifications-data">modified</td><td class=3D"modifications-da=
ta">kdonald</td><td class=3D"modifications-data">sandbox/src/org/springfram=
ework/web/flow/StateGroups.java</td><td class=3D"modifications-data">*** em=
pty log message ***</td></tr><tr class=3D"modifications-evenrow"><td class=
=3D"modifications-data">modified</td><td class=3D"modifications-data">kdona=
ld</td><td class=3D"modifications-data">sandbox/src/org/springframework/web=
/flow/MultiActionBean.java</td><td class=3D"modifications-data">*** empty l=
og message ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"mod=
ifications-data">modified</td><td class=3D"modifications-data">kdonald</td>=
<td class=3D"modifications-data">sandbox/src/org/springframework/web/flow/M=
ultiActionBean.java</td><td class=3D"modifications-data">*** empty log mess=
age ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modificat=
ions-data">added</td><td class=3D"modifications-data">kdonald</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/web/flow/EventHandl=
erMethodNameResolver.java</td><td class=3D"modifications-data">simple multi=
action first cut</td></tr><tr class=3D"modifications-oddrow"><td class=3D"=
modifications-data">added</td><td class=3D"modifications-data">kdonald</td>=
<td class=3D"modifications-data">sandbox/src/org/springframework/web/flow/M=
ultiActionBean.java</td><td class=3D"modifications-data">simple multi actio=
n first cut</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modif=
ications-data">modified</td><td class=3D"modifications-data">kdonald</td><t=
d class=3D"modifications-data">sandbox/src/org/springframework/web/flow/Bea=
nFactoryAwareFlow.java</td><td class=3D"modifications-data">*** empty log m=
essage ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modific=
ations-data">added</td><td class=3D"modifications-data">kdonald</td><td cla=
ss=3D"modifications-data">sandbox/src/org/springframework/web/flow/BeanFact=
oryAwareFlow.java</td><td class=3D"modifications-data">*** empty log messag=
e ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modificatio=
ns-data">modified</td><td class=3D"modifications-data">kdonald</td><td clas=
s=3D"modifications-data">sandbox/src/org/springframework/web/flow/Flow.java=
</td><td class=3D"modifications-data">*** empty log message ***</td></tr><t=
r class=3D"modifications-oddrow"><td class=3D"modifications-data">modified<=
/td><td class=3D"modifications-data">kdonald</td><td class=3D"modifications=
-data">sandbox/src/org/springframework/web/flow/Flow.java</td><td class=3D"=
modifications-data">*** empty log message ***</td></tr><tr class=3D"modific=
ations-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"=
modifications-data">kdonald</td><td class=3D"modifications-data">sandbox/sr=
c/org/springframework/web/flow/SubFlowState.java</td><td class=3D"modificat=
ions-data">*** empty log message ***</td></tr><tr class=3D"modifications-od=
drow"><td class=3D"modifications-data">modified</td><td class=3D"modificati=
ons-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/spri=
ngframework/web/flow/ActionState.java</td><td class=3D"modifications-data">=
*** empty log message ***</td></tr><tr class=3D"modifications-evenrow"><td =
class=3D"modifications-data">modified</td><td class=3D"modifications-data">=
kdonald</td><td class=3D"modifications-data">sandbox/src/org/springframewor=
k/web/flow/SubFlowState.java</td><td class=3D"modifications-data">*** empty=
log message ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"m=
odifications-data">modified</td><td class=3D"modifications-data">kdonald</t=
d><td class=3D"modifications-data">sandbox/src/org/springframework/web/flow=
/Flow.java</td><td class=3D"modifications-data">*** empty log message ***</=
td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data=
">modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"mo=
difications-data">sandbox/src/org/springframework/web/flow/FlowDao.java</td=
><td class=3D"modifications-data">*** empty log message ***</td></tr><tr cl=
ass=3D"modifications-oddrow"><td class=3D"modifications-data">added</td><td=
class=3D"modifications-data">kdonald</td><td class=3D"modifications-data">=
sandbox/src/org/springframework/web/flow/NoSuchFlowDefinitionException.java=
</td><td class=3D"modifications-data">*** empty log message ***</td></tr><t=
r class=3D"modifications-evenrow"><td class=3D"modifications-data">modified=
</td><td class=3D"modifications-data">kdonald</td><td class=3D"modification=
s-data">sandbox/src/org/springframework/web/flow/SubFlowState.java</td><td =
class=3D"modifications-data">*** empty log message ***</td></tr><tr class=
=3D"modifications-oddrow"><td class=3D"modifications-data">modified</td><td=
class=3D"modifications-data">kdonald</td><td class=3D"modifications-data">=
sandbox/src/org/springframework/web/flow/ActionState.java</td><td class=3D"=
modifications-data">*** empty log message ***</td></tr><tr class=3D"modific=
ations-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"=
modifications-data">kdonald</td><td class=3D"modifications-data">sandbox/sr=
c/org/springframework/web/flow/CannotExecuteStateTransitionException.java</=
td><td class=3D"modifications-data">*** empty log message ***</td></tr><tr =
class=3D"modifications-oddrow"><td class=3D"modifications-data">modified</t=
d><td class=3D"modifications-data">kdonald</td><td class=3D"modifications-d=
ata">sandbox/src/org/springframework/web/flow/Flow.java</td><td class=3D"mo=
difications-data">*** empty log message ***</td></tr><tr class=3D"modificat=
ions-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"mo=
difications-data">jhoeller</td><td class=3D"modifications-data">src/org/spr=
ingframework/context/support/AbstractApplicationContext.java</td><td class=
=3D"modifications-data">fixed javadoc typo</td></tr><tr class=3D"modificati=
ons-oddrow"><td class=3D"modifications-data">modified</td><td class=3D"modi=
fications-data">davison</td><td class=3D"modifications-data">test/org/sprin=
gframework/web/servlet/view/freemarker/FreeMarkerMacroTests.java</td><td cl=
ass=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D"=
modifications-evenrow"><td class=3D"modifications-data">modified</td><td cl=
ass=3D"modifications-data">jhoeller</td><td class=3D"modifications-data">sr=
c/org/springframework/context/support/ReloadableResourceBundleMessageSource=
.java</td><td class=3D"modifications-data">never check the same message fil=
e twice for the same message</td></tr><tr class=3D"modifications-oddrow"><t=
d class=3D"modifications-data">modified</td><td class=3D"modifications-data=
">robharrop</td><td class=3D"modifications-data">sandbox/src/org/springfram=
ework/jmx/util/package.html</td><td class=3D"modifications-data">Polished J=
MX JavaDocs - still more to do.</td></tr><tr class=3D"modifications-evenrow=
"><td class=3D"modifications-data">modified</td><td class=3D"modifications-=
data">robharrop</td><td class=3D"modifications-data">sandbox/src/org/spring=
framework/jmx/metadata/AbstractJmxAttribute.java</td><td class=3D"modificat=
ions-data">Polished JMX JavaDocs - still more to do.</td></tr><tr class=3D"=
modifications-oddrow"><td class=3D"modifications-data">modified</td><td cla=
ss=3D"modifications-data">robharrop</td><td class=3D"modifications-data">sa=
ndbox/src/org/springframework/jmx/metadata/InvalidMetadataException.java</t=
d><td class=3D"modifications-data">Polished JMX JavaDocs - still more to do=
.</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-d=
ata">added</td><td class=3D"modifications-data">robharrop</td><td class=3D"=
modifications-data">sandbox/src/org/springframework/jmx/metadata/package.ht=
ml</td><td class=3D"modifications-data">Polished JMX JavaDocs - still more =
to do.</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificatio=
ns-data">added</td><td class=3D"modifications-data">robharrop</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/jmx/naming/package.=
html</td><td class=3D"modifications-data">Polished JMX JavaDocs - still mor=
e to do.</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifica=
tions-data">modified</td><td class=3D"modifications-data">robharrop</td><td=
class=3D"modifications-data">sandbox/src/org/springframework/jmx/support/C=
onnectorServerFactoryBean.java</td><td class=3D"modifications-data">Polishe=
d JMX JavaDocs - still more to do.</td></tr><tr class=3D"modifications-oddr=
ow"><td class=3D"modifications-data">modified</td><td class=3D"modification=
s-data">robharrop</td><td class=3D"modifications-data">sandbox/src/org/spri=
ngframework/jmx/assembler/MetadataModelMBeanInfoAssembler.java</td><td clas=
s=3D"modifications-data">Polished JMX JavaDocs - still more to do.</td></tr=
><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">added=
</td><td class=3D"modifications-data">robharrop</td><td class=3D"modificati=
ons-data">sandbox/src/org/springframework/jmx/assembler/package.html</td><t=
d class=3D"modifications-data">Polished JMX JavaDocs - still more to do.</t=
d></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">=
modified</td><td class=3D"modifications-data">robharrop</td><td class=3D"mo=
difications-data">sandbox/src/org/springframework/jmx/assembler/InterfaceBa=
sedModelMBeanInfoAssembler.java</td><td class=3D"modifications-data">Polish=
ed JMX JavaDocs - still more to do.</td></tr><tr class=3D"modifications-eve=
nrow"><td class=3D"modifications-data">deleted</td><td class=3D"modificatio=
ns-data">robharrop</td><td class=3D"modifications-data">sandbox/src/org/spr=
ingframework/jmx/adapters/AdapterRegistrationException.java</td><td class=
=3D"modifications-data">Polished JMX JavaDocs - still more to do.</td></tr>=
<tr class=3D"modifications-oddrow"><td class=3D"modifications-data">modifie=
d</td><td class=3D"modifications-data">robharrop</td><td class=3D"modificat=
ions-data">sandbox/src/org/springframework/jmx/access/package.html</td><td =
class=3D"modifications-data">Polished JMX JavaDocs - still more to do.</td>=
</tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">m=
odified</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modi=
fications-data">test/org/springframework/orm/hibernate/support/LobTypeTests=
.java</td><td class=3D"modifications-data">refined AbstractLobType' JTA syn=
chronization to close the LobCreator as early as possible (earlier for a co=
mmit)</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modification=
s-data">modified</td><td class=3D"modifications-data">jhoeller</td><td clas=
s=3D"modifications-data">src/org/springframework/orm/hibernate/support/Abst=
ractLobType.java</td><td class=3D"modifications-data">refined AbstractLobTy=
pe' JTA synchronization to close the LobCreator as early as possible (earli=
er for a commit)</td></tr><tr class=3D"modifications-evenrow"><td class=3D"=
modifications-data">modified</td><td class=3D"modifications-data">jhoeller<=
/td><td class=3D"modifications-data">test/org/springframework/orm/hibernate=
/HibernateJtaTransactionTests.java</td><td class=3D"modifications-data">ref=
ined JTA synchronization to unbind the Session as early as possible (earlie=
r for a commit)</td></tr><tr class=3D"modifications-oddrow"><td class=3D"mo=
difications-data">modified</td><td class=3D"modifications-data">jhoeller</t=
d><td class=3D"modifications-data">src/org/springframework/orm/hibernate/Se=
ssionFactoryUtils.java</td><td class=3D"modifications-data">refined JTA syn=
chronization to unbind the Session as early as possible (earlier for a comm=
it)</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications=
-data">modified</td><td class=3D"modifications-data">jhoeller</td><td class=
=3D"modifications-data">src/org/springframework/web/servlet/mvc/AbstractFor=
mController.java</td><td class=3D"modifications-data">polished error messag=
es</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-d=
ata">modified</td><td class=3D"modifications-data">jhoeller</td><td class=
=3D"modifications-data">test/org/springframework/remoting/jaxrpc/JaxRpcSupp=
ortTests.java</td><td class=3D"modifications-data">reworked to avoid repeat=
ed HTTP lookup attempts</td></tr><tr class=3D"modifications-evenrow"><td cl=
ass=3D"modifications-data">added</td><td class=3D"modifications-data">jhoel=
ler</td><td class=3D"modifications-data">samples/petclinic/src/OJB-reposito=
ry.dtd</td><td class=3D"modifications-data">added OJB repository DTD file (=
not included in ojb.jar)</td></tr><tr class=3D"modifications-oddrow"><td cl=
ass=3D"modifications-data">modified</td><td class=3D"modifications-data">jh=
oeller</td><td class=3D"modifications-data">samples/petclinic/src/OJB-repos=
itory.xml</td><td class=3D"modifications-data">added OJB repository DTD fil=
e (not included in ojb.jar)</td></tr><tr class=3D"modifications-evenrow"><t=
d class=3D"modifications-data">added</td><td class=3D"modifications-data">j=
hoeller</td><td class=3D"modifications-data">lib/ojb/repository.dtd</td><td=
class=3D"modifications-data">added OJB repository DTD file (not included i=
n ojb.jar)</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modific=
ations-data">modified</td><td class=3D"modifications-data">jhoeller</td><td=
class=3D"modifications-data">samples/petclinic/src/org/springframework/sam=
ples/petclinic/ojb/PersistenceBrokerClinic.java</td><td class=3D"modificati=
ons-data">leveraged "getObjectById", added order-by clauses</td></tr><tr cl=
ass=3D"modifications-evenrow"><td class=3D"modifications-data">modified</td=
><td class=3D"modifications-data">jhoeller</td><td class=3D"modifications-d=
ata">test/org/springframework/web/servlet/view/freemarker/FreeMarkerMacroTe=
sts.java</td><td class=3D"modifications-data">reformatted, commented out fa=
iling tests</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifi=
cations-data">modified</td><td class=3D"modifications-data">jhoeller</td><t=
d class=3D"modifications-data">test/org/springframework/orm/ojb/Persistence=
BrokerTemplateTests.java</td><td class=3D"modifications-data">added "getObj=
ectById(entityClass, idValue)" method, for single primary keys</td></tr><tr=
class=3D"modifications-evenrow"><td class=3D"modifications-data">modified<=
/td><td class=3D"modifications-data">jhoeller</td><td class=3D"modification=
s-data">src/org/springframework/orm/ojb/PersistenceBrokerOperations.java</t=
d><td class=3D"modifications-data">added "getObjectById(entityClass, idValu=
e)" method, for single primary keys</td></tr><tr class=3D"modifications-odd=
row"><td class=3D"modifications-data">modified</td><td class=3D"modificatio=
ns-data">jhoeller</td><td class=3D"modifications-data">src/org/springframew=
ork/orm/ojb/PersistenceBrokerTemplate.java</td><td class=3D"modifications-d=
ata">added "getObjectById(entityClass, idValue)" method, for single primary=
keys</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modificatio=
ns-data">modified</td><td class=3D"modifications-data">jhoeller</td><td cla=
ss=3D"modifications-data">build.xml</td><td class=3D"modifications-data">re=
moved unnecessary javadoc links for secondary dependencies</td></tr><tr cla=
ss=3D"modifications-oddrow"><td class=3D"modifications-data">modified</td><=
td class=3D"modifications-data">jhoeller</td><td class=3D"modifications-dat=
a">lib/readme.txt</td><td class=3D"modifications-data">re-added Commons Lan=
g (for OJB)</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modif=
ications-data">modified</td><td class=3D"modifications-data">jhoeller</td><=
td class=3D"modifications-data">lib/jakarta-commons/commons-lang.jar</td><t=
d class=3D"modifications-data">re-added Commons Lang (for OJB)</td></tr><tr=
class=3D"modifications-oddrow"><td class=3D"modifications-data">modified</=
td><td class=3D"modifications-data">robharrop</td><td class=3D"modification=
s-data">sandbox/src/org/springframework/aop/framework/aspectwerkz/AspectWer=
kzAopProxy.java</td><td class=3D"modifications-data">Added tests for Aspect=
Werkz proxy</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modif=
ications-data">added</td><td class=3D"modifications-data">robharrop</td><td=
class=3D"modifications-data">sandbox/src/org/springframework/aop/framework=
/aspectwerkz/ExpressionBasedPointcut.java</td><td class=3D"modifications-da=
ta">Added tests for AspectWerkz proxy</td></tr><tr class=3D"modifications-o=
ddrow"><td class=3D"modifications-data">modified</td><td class=3D"modificat=
ions-data">jhoeller</td><td class=3D"modifications-data">test/org/springfra=
mework/orm/hibernate/HibernateJtaTransactionTests.java</td><td class=3D"mod=
ifications-data">fixed NPE in Session lookup code (when using both JTA sync=
hronization and Spring synchronization)</td></tr><tr class=3D"modifications=
-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"modifi=
cations-data">jhoeller</td><td class=3D"modifications-data">src/org/springf=
ramework/orm/hibernate/SessionFactoryUtils.java</td><td class=3D"modificati=
ons-data">fixed NPE in Session lookup code (when using both JTA synchroniza=
tion and Spring synchronization)</td></tr><tr class=3D"modifications-oddrow=
"><td class=3D"modifications-data">modified</td><td class=3D"modifications-=
data">jhoeller</td><td class=3D"modifications-data">src/org/springframework=
/orm/ibatis/SqlMapClientFactoryBean.java</td><td class=3D"modifications-dat=
a">polishing</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modi=
fications-data">modified</td><td class=3D"modifications-data">jhoeller</td>=
<td class=3D"modifications-data">src/org/springframework/orm/ojb/support/Pe=
rsistenceBrokerDaoSupport.java</td><td class=3D"modifications-data">polishi=
ng</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-d=
ata">modified</td><td class=3D"modifications-data">jhoeller</td><td class=
=3D"modifications-data">src/org/springframework/transaction/support/Abstrac=
tPlatformTransactionManager.java</td><td class=3D"modifications-data">remov=
ed invalid javadoc references</td></tr><tr class=3D"modifications-evenrow">=
<td class=3D"modifications-data">modified</td><td class=3D"modifications-da=
ta">jhoeller</td><td class=3D"modifications-data">src/org/springframework/o=
rm/ojb/PersistenceBrokerTransactionManager.java</td><td class=3D"modificati=
ons-data">removed invalid javadoc references</td></tr><tr class=3D"modifica=
tions-oddrow"><td class=3D"modifications-data">modified</td><td class=3D"mo=
difications-data">jhoeller</td><td class=3D"modifications-data">src/org/spr=
ingframework/orm/jdo/JdoTransactionManager.java</td><td class=3D"modificati=
ons-data">removed invalid javadoc references</td></tr><tr class=3D"modifica=
tions-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"m=
odifications-data">jhoeller</td><td class=3D"modifications-data">src/org/sp=
ringframework/orm/hibernate/HibernateTransactionManager.java</td><td class=
=3D"modifications-data">removed invalid javadoc references</td></tr><tr cla=
ss=3D"modifications-oddrow"><td class=3D"modifications-data">added</td><td =
class=3D"modifications-data">jhoeller</td><td class=3D"modifications-data">=
src/org/springframework/orm/ojb/support/TransactionAwareDataSourceConnectio=
nFactory.java</td><td class=3D"modifications-data">added TransactionAwareDa=
taSourceConnectionFactory for OJB</td></tr><tr class=3D"modifications-evenr=
ow"><td class=3D"modifications-data">modified</td><td class=3D"modification=
s-data">jhoeller</td><td class=3D"modifications-data">src/org/springframewo=
rk/orm/ojb/support/LocalDataSourceConnectionFactory.java</td><td class=3D"m=
odifications-data">added TransactionAwareDataSourceConnectionFactory for OJ=
B</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-da=
ta">modified</td><td class=3D"modifications-data">jhoeller</td><td class=3D=
"modifications-data">src/org/springframework/orm/ojb/support/LocalOjbConfig=
urer.java</td><td class=3D"modifications-data">added TransactionAwareDataSo=
urceConnectionFactory for OJB</td></tr><tr class=3D"modifications-evenrow">=
<td class=3D"modifications-data">modified</td><td class=3D"modifications-da=
ta">jhoeller</td><td class=3D"modifications-data">test/org/springframework/=
orm/hibernate/LocalSessionFactoryBeanTests.java</td><td class=3D"modificati=
ons-data">added "useTransactionAwareDataSource" flag to LocalSessionFactory=
Bean</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications=
-data">modified</td><td class=3D"modifications-data">jhoeller</td><td class=
=3D"modifications-data">src/org/springframework/orm/hibernate/LocalDataSour=
ceConnectionProvider.java</td><td class=3D"modifications-data">added "useTr=
ansactionAwareDataSource" flag to LocalSessionFactoryBean</td></tr><tr clas=
s=3D"modifications-evenrow"><td class=3D"modifications-data">modified</td><=
td class=3D"modifications-data">jhoeller</td><td class=3D"modifications-dat=
a">src/org/springframework/orm/hibernate/LocalSessionFactoryBean.java</td><=
td class=3D"modifications-data">added "useTransactionAwareDataSource" flag =
to LocalSessionFactoryBean</td></tr><tr class=3D"modifications-oddrow"><td =
class=3D"modifications-data">added</td><td class=3D"modifications-data">jho=
eller</td><td class=3D"modifications-data">src/org/springframework/orm/hibe=
rnate/TransactionAwareDataSourceConnectionProvider.java</td><td class=3D"mo=
difications-data">added "useTransactionAwareDataSource" flag to LocalSessio=
nFactoryBean</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modi=
fications-data">added</td><td class=3D"modifications-data">robharrop</td><t=
d class=3D"modifications-data">sandbox/src/org/springframework/aop/framewor=
k/aspectwerkz/AspectWerkzAopProxy.java</td><td class=3D"modifications-data"=
>Added initial AspectWerkz proxy stuff - really rough at the moment.</td></=
tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">adde=
d</td><td class=3D"modifications-data">robharrop</td><td class=3D"modificat=
ions-data">sandbox/src/org/springframework/aop/framework/aspectwerkz/Aspect=
WerkzAopProxyFactory.java</td><td class=3D"modifications-data">Added initia=
l AspectWerkz proxy stuff - really rough at the moment.</td></tr><tr class=
=3D"modifications-evenrow"><td class=3D"modifications-data">added</td><td c=
lass=3D"modifications-data">robharrop</td><td class=3D"modifications-data">=
lib/aspectwerkz/aspectwerkz-core-2.0.RC3-snapshot.jar</td><td class=3D"modi=
fications-data">Added initial AspectWerkz proxy stuff - really rough at the=
moment.</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificat=
ions-data">added</td><td class=3D"modifications-data">robharrop</td><td cla=
ss=3D"modifications-data">lib/aspectwerkz/aspectwerkz-2.0.RC3-snapshot.jar<=
/td><td class=3D"modifications-data">Added initial AspectWerkz proxy stuff =
- really rough at the moment.</td></tr><tr class=3D"modifications-evenrow">=
<td class=3D"modifications-data">modified</td><td class=3D"modifications-da=
ta">davison</td><td class=3D"modifications-data">src/org/springframework/we=
b/servlet/view/freemarker/spring.ftl</td><td class=3D"modifications-data">n=
eed to explicitly handle all boolean content separately from other data typ=
es.</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-=
data">modified</td><td class=3D"modifications-data">davison</td><td class=
=3D"modifications-data">src/org/springframework/web/servlet/view/freemarker=
/spring.ftl</td><td class=3D"modifications-data">backing out previous chang=
es, tests must be passing falsely</td></tr><tr class=3D"modifications-evenr=
ow"><td class=3D"modifications-data">modified</td><td class=3D"modification=
s-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org/spring=
framework/web/flow/Flow.java</td><td class=3D"modifications-data">*** empty=
log message ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"m=
odifications-data">added</td><td class=3D"modifications-data">kdonald</td><=
td class=3D"modifications-data">sandbox/src/org/springframework/web/flow/No=
SuchFlowAttributeMapperException.java</td><td class=3D"modifications-data">=
*** empty log message ***</td></tr><tr class=3D"modifications-evenrow"><td =
class=3D"modifications-data">modified</td><td class=3D"modifications-data">=
kdonald</td><td class=3D"modifications-data">sandbox/src/org/springframewor=
k/web/flow/TransitionableState.java</td><td class=3D"modifications-data">**=
* empty log message ***</td></tr><tr class=3D"modifications-oddrow"><td cla=
ss=3D"modifications-data">modified</td><td class=3D"modifications-data">kdo=
nald</td><td class=3D"modifications-data">sandbox/src/org/springframework/w=
eb/flow/AttributesAccessor.java</td><td class=3D"modifications-data">*** em=
pty log message ***</td></tr><tr class=3D"modifications-evenrow"><td class=
=3D"modifications-data">modified</td><td class=3D"modifications-data">kdona=
ld</td><td class=3D"modifications-data">sandbox/src/org/springframework/web=
/flow/FlowDao.java</td><td class=3D"modifications-data">*** empty log messa=
ge ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificatio=
ns-data">modified</td><td class=3D"modifications-data">kdonald</td><td clas=
s=3D"modifications-data">sandbox/src/org/springframework/web/flow/FlowEvent=
Processor.java</td><td class=3D"modifications-data">*** empty log message *=
**</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-=
data">modified</td><td class=3D"modifications-data">kdonald</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/web/flow/FlowSessio=
nExecutionInfo.java</td><td class=3D"modifications-data">*** empty log mess=
age ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificati=
ons-data">added</td><td class=3D"modifications-data">kdonald</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/web/flow/FlowSessio=
nExecutionStartResult.java</td><td class=3D"modifications-data">*** empty l=
og message ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"mo=
difications-data">modified</td><td class=3D"modifications-data">kdonald</td=
><td class=3D"modifications-data">sandbox/src/org/springframework/web/flow/=
MulticastFlowLifecycleListener.java</td><td class=3D"modifications-data">**=
* empty log message ***</td></tr><tr class=3D"modifications-oddrow"><td cla=
ss=3D"modifications-data">modified</td><td class=3D"modifications-data">kdo=
nald</td><td class=3D"modifications-data">sandbox/src/org/springframework/w=
eb/flow/StartState.java</td><td class=3D"modifications-data">*** empty log =
message ***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modif=
ications-data">modified</td><td class=3D"modifications-data">kdonald</td><t=
d class=3D"modifications-data">sandbox/src/org/springframework/web/flow/Tra=
nsition.java</td><td class=3D"modifications-data">*** empty log message ***=
</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-dat=
a">modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"m=
odifications-data">sandbox/src/org/springframework/web/flow/ViewState.java<=
/td><td class=3D"modifications-data">*** empty log message ***</td></tr><tr=
class=3D"modifications-evenrow"><td class=3D"modifications-data">modified<=
/td><td class=3D"modifications-data">kdonald</td><td class=3D"modifications=
-data">sandbox/src/org/springframework/web/flow/AbstractState.java</td><td =
class=3D"modifications-data">*** empty log message ***</td></tr><tr class=
=3D"modifications-oddrow"><td class=3D"modifications-data">modified</td><td=
class=3D"modifications-data">kdonald</td><td class=3D"modifications-data">=
sandbox/src/org/springframework/web/flow/ActionState.java</td><td class=3D"=
modifications-data">*** empty log message ***</td></tr><tr class=3D"modific=
ations-evenrow"><td class=3D"modifications-data">added</td><td class=3D"mod=
ifications-data">kdonald</td><td class=3D"modifications-data">sandbox/src/o=
rg/springframework/web/flow/FlowAttributesMapper.java</td><td class=3D"modi=
fications-data">*** empty log message ***</td></tr><tr class=3D"modificatio=
ns-oddrow"><td class=3D"modifications-data">modified</td><td class=3D"modif=
ications-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org=
/springframework/web/flow/FlowLifecycleListener.java</td><td class=3D"modif=
ications-data">*** empty log message ***</td></tr><tr class=3D"modification=
s-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"modif=
ications-data">kdonald</td><td class=3D"modifications-data">sandbox/src/org=
/springframework/web/flow/FlowSessionExecutionStack.java</td><td class=3D"m=
odifications-data">*** empty log message ***</td></tr><tr class=3D"modifica=
tions-oddrow"><td class=3D"modifications-data">deleted</td><td class=3D"mod=
ifications-data">kdonald</td><td class=3D"modifications-data">sandbox/src/o=
rg/springframework/web/flow/NoSuchAttributeMapperException.java</td><td cla=
ss=3D"modifications-data">*** empty log message ***</td></tr><tr class=3D"m=
odifications-evenrow"><td class=3D"modifications-data">added</td><td class=
=3D"modifications-data">kdonald</td><td class=3D"modifications-data">sandbo=
x/src/org/springframework/web/flow/ParameterizableFlowAttributesMapper.java=
</td><td class=3D"modifications-data">*** empty log message ***</td></tr><t=
r class=3D"modifications-oddrow"><td class=3D"modifications-data">deleted</=
td><td class=3D"modifications-data">kdonald</td><td class=3D"modifications-=
data">sandbox/src/org/springframework/web/flow/ParameterizableSubFlowAttrib=
utesMapper.java</td><td class=3D"modifications-data">*** empty log message =
***</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications=
-data">deleted</td><td class=3D"modifications-data">kdonald</td><td class=
=3D"modifications-data">sandbox/src/org/springframework/web/flow/SubFlowAtt=
ributesMapper.java</td><td class=3D"modifications-data">*** empty log messa=
ge ***</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificatio=
ns-data">modified</td><td class=3D"modifications-data">kdonald</td><td clas=
s=3D"modifications-data">sandbox/src/org/springframework/web/flow/SubFlowSt=
ate.java</td><td class=3D"modifications-data">*** empty log message ***</td=
></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">=
modified</td><td class=3D"modifications-data">kdonald</td><td class=3D"modi=
fications-data">sandbox/src/org/springframework/web/flow/FlowSession.java</=
td><td class=3D"modifications-data">*** empty log message ***</td></tr><tr =
class=3D"modifications-oddrow"><td class=3D"modifications-data">modified</t=
d><td class=3D"modifications-data">kdonald</td><td class=3D"modifications-d=
ata">sandbox/src/org/springframework/web/flow/Flow.java</td><td class=3D"mo=
difications-data">*** empty log message ***</td></tr><tr class=3D"modificat=
ions-evenrow"><td class=3D"modifications-data">modified</td><td class=3D"mo=
difications-data">kdonald</td><td class=3D"modifications-data">sandbox/test=
/org/springframework/web/flow/FlowTests.java</td><td class=3D"modifications=
-data">polishing</td></tr><tr class=3D"modifications-oddrow"><td class=3D"m=
odifications-data">modified</td><td class=3D"modifications-data">kdonald</t=
d><td class=3D"modifications-data">sandbox/test/org/springframework/web/flo=
w/MulticastFlowLifecycleListenerTests.java</td><td class=3D"modifications-d=
ata">polishing</td></tr><tr class=3D"modifications-evenrow"><td class=3D"mo=
difications-data">modified</td><td class=3D"modifications-data">kdonald</td=
><td class=3D"modifications-data">sandbox/src/org/springframework/web/flow/=
struts/FlowAction.java</td><td class=3D"modifications-data">polishing</td><=
/tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">mod=
ified</td><td class=3D"modifications-data">kdonald</td><td class=3D"modific=
ations-data">sandbox/src/org/springframework/web/flow/action/AbstractAction=
Bean.java</td><td class=3D"modifications-data">polishing</td></tr><tr class=
=3D"modifications-evenrow"><td class=3D"modifications-data">modified</td><t=
d class=3D"modifications-data">jhoeller</td><td class=3D"modifications-data=
">changelog.txt</td><td class=3D"modifications-data">SQLErrorCodes, SqlMapC=
lientTemplate, RmiServiceExporter</td></tr><tr class=3D"modifications-oddro=
w"><td class=3D"modifications-data">modified</td><td class=3D"modifications=
-data">jhoeller</td><td class=3D"modifications-data">src/org/springframewor=
k/orm/ojb/PersistenceBrokerTemplate.java</td><td class=3D"modifications-dat=
a">polishing</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modi=
fications-data">modified</td><td class=3D"modifications-data">jhoeller</td>=
<td class=3D"modifications-data">src/org/springframework/orm/jdo/JdoTemplat=
e.java</td><td class=3D"modifications-data">polishing</td></tr><tr class=3D=
"modifications-oddrow"><td class=3D"modifications-data">modified</td><td cl=
ass=3D"modifications-data">jhoeller</td><td class=3D"modifications-data">sr=
c/org/springframework/orm/hibernate/HibernateTemplate.java</td><td class=3D=
"modifications-data">polishing</td></tr></table><p>
<table width=3D"98%" border=3D"0" cellspacing=3D"0" cellpadding=3D"2" align=
=3D"center"></table>
</body></html> |
|
From: Drew D. <dr...@og...> - 2005-01-29 20:59:43
|
Colin Sampaleanu wrote:
> This code looks pretty interesting. I agree about it probably making
> sense to include in Spring. Drew, do you have any feel for
> performance, i.e. how big an impact there would be to using a lot of
> these expressions in a config file?
I wouldn't expect the effect to be very noticeable at all. I haven't
done any performance comparisons with bare spring contexts and
OGNL-decorated ones so all I have is my own experience with my
Hibernate/Spring/Tapestry webapps. I currently am using this on 3
different projects and have developed on these for months before popping
this configurer in, so I have a good idea of the "real world" startup
time of my contexts.
My opinion is that the OGNL parsing/evaluation is "dust on the scale"
when compared with the startup time for Spring's parsing and
(especially) Hibernate initialization. OGNL uses reflection heavily (as
does Spring), but the fact is that most of the time (probably all of the
time) you read the contexts once at startup, so any compilation step at
this point would slow down the process (the incarnation of OGNL that I'm
working on has back-ends for Janino and one for Javassist code
generation for faster expression evaluation).
Since I wrote this I went a bit off the deep end using OGNL expressions
in my contexts; I've since settled down a bit and backed off of using
them so much. The reason is that I was doing some things with OGNL that
should be done with Spring just because OGNL provides a slightly more
convenient syntax for some things (collections, mostly). I didn't do it
for performance reasons (I had a context with about 30 objects that were
configured using at least one OGNL-replaced expression each and it had
no noticeable performance impact).
The OGNL performance suite should give you an idea of the general speed
for some common operations:
performance:
[java] Constant: 100 + 20 * 5
[java] java: 3720098 iterations in 1000 ms
[java] compiled: 912719 iterations in 1000 ms (4.1 times slower
than java)
[java] interpreted: 869808 iterations in 1000 ms (4.3 times slower
than java)
[java] Single Property: bean2
[java] java: 3772105 iterations in 1000 ms
[java] compiled: 362914 iterations in 1000 ms (10.4 times slower
than java)
[java] interpreted: 167400 iterations in 1000 ms (22.5 times slower
than java)
[java] Property Navigation: bean2.bean3.value
[java] java: 3601668 iterations in 1000 ms
[java] compiled: 102586 iterations in 1000 ms (35.1 times slower
than java)
[java] interpreted: 52078 iterations in 1000 ms (69.2 times slower
than java)
[java] Property Navigation and Comparison: bean2.bean3.value <= 24
[java] java: 3394879 iterations in 1000 ms
[java] compiled: 68599 iterations in 1000 ms (49.5 times slower
than java)
[java] interpreted: 43283 iterations in 1000 ms (78.4 times slower
than java)
[java] Property Navigation with Indexed Access:
bean2.bean3.indexedValue[25]
[java] java: 3624147 iterations in 1000 ms
[java] compiled: 43374 iterations in 1000 ms (83.6 times slower
than java)
[java] interpreted: 33505 iterations in 1000 ms (108.2 times slower
than java)
[java] Property Navigation with Map Access: bean2.bean3.map["foo"]
[java] java: 2149048 iterations in 1000 ms
[java] compiled: 55539 iterations in 1000 ms (38.7 times slower
than java)
[java] interpreted: 35116 iterations in 1000 ms (61.2 times slower
than java)
Note that the compiled: entries denote the earlier, simpler version of
the Javassist-based compiler that only generated property accessors for
expressions. These tests run for a fixed length of time to test how
many times the statement will be executed.
Although seeing things like "61.2 times slower than java" is a bit
daunting, remember that the last one executed 35,116 times in 1 second.
If you put 100 OGNL expressions of medium complexity in your context it
will be slower, but not noticeably.
> I'm also trying to get my head around how this affects lifecycles and
> when initialization happens. PropertyPlaceholderConfigurer is
> obviously pretty simplistic, all it's going to do is replace a
> placehold value in a text property value with another. It can't
> trigger the initialization of another bean. Now in this OGNL variant,
> if the OGNL script references the context, then it can trigger the
> initialization of other beans, similar in fashion to how a <ref
> bean="xxx"> will trigger the init of that other bean first. Now the
> difference here is that while the <ref bean=""> will trigger that init
> only if used, since this approach is as a bean factory postprocessor
> and all expressions are evaluated at init time, all references beans
> will be immediately initialized at init time. For this reason, while I
> think this is a valid approach, and has the advantage that it doesn't
> require changes to the guts of Spring, I think there's still added
> value in having the idea of expressions known to Spring itself, which
> are only evaluated on demand... Possibly the 2nd step...
Yes, there could be lifecycle issues here that I'm ignorant of. I'm not
as conversant with the internals of Spring as I'd like but my initial
usage has been successful in referencing other beans in the context.
Ideally the OGNL stuff would have the same effect as doing a <ref
bean=""> reference, so that the semantics are consistent.
I chose to implement this as a BeanFactoryPostProcessor instead of some
other approach (like a custom <value>-type tag) because it's less
intrusive and is drop-in compatible. To make it semantically like <ref
bean=""> there might have to be tighter integration. Correct? Or is
the <ref> stuff implemented using the same basic mechanism?
- Drew
--
+---------------------------------+
< Drew Davidson | OGNL Technology >
+---------------------------------+
| Email: dr...@og... /
| Web: http://www.ognl.org /
| Vox: (520) 531-1966 <
| Fax: (520) 531-1965 \
| Mobile: (520) 405-2967 \
+---------------------------------+
|
|
From: March, A. <am...@so...> - 2005-01-29 20:43:36
|
I understand that the lazy initializer is using the wrong session but all our objects are local variables. No object spans requests. So now I'm really confused. The LazyInitializer use the same session as the parent object was loaded in. What I guess I'm saying is that the parent object was also loaded by the wrong session. =20 This problem not only takes load to surface but also is completely random. Different pieces of data during the velocity merge end up failing. You will probably be able to see this by going to http://eq2players.station.sony.com <http://eq2players.station.sony.com/> . If you go to a page that has a lot of data and hit refresh a bunch, stuff will start vanishing. =20 What I can do is verify which session is created for thread 7, since I didn't put that in my trace. I will definitely triple check my code to make sure no object traverses requests. Thanks for your input but I'm still lost. =20 =20 ________________________________ From: spr...@li... [mailto:spr...@li...] On Behalf Of Guillaume Poirier Sent: Saturday, January 29, 2005 11:46 AM To: spr...@li... Subject: Re: [Springframework-developer] Non Thread-safe hibernate session =20 It could be possible if there a finally was missing or something like that, causing a Session to be kept in the ThreadLocal, but it wouldn't cause the Session to be used by a different Thread. Beside, the exception clearly happens with LazyInitialization which makes it doubtful to be related to ThreadLocal stuff, unless the JDK's ThreadLocal class had a concurrency bug that was somehow still unfound. Jurgen's analysis of the situation seems accurate to me. Guillaume Rob Harrop wrote:=20 It seems unlikely that this is a problem with Spring - those threads are created by Tomcat and not Spring. I am wondering however if at that level of load the ThreadLocal stuff isn't getting cleared somehow when a thread is put back in the pool? Is this possible?=20 Rob=20 March, Andres wrote:=20 Unfortunately, this is not the case here. We are using jmeter with unauthenticated requests and therefore put nothing in the httpsession. Additionally, your example should take place with as little as 2 requests: one fetching the object and sticking it into the HttpSession, the other trying to initialize its collections. In our case, we have to create a decent amount of load (~30 pages/sec) for the errors to occur. Any other ideas?=20 ------------------------------------------------------------------------ *From:* spr...@li... [mailto:spr...@li...] *On Behalf Of *Juergen Hoeller=20 *Sent:* Saturday, January 29, 2005 2:44 AM=20 *To:* spr...@li...=20 *Subject:* RE: [Springframework-developer] Non Thread-safe hibernate session=20 Actually, this can happen without either Spring or the ThreadLocal mechanism breaking: One of your persistent objects might hold a lazy persistent collection, which holds a reference to the Session that originally loaded it.=20 If you put such a persistent object into the HttpSession, for example, the original request that loaded the object (in thread TPProcessor1) will have completed and thus the Hibernate Session have been closed. Now, if you take your persistent object out of the HttpSession again in a new request (in thread TPProcessor7) and try to access it lazy collection, it's gonna fail because the original Session has been closed.=20 So the "leak" where a Session reference got out of its original request/thread context is your persistent object in the HttpSession here. This is a well-known problem: To make lazy loading work here, you need to attach the persistent object to the new Hibernate Session (via lock or saveOrUpdate).=20 Juergen=20 -----Original Message-----=20 *From:* spr...@li...=20 [mailto:spr...@li...]*On=20 Behalf Of *March, Andres=20 *Sent:* Friday, January 28, 2005 8:27 PM=20 *To:* spr...@li...=20 *Subject:* [Springframework-developer] Non Thread-safe hibernate=20 session=20 As you can see below, a thread, other than the one that had the=20 session created for it, tries to access a session but it has been=20 closed by the valid owner thread. This only occurs under decent=20 load. There must be some thread safety issue in Spring or the=20 whole ThreadLocal idea goes out the window. Does anybody have any=20 idea how this could occur? I don't see how I could be=20 misinterpreting this trace.=20 FATAL (SessionImpl.java:528) - Constructor for session:=20 net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor1=20 FATAL (SessionFactoryImpl.java:342) - Session :=20 net.sf.hibernate.impl.SessionImpl@b72884 created for Thread :=20 TP-Processor1=20 ...later on...=20 closing session : net.sf.hibernate.impl.SessionImpl@b72884 and=20 conn: com.mchange.v2.c3p0.impl.NewProxyConnection@4ad009 on Thread=20 : TP-Processor1=20 ...later on...=20 net.sf.hibernate.HibernateException: Session is closed :=20 net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor7=20 at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3313)=20 at=20 =20 net.sf.hibernate.proxy.LazyInitializer.initialize(LazyInitializer.java:4 7)=20 at=20 =20 net.sf.hibernate.proxy.LazyInitializer.initializeWrapExceptions(LazyInit ializer.java:60)=20 at=20 =20 net.sf.hibernate.proxy.LazyInitializer.getImplementation(LazyInitializer .java:164)=20 at=20 =20 net.sf.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializ er.java:108)=20 at=20 =20 com.sony.soe.guilds.model.GameCharacter$$EnhancerByCGLIB$$25b6cd13.getBi oImage(<generated>)=20 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)=20 at=20 =20 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:39)=20 at=20 =20 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25)=20 at java.lang.reflect.Method.invoke(Method.java:324)=20 at=20 =20 org.apache.velocity.runtime.parser.node.PropertyExecutor.execute(Propert yExecutor.java:111)=20 at=20 =20 org.apache.velocity.util.introspection.UberspectImpl$VelGetterImpl.invok e(UberspectImpl.java:300)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentif ier.java:157)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReferenc e.java:175)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReferen ce.java:307)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTNotNode.evaluate(ASTNotNode.j ava:47)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpres sion.java:46)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfState ment.java:69)=20 at=20 =20 org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.jav a:231)=20 at org.apache.velocity.runtime.directive.Parse.render(Parse.java:181)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective .java:116)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56 )=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfState ment.java:71)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56 )=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfState ment.java:71)=20 at=20 =20 org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.jav a:231)=20 at org.apache.velocity.runtime.directive.Parse.render(Parse.java:181)=20 at=20 =20 org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective .java:116)=20 at=20 =20 org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.jav a:231)=20 at org.apache.velocity.Template.merge(Template.java:256)=20 at com.sony.soe.web.mvc.VelocityView.go(VelocityView.java:181)=20 at com.sony.soe.guilds.view.VelocityLayout.go(VelocityLayout.java:135)=20 at org.infohazard.maverick.flow.CommandBase.go(CommandBase.java:79)=20 at org.infohazard.maverick.Dispatcher.service(Dispatcher.java:345)=20 at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:237)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:157)=20 at=20 =20 net.sf.acegisecurity.ui.AbstractIntegrationFilter.doFilter(AbstractInteg rationFilter.java:170)=20 at=20 =20 com.sony.soe.guilds.controller.SecurityFilter.doFilter(SecurityFilter.ja va:118)=20 at=20 =20 net.sf.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.j ava:88)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:186)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:157)=20 at=20 =20 org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilt erInternal(OpenSessionInViewFilter.java:17=20 1)=20 at=20 =20 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequ estFilter.java:76)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:186)=20 at=20 =20 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:157)=20 at=20 =20 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:214)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104)=20 at=20 =20 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20)=20 at=20 =20 org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon textValve.java:198)=20 at=20 =20 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:152)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104)=20 at=20 =20 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20)=20 at=20 =20 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :137)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104)=20 at=20 =20 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :117)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:102)=20 at=20 =20 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20)=20 at=20 =20 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104)=20 at=20 =20 org.apache.catalina.valves.RequestDumperValve.invoke(RequestDumperValve. java:169)=20 at=20 =20 org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:102)=20 at=20 =20 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20)=20 at=20 =20 org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)=20 at=20 =20 org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)=20 at=20 =20 org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:296)=20 at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:372)=20 at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:694) at=20 =20 org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java: 626)=20 at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:807)=20 at=20 =20 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool .java:644)=20 at java.lang.Thread.run(Thread.java:534)=20 -----------------------------------------=20 Andres March=20 Platform - Apps Engineering=20 Sony Online Entertainment=20 desk: 858.577.3373=20 cell: 619.519.1519=20 -------------------------------------------------------=20 This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting=20 Tool for open source databases. Create drag-&-drop reports. Save time=20 by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.=20 Download a FREE copy at http://www.intelliview.com/go/osdn_nl=20 _______________________________________________=20 Springframework-developer mailing list=20 Spr...@li...=20 https://lists.sourceforge.net/lists/listinfo/springframework-developer=20 |
|
From: Guillaume P. <gpo...@sy...> - 2005-01-29 19:45:49
|
It could be possible if there a finally was missing or something like that, causing a Session to be kept in the ThreadLocal, but it wouldn't cause the Session to be used by a different Thread. Beside, the exception clearly happens with LazyInitialization which makes it doubtful to be related to ThreadLocal stuff, unless the JDK's ThreadLocal class had a concurrency bug that was somehow still unfound. Jurgen's analysis of the situation seems accurate to me. Guillaume Rob Harrop wrote: > It seems unlikely that this is a problem with Spring - those threads > are created by Tomcat and not Spring. I am wondering however if at > that level of load the ThreadLocal stuff isn't getting cleared somehow > when a thread is put back in the pool? Is this possible? > > Rob > > March, Andres wrote: > >> Unfortunately, this is not the case here. We are using jmeter with >> unauthenticated requests and therefore put nothing in the >> httpsession. Additionally, your example should take place with as >> little as 2 requests: one fetching the object and sticking it into >> the HttpSession, the other trying to initialize its collections. In >> our case, we have to create a decent amount of load (~30 pages/sec) >> for the errors to occur. Any other ideas? >> >> ------------------------------------------------------------------------ >> >> *From:* spr...@li... >> [mailto:spr...@li...] *On >> Behalf Of *Juergen Hoeller >> *Sent:* Saturday, January 29, 2005 2:44 AM >> *To:* spr...@li... >> *Subject:* RE: [Springframework-developer] Non Thread-safe hibernate >> session >> >> Actually, this can happen without either Spring or the ThreadLocal >> mechanism breaking: One of your persistent objects might hold a lazy >> persistent collection, which holds a reference to the Session that >> originally loaded it. >> >> If you put such a persistent object into the HttpSession, for >> example, the original request that loaded the object (in thread >> TPProcessor1) will have completed and thus the Hibernate Session have >> been closed. Now, if you take your persistent object out of the >> HttpSession again in a new request (in thread TPProcessor7) and try >> to access it lazy collection, it's gonna fail because the original >> Session has been closed. >> >> So the "leak" where a Session reference got out of its original >> request/thread context is your persistent object in the HttpSession >> here. This is a well-known problem: To make lazy loading work here, >> you need to attach the persistent object to the new Hibernate Session >> (via lock or saveOrUpdate). >> >> Juergen >> >> -----Original Message----- >> *From:* spr...@li... >> [mailto:spr...@li...]*On >> Behalf Of *March, Andres >> *Sent:* Friday, January 28, 2005 8:27 PM >> *To:* spr...@li... >> *Subject:* [Springframework-developer] Non Thread-safe hibernate >> session >> >> As you can see below, a thread, other than the one that had the >> session created for it, tries to access a session but it has been >> closed by the valid owner thread. This only occurs under decent >> load. There must be some thread safety issue in Spring or the >> whole ThreadLocal idea goes out the window. Does anybody have any >> idea how this could occur? I don’t see how I could be >> misinterpreting this trace. >> >> FATAL (SessionImpl.java:528) - Constructor for session: >> net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor1 >> >> FATAL (SessionFactoryImpl.java:342) - Session : >> net.sf.hibernate.impl.SessionImpl@b72884 created for Thread : >> TP-Processor1 >> >> …later on… >> >> closing session : net.sf.hibernate.impl.SessionImpl@b72884 and >> conn: com.mchange.v2.c3p0.impl.NewProxyConnection@4ad009 on Thread >> : TP-Processor1 >> >> …later on… >> >> net.sf.hibernate.HibernateException: Session is closed : >> net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor7 >> >> at >> net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3313) >> >> at >> >> net.sf.hibernate.proxy.LazyInitializer.initialize(LazyInitializer.java:47) >> >> >> at >> >> net.sf.hibernate.proxy.LazyInitializer.initializeWrapExceptions(LazyInitializer.java:60) >> >> >> at >> >> net.sf.hibernate.proxy.LazyInitializer.getImplementation(LazyInitializer.java:164) >> >> >> at >> >> net.sf.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:108) >> >> >> at >> >> com.sony.soe.guilds.model.GameCharacter$$EnhancerByCGLIB$$25b6cd13.getBioImage(<generated>) >> >> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> >> at >> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> >> >> at >> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> >> >> at java.lang.reflect.Method.invoke(Method.java:324) >> >> at >> >> org.apache.velocity.runtime.parser.node.PropertyExecutor.execute(PropertyExecutor.java:111) >> >> >> at >> >> org.apache.velocity.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:300) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentifier.java:157) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:175) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReference.java:307) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTNotNode.evaluate(ASTNotNode.java:47) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpression.java:46) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:69) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:231) >> >> >> at >> org.apache.velocity.runtime.directive.Parse.render(Parse.java:181) >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:116) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:71) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:71) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:231) >> >> >> at >> org.apache.velocity.runtime.directive.Parse.render(Parse.java:181) >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:116) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:231) >> >> >> at org.apache.velocity.Template.merge(Template.java:256) >> >> at com.sony.soe.web.mvc.VelocityView.go(VelocityView.java:181) >> >> at >> com.sony.soe.guilds.view.VelocityLayout.go(VelocityLayout.java:135) >> >> at org.infohazard.maverick.flow.CommandBase.go(CommandBase.java:79) >> >> at org.infohazard.maverick.Dispatcher.service(Dispatcher.java:345) >> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) >> >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) >> >> >> at >> >> net.sf.acegisecurity.ui.AbstractIntegrationFilter.doFilter(AbstractIntegrationFilter.java:170) >> >> >> at >> >> com.sony.soe.guilds.controller.SecurityFilter.doFilter(SecurityFilter.java:118) >> >> >> at >> >> net.sf.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:88) >> >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) >> >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) >> >> >> at >> >> org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:17 >> >> >> 1) >> >> at >> >> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) >> >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) >> >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) >> >> >> at >> >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> >> >> at >> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> >> >> at >> >> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) >> >> >> at >> >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> >> >> at >> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> >> >> at >> >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> >> >> at >> >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) >> >> >> at >> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> >> >> at >> >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> >> >> at >> >> org.apache.catalina.valves.RequestDumperValve.invoke(RequestDumperValve.java:169) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) >> >> >> at >> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> >> >> at >> >> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) >> >> at >> >> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) >> >> at >> >> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:296) >> >> at >> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:372) >> >> at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:694) >> >> at >> >> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:626) >> >> >> at >> org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:807) >> >> at >> >> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644) >> >> >> at java.lang.Thread.run(Thread.java:534) >> >> ----------------------------------------- >> >> Andres March >> >> Platform - Apps Engineering >> >> Sony Online Entertainment >> >> desk: 858.577.3373 >> >> cell: 619.519.1519 >> > > > ------------------------------------------------------- > This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting > Tool for open source databases. Create drag-&-drop reports. Save time > by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. > Download a FREE copy at http://www.intelliview.com/go/osdn_nl > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > |
|
From: Matt S. <sga...@us...> - 2005-01-29 19:44:03
|
Even if this were the case, wouldn't the OpenSessionInViewFilter overwrite the errant ThreadLocal on the next request? Matt Rob Harrop wrote: > It seems unlikely that this is a problem with Spring - those threads are > created by Tomcat and not Spring. I am wondering however if at that > level of load the ThreadLocal stuff isn't getting cleared somehow when a > thread is put back in the pool? Is this possible? > > Rob > > March, Andres wrote: > >> Unfortunately, this is not the case here. We are using jmeter with >> unauthenticated requests and therefore put nothing in the httpsession. >> Additionally, your example should take place with as little as 2 >> requests: one fetching the object and sticking it into the >> HttpSession, the other trying to initialize its collections. In our >> case, we have to create a decent amount of load (~30 pages/sec) for >> the errors to occur. Any other ideas? >> >> ------------------------------------------------------------------------ >> >> *From:* spr...@li... >> [mailto:spr...@li...] *On >> Behalf Of *Juergen Hoeller >> *Sent:* Saturday, January 29, 2005 2:44 AM >> *To:* spr...@li... >> *Subject:* RE: [Springframework-developer] Non Thread-safe hibernate >> session >> >> Actually, this can happen without either Spring or the ThreadLocal >> mechanism breaking: One of your persistent objects might hold a lazy >> persistent collection, which holds a reference to the Session that >> originally loaded it. >> >> If you put such a persistent object into the HttpSession, for example, >> the original request that loaded the object (in thread TPProcessor1) >> will have completed and thus the Hibernate Session have been closed. >> Now, if you take your persistent object out of the HttpSession again >> in a new request (in thread TPProcessor7) and try to access it lazy >> collection, it's gonna fail because the original Session has been closed. >> >> So the "leak" where a Session reference got out of its original >> request/thread context is your persistent object in the HttpSession >> here. This is a well-known problem: To make lazy loading work here, >> you need to attach the persistent object to the new Hibernate Session >> (via lock or saveOrUpdate). >> >> Juergen >> >> -----Original Message----- >> *From:* spr...@li... >> [mailto:spr...@li...]*On >> Behalf Of *March, Andres >> *Sent:* Friday, January 28, 2005 8:27 PM >> *To:* spr...@li... >> *Subject:* [Springframework-developer] Non Thread-safe hibernate >> session >> >> As you can see below, a thread, other than the one that had the >> session created for it, tries to access a session but it has been >> closed by the valid owner thread. This only occurs under decent >> load. There must be some thread safety issue in Spring or the >> whole ThreadLocal idea goes out the window. Does anybody have any >> idea how this could occur? I don’t see how I could be >> misinterpreting this trace. >> >> FATAL (SessionImpl.java:528) - Constructor for session: >> net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor1 >> >> FATAL (SessionFactoryImpl.java:342) - Session : >> net.sf.hibernate.impl.SessionImpl@b72884 created for Thread : >> TP-Processor1 >> >> …later on… >> >> closing session : net.sf.hibernate.impl.SessionImpl@b72884 and >> conn: com.mchange.v2.c3p0.impl.NewProxyConnection@4ad009 on Thread >> : TP-Processor1 >> >> …later on… >> >> net.sf.hibernate.HibernateException: Session is closed : >> net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor7 >> >> at >> net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3313) >> >> at >> >> net.sf.hibernate.proxy.LazyInitializer.initialize(LazyInitializer.java:47) >> >> >> at >> >> net.sf.hibernate.proxy.LazyInitializer.initializeWrapExceptions(LazyInitializer.java:60) >> >> >> at >> >> net.sf.hibernate.proxy.LazyInitializer.getImplementation(LazyInitializer.java:164) >> >> >> at >> >> net.sf.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:108) >> >> >> at >> >> com.sony.soe.guilds.model.GameCharacter$$EnhancerByCGLIB$$25b6cd13.getBioImage(<generated>) >> >> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> >> at >> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> >> >> at >> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> >> >> at java.lang.reflect.Method.invoke(Method.java:324) >> >> at >> >> org.apache.velocity.runtime.parser.node.PropertyExecutor.execute(PropertyExecutor.java:111) >> >> >> at >> >> org.apache.velocity.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:300) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentifier.java:157) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:175) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReference.java:307) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTNotNode.evaluate(ASTNotNode.java:47) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpression.java:46) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:69) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:231) >> >> >> at org.apache.velocity.runtime.directive.Parse.render(Parse.java:181) >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:116) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56) >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:71) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56) >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:71) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:231) >> >> >> at org.apache.velocity.runtime.directive.Parse.render(Parse.java:181) >> >> at >> >> org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:116) >> >> >> at >> >> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:231) >> >> >> at org.apache.velocity.Template.merge(Template.java:256) >> >> at com.sony.soe.web.mvc.VelocityView.go(VelocityView.java:181) >> >> at >> com.sony.soe.guilds.view.VelocityLayout.go(VelocityLayout.java:135) >> >> at org.infohazard.maverick.flow.CommandBase.go(CommandBase.java:79) >> >> at org.infohazard.maverick.Dispatcher.service(Dispatcher.java:345) >> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) >> >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) >> >> >> at >> >> net.sf.acegisecurity.ui.AbstractIntegrationFilter.doFilter(AbstractIntegrationFilter.java:170) >> >> >> at >> >> com.sony.soe.guilds.controller.SecurityFilter.doFilter(SecurityFilter.java:118) >> >> >> at >> >> net.sf.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:88) >> >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) >> >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) >> >> >> at >> >> org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:17 >> >> >> 1) >> >> at >> >> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) >> >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) >> >> >> at >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) >> >> >> at >> >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> >> >> at >> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> >> >> at >> >> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) >> >> >> at >> >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> >> >> at >> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> >> >> at >> >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve..java:137) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> >> >> at >> >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve..java:117) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) >> >> >> at >> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> >> >> at >> >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >> >> >> at >> >> org.apache.catalina.valves.RequestDumperValve.invoke(RequestDumperValve.java:169) >> >> >> at >> >> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) >> >> >> at >> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >> >> >> at >> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) >> >> at >> >> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) >> >> at >> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:296) >> >> at >> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:372) >> >> at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:694) >> >> at >> >> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:626) >> >> >> at >> org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:807) >> >> at >> >> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644) >> >> >> at java.lang.Thread.run(Thread.java:534) >> >> ----------------------------------------- >> >> Andres March >> >> Platform - Apps Engineering >> >> Sony Online Entertainment >> >> desk: 858.577.3373 >> >> cell: 619.519.1519 >> > > > ------------------------------------------------------- > This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting > Tool for open source databases. Create drag-&-drop reports. Save time > by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. > Download a FREE copy at http://www.intelliview.com/go/osdn_nl |
|
From: Rob H. <ro...@ca...> - 2005-01-29 19:15:47
|
It seems unlikely that this is a problem with Spring - those threads are created by Tomcat and not Spring. I am wondering however if at that level of load the ThreadLocal stuff isn't getting cleared somehow when a thread is put back in the pool? Is this possible? Rob March, Andres wrote: > Unfortunately, this is not the case here. We are using jmeter with > unauthenticated requests and therefore put nothing in the httpsession. > Additionally, your example should take place with as little as 2 > requests: one fetching the object and sticking it into the > HttpSession, the other trying to initialize its collections. In our > case, we have to create a decent amount of load (~30 pages/sec) for > the errors to occur. Any other ideas? > > ------------------------------------------------------------------------ > > *From:* spr...@li... > [mailto:spr...@li...] *On > Behalf Of *Juergen Hoeller > *Sent:* Saturday, January 29, 2005 2:44 AM > *To:* spr...@li... > *Subject:* RE: [Springframework-developer] Non Thread-safe hibernate > session > > Actually, this can happen without either Spring or the ThreadLocal > mechanism breaking: One of your persistent objects might hold a lazy > persistent collection, which holds a reference to the Session that > originally loaded it. > > If you put such a persistent object into the HttpSession, for example, > the original request that loaded the object (in thread TPProcessor1) > will have completed and thus the Hibernate Session have been closed. > Now, if you take your persistent object out of the HttpSession again > in a new request (in thread TPProcessor7) and try to access it lazy > collection, it's gonna fail because the original Session has been closed. > > So the "leak" where a Session reference got out of its original > request/thread context is your persistent object in the HttpSession > here. This is a well-known problem: To make lazy loading work here, > you need to attach the persistent object to the new Hibernate Session > (via lock or saveOrUpdate). > > Juergen > > -----Original Message----- > *From:* spr...@li... > [mailto:spr...@li...]*On > Behalf Of *March, Andres > *Sent:* Friday, January 28, 2005 8:27 PM > *To:* spr...@li... > *Subject:* [Springframework-developer] Non Thread-safe hibernate > session > > As you can see below, a thread, other than the one that had the > session created for it, tries to access a session but it has been > closed by the valid owner thread. This only occurs under decent > load. There must be some thread safety issue in Spring or the > whole ThreadLocal idea goes out the window. Does anybody have any > idea how this could occur? I don’t see how I could be > misinterpreting this trace. > > FATAL (SessionImpl.java:528) - Constructor for session: > net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor1 > > FATAL (SessionFactoryImpl.java:342) - Session : > net.sf.hibernate.impl.SessionImpl@b72884 created for Thread : > TP-Processor1 > > …later on… > > closing session : net.sf.hibernate.impl.SessionImpl@b72884 and > conn: com.mchange.v2.c3p0.impl.NewProxyConnection@4ad009 on Thread > : TP-Processor1 > > …later on… > > net.sf.hibernate.HibernateException: Session is closed : > net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor7 > > at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3313) > > at > net.sf.hibernate.proxy.LazyInitializer.initialize(LazyInitializer.java:47) > > at > net.sf.hibernate.proxy.LazyInitializer.initializeWrapExceptions(LazyInitializer.java:60) > > at > net.sf.hibernate.proxy.LazyInitializer.getImplementation(LazyInitializer.java:164) > > at > net.sf.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:108) > > at > com.sony.soe.guilds.model.GameCharacter$$EnhancerByCGLIB$$25b6cd13.getBioImage(<generated>) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:324) > > at > org.apache.velocity.runtime.parser.node.PropertyExecutor.execute(PropertyExecutor.java:111) > > at > org.apache.velocity.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:300) > > at > org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentifier.java:157) > > at > org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:175) > > at > org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReference.java:307) > > at > org.apache.velocity.runtime.parser.node.ASTNotNode.evaluate(ASTNotNode.java:47) > > at > org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpression.java:46) > > at > org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:69) > > at > org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:231) > > at org.apache.velocity.runtime.directive.Parse.render(Parse.java:181) > > at > org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:116) > > at > org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56) > > at > org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:71) > > at > org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56) > > at > org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:71) > > at > org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:231) > > at org.apache.velocity.runtime.directive.Parse.render(Parse.java:181) > > at > org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:116) > > at > org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:231) > > at org.apache.velocity.Template.merge(Template.java:256) > > at com.sony.soe.web.mvc.VelocityView.go(VelocityView.java:181) > > at com.sony.soe.guilds.view.VelocityLayout.go(VelocityLayout.java:135) > > at org.infohazard.maverick.flow.CommandBase.go(CommandBase.java:79) > > at org.infohazard.maverick.Dispatcher.service(Dispatcher.java:345) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) > > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) > > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) > > at > net.sf.acegisecurity.ui.AbstractIntegrationFilter.doFilter(AbstractIntegrationFilter.java:170) > > at > com.sony.soe.guilds.controller.SecurityFilter.doFilter(SecurityFilter.java:118) > > at > net.sf.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:88) > > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) > > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) > > at > org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:17 > > 1) > > at > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) > > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) > > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) > > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) > > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > > at > org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) > > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) > > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) > > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) > > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) > > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > > at > org.apache.catalina.valves.RequestDumperValve.invoke(RequestDumperValve.java:169) > > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) > > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) > > at > org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) > > at > org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:296) > > at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:372) > > at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:694) > > at > org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:626) > > at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:807) > > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644) > > at java.lang.Thread.run(Thread.java:534) > > ----------------------------------------- > > Andres March > > Platform - Apps Engineering > > Sony Online Entertainment > > desk: 858.577.3373 > > cell: 619.519.1519 > |
|
From: Juergen H. <ju...@in...> - 2005-01-29 19:12:41
|
OK... Nevertheless, it obviously happens in a lazy-initializing proxy
reference in a Hibernate-persisted object, which keeps its own Hibernate
Session internally rather than taking the current thread-bound one. Such an
object carries around its own Session even when accessed by some other
thread.
I bet that your application puts a persistent object somewhere where it can
get accessed by other threads, so those other threads implicitly access the
Session held in the persistent object through the Hibermate-generated CGLIB
proxy for loading. Maybe some code sticks a persistent object into an
instance variable of a Servlet, Controller or singleton service bean, which
are not thread-safe - but which will usually just cause actual issues in a
heavily-loaded scenario.
In total, I'm 99% sure that ThreadLocals and Spring's association of
Sessions with threads does *not* have anything to do with this. Try to find
out the expression in your Velocity template that causes the lazy-init
exception. It should be quite straightforward to track down where that
object came from.
Juergen
-----Original Message-----
From: spr...@li...
[mailto:spr...@li...]On Behalf Of
March, Andres
Sent: Saturday, January 29, 2005 7:55 PM
To: spr...@li...
Subject: RE: [Springframework-developer] Non Thread-safe hibernate session
Unfortunately, this is not the case here. We are using jmeter with
unauthenticated requests and therefore put nothing in the httpsession.
Additionally, your example should take place with as little as 2 requests:
one fetching the object and sticking it into the HttpSession, the other
trying to initialize its collections. In our case, we have to create a
decent amount of load (~30 pages/sec) for the errors to occur. Any other
ideas?
----------------------------------------------------------------------------
--
From: spr...@li...
[mailto:spr...@li...] On Behalf Of
Juergen Hoeller
Sent: Saturday, January 29, 2005 2:44 AM
To: spr...@li...
Subject: RE: [Springframework-developer] Non Thread-safe hibernate session
Actually, this can happen without either Spring or the ThreadLocal
mechanism breaking: One of your persistent objects might hold a lazy
persistent collection, which holds a reference to the Session that
originally loaded it.
If you put such a persistent object into the HttpSession, for example, the
original request that loaded the object (in thread TPProcessor1) will have
completed and thus the Hibernate Session have been closed. Now, if you take
your persistent object out of the HttpSession again in a new request (in
thread TPProcessor7) and try to access it lazy collection, it's gonna fail
because the original Session has been closed.
So the "leak" where a Session reference got out of its original
request/thread context is your persistent object in the HttpSession here.
This is a well-known problem: To make lazy loading work here, you need to
attach the persistent object to the new Hibernate Session (via lock or
saveOrUpdate).
Juergen
-----Original Message-----
From: spr...@li...
[mailto:spr...@li...]On Behalf Of
March, Andres
Sent: Friday, January 28, 2005 8:27 PM
To: spr...@li...
Subject: [Springframework-developer] Non Thread-safe hibernate session
As you can see below, a thread, other than the one that had the session
created for it, tries to access a session but it has been closed by the
valid owner thread. This only occurs under decent load. There must be some
thread safety issue in Spring or the whole ThreadLocal idea goes out the
window. Does anybody have any idea how this could occur? I don't see how I
could be misinterpreting this trace.
FATAL (SessionImpl.java:528) - Constructor for session:
net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor1
FATAL (SessionFactoryImpl.java:342) - Session :
net.sf.hibernate.impl.SessionImpl@b72884 created for Thread : TP-Processor1
.later on.
closing session : net.sf.hibernate.impl.SessionImpl@b72884 and conn:
com.mchange.v2.c3p0.impl.NewProxyConnection@4ad009 on Thread : TP-Processor1
.later on.
net.sf.hibernate.HibernateException: Session is closed :
net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor7
at
net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3313)
at
net.sf.hibernate.proxy.LazyInitializer.initialize(LazyInitializer.java:47)
at
net.sf.hibernate.proxy.LazyInitializer.initializeWrapExceptions(LazyInitiali
zer.java:60)
at
net.sf.hibernate.proxy.LazyInitializer.getImplementation(LazyInitializer.jav
a:164)
at
net.sf.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.j
ava:108)
at
com.sony.soe.guilds.model.GameCharacter$$EnhancerByCGLIB$$25b6cd13.getBioIma
ge(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.apache.velocity.runtime.parser.node.PropertyExecutor.execute(PropertyExe
cutor.java:111)
at
org.apache.velocity.util.introspection.UberspectImpl$VelGetterImpl.invoke(Ub
erspectImpl.java:300)
at
org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentifier.
java:157)
at
org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.ja
va:175)
at
org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReference.j
ava:307)
at
org.apache.velocity.runtime.parser.node.ASTNotNode.evaluate(ASTNotNode.java:
47)
at
org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpression
.java:46)
at
org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement
.java:69)
at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:23
1)
at
org.apache.velocity.runtime.directive.Parse.render(Parse.java:181)
at
org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.jav
a:116)
at
org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56)
at
org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement
.java:71)
at
org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56)
at
org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement
.java:71)
at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:23
1)
at
org.apache.velocity.runtime.directive.Parse.render(Parse.java:181)
at
org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.jav
a:116)
at
org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:23
1)
at org.apache.velocity.Template.merge(Template.java:256)
at com.sony.soe.web.mvc.VelocityView.go(VelocityView.java:181)
at
com.sony.soe.guilds.view.VelocityLayout.go(VelocityLayout.java:135)
at
org.infohazard.maverick.flow.CommandBase.go(CommandBase.java:79)
at
org.infohazard.maverick.Dispatcher.service(Dispatcher.java:345)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:237)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:157)
at
net.sf.acegisecurity.ui.AbstractIntegrationFilter.doFilter(AbstractIntegrati
onFilter.java:170)
at
com.sony.soe.guilds.controller.SecurityFilter.doFilter(SecurityFilter.java:1
18)
at
net.sf.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:
88)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:186)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:157)
at
org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterIn
ternal(OpenSessionInViewFilter.java:17
1)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestF
ilter.java:76)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:186)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:157)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:214)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContext
Valve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:152)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137
)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117
)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.valves.RequestDumperValve.invoke(RequestDumperValve.java
:169)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:296)
at
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:372)
at
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:694)
at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:626)
at
org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:807)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:644)
at java.lang.Thread.run(Thread.java:534)
-----------------------------------------
Andres March
Platform - Apps Engineering
Sony Online Entertainment
desk: 858.577.3373
cell: 619.519.1519
|
|
From: March, A. <am...@so...> - 2005-01-29 18:55:18
|
Unfortunately, this is not the case here. We are using jmeter with unauthenticated requests and therefore put nothing in the httpsession. Additionally, your example should take place with as little as 2 requests: one fetching the object and sticking it into the HttpSession, the other trying to initialize its collections. In our case, we have to create a decent amount of load (~30 pages/sec) for the errors to occur. Any other ideas? =20 ________________________________ From: spr...@li... [mailto:spr...@li...] On Behalf Of Juergen Hoeller Sent: Saturday, January 29, 2005 2:44 AM To: spr...@li... Subject: RE: [Springframework-developer] Non Thread-safe hibernate session =20 Actually, this can happen without either Spring or the ThreadLocal mechanism breaking: One of your persistent objects might hold a lazy persistent collection, which holds a reference to the Session that originally loaded it. =20 If you put such a persistent object into the HttpSession, for example, the original request that loaded the object (in thread TPProcessor1) will have completed and thus the Hibernate Session have been closed. Now, if you take your persistent object out of the HttpSession again in a new request (in thread TPProcessor7) and try to access it lazy collection, it's gonna fail because the original Session has been closed. =20 So the "leak" where a Session reference got out of its original request/thread context is your persistent object in the HttpSession here. This is a well-known problem: To make lazy loading work here, you need to attach the persistent object to the new Hibernate Session (via lock or saveOrUpdate). =20 Juergen =20 =20 -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of March, Andres Sent: Friday, January 28, 2005 8:27 PM To: spr...@li... Subject: [Springframework-developer] Non Thread-safe hibernate session As you can see below, a thread, other than the one that had the session created for it, tries to access a session but it has been closed by the valid owner thread. This only occurs under decent load. There must be some thread safety issue in Spring or the whole ThreadLocal idea goes out the window. Does anybody have any idea how this could occur? I don't see how I could be misinterpreting this trace. =20 FATAL (SessionImpl.java:528) - Constructor for session: net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor1 FATAL (SessionFactoryImpl.java:342) - Session : net.sf.hibernate.impl.SessionImpl@b72884 created for Thread : TP-Processor1 ...later on...=20 closing session : net.sf.hibernate.impl.SessionImpl@b72884 and conn: com.mchange.v2.c3p0.impl.NewProxyConnection@4ad009 on Thread : TP-Processor1 ...later on... net.sf.hibernate.HibernateException: Session is closed : net.sf.hibernate.impl.SessionImpl@b72884 on thread : TP-Processor7 at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3313) at net.sf.hibernate.proxy.LazyInitializer.initialize(LazyInitializer.java:4 7) at net.sf.hibernate.proxy.LazyInitializer.initializeWrapExceptions(LazyInit ializer.java:60) at net.sf.hibernate.proxy.LazyInitializer.getImplementation(LazyInitializer .java:164) at net.sf.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializ er.java:108) at com.sony.soe.guilds.model.GameCharacter$$EnhancerByCGLIB$$25b6cd13.getBi oImage(<generated>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.velocity.runtime.parser.node.PropertyExecutor.execute(Propert yExecutor.java:111) at org.apache.velocity.util.introspection.UberspectImpl$VelGetterImpl.invok e(UberspectImpl.java:300) at org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentif ier.java:157) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReferenc e.java:175) at org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReferen ce.java:307) at org.apache.velocity.runtime.parser.node.ASTNotNode.evaluate(ASTNotNode.j ava:47) at org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpres sion.java:46) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfState ment.java:69) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.jav a:231) at org.apache.velocity.runtime.directive.Parse.render(Parse.java:181) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective .java:116) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56 ) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfState ment.java:71) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:56 ) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfState ment.java:71) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.jav a:231) at org.apache.velocity.runtime.directive.Parse.render(Parse.java:181) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective .java:116) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.jav a:231) at org.apache.velocity.Template.merge(Template.java:256) at com.sony.soe.web.mvc.VelocityView.go(VelocityView.java:181) at com.sony.soe.guilds.view.VelocityLayout.go(VelocityLayout.java:135) at org.infohazard.maverick.flow.CommandBase.go(CommandBase.java:79) at org.infohazard.maverick.Dispatcher.service(Dispatcher.java:345) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:157) at net.sf.acegisecurity.ui.AbstractIntegrationFilter.doFilter(AbstractInteg rationFilter.java:170) at com.sony.soe.guilds.controller.SecurityFilter.doFilter(SecurityFilter.ja va:118) at net.sf.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.j ava:88) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:157) at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilt erInternal(OpenSessionInViewFilter.java:17 1) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequ estFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon textValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :117) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:104) at org.apache.catalina.valves.RequestDumperValve.invoke(RequestDumperValve. java:169) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo ntext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5 20) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:296) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:372) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:694) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java: 626) at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:807) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool .java:644) at java.lang.Thread.run(Thread.java:534) =20 ----------------------------------------- Andres March Platform - Apps Engineering Sony Online Entertainment desk: 858.577.3373 cell: 619.519.1519 =20 |
|
From: jbetancourt <jbe...@co...> - 2005-01-29 16:55:42
|
Why not just go a little further and provide a generic IoC interface? That
is, a way for any IoC Container (IoCC) to interact with another.
Though there are only a few IoCCs now, there may be more later, or there may
be things that are similar, like EJB3 stuff. As with hierarchical
containers, you sometimes don't care which level a bean comes from, you also
don't care which container is really providing a service. Thus, an
application could possibly mix container frameworks and target them where
they provide more value-add. Sounds unlikely I guess.
----- Original Message -----
From: "Colin Sampaleanu" <col...@ex...>
To: <spr...@li...>
Sent: Saturday, January 29, 2005 10:13 AM
Subject: Re: [Springframework-developer] Spring / HiveMind Integration
> Yes, I have to agree this probably makes sense... It's a little less
> convenient, but resolves versioning issues. One question is whether you
> can do a good enough integration that way, but I would that would not be
> an issue, it's not like you want to make one container dependent on the
> other anyway at it's core, so any integration should be at a higher level.
>
>
> Juergen Hoeller wrote:
>
> >I was mainly wondering whether it makes sense to separate HiveMind/Spring
> >integration and Spring/HiveMind integration... Shouldn't we put both into
> >the *same* distribution?
> >
> >Juergen
> >
> >
> >-----Original Message-----
> >From: spr...@li...
> >[mailto:spr...@li...]On Behalf
> >Of Rob Harrop
> >Sent: Saturday, January 29, 2005 3:27 PM
> >To: spr...@li...
> >Subject: Re: [Springframework-developer] Spring / HiveMind Integration
> >
> >
> >I was thinking of distributing this as one of the first things in the a
> >separate project containing extensions and add-ons to Spring. I've been
> >working on a couple of other modules as well which I think should be
> >kept separate from the core.
> >
> >Rob
> >
> >Juergen Hoeller wrote:
> >
> >
> >
> >>I guess the problem is also about shipping. If HiveMind ships with
Spring,
> >>and Spring would then ship with HiveMind too, it seems to me that we
could
> >>simplify this: Why not put all Spring/HiveMind integration code into
> >>HiveMind Extras or a Spring-HiveMind project or the like? There would a
> >>single place to maintain both ways of integration then, for specific
> >>versions of Spring and HiveMind.
> >>
> >>Even if we included HiveMind integration in Spring, we would have to do
> >>
> >>
> >this
> >
> >
> >>in a separate distribution, Spring Extras or whatever it would be
called.
> >>
> >>
> >It
> >
> >
> >>is certainly not feasible to extend the dependencies of the core Spring
> >>distribution to integration with other lightweight containers, given
that
> >>
> >>
> >we
> >
> >
> >>already ship all sorts of persistence and web view libraries etc.
> >>
> >>Juergen
> >>
> >>
> >>-----Original Message-----
> >>From: spr...@li...
> >>[mailto:spr...@li...]On Behalf
> >>Of Rob Harrop
> >>Sent: Saturday, January 29, 2005 2:54 PM
> >>To: spr...@li...
> >>Subject: Re: [Springframework-developer] Spring / HiveMind Integration
> >>
> >>
> >>That is a concern, and I guess we could put in hooks to prevent this -
> >>but I think it is probably simpler to say "Don't do this!".
> >>
> >>Rob
> >>
> >>Colin Sampaleanu wrote:
> >>
> >>
> >>
> >>
> >>
> >>>I'm not sure it really matters, but given that Hivemind already has
> >>>Spring integration code, and we are talking about Hivemind
> >>>integration code for Spring, nobody has mentioned that we're going to
> >>>end up with a circular dependency here... There are some potential
> >>>versioning issues, but I guess they are a concern if you want to call
> >>>
> >>>
> >>>from Spring to Hivemind back to Spring, or Hivemind to Spring back to
> >>
> >>
> >>>Hivemind...
> >>>
> >>>Rob Harrop wrote:
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>>Howard,
> >>>>
> >>>>I think it will be quite simple to integrate HiveMind services into
> >>>>Spring. As I see it we need a HiveMindRegistryFactoryBean to create
> >>>>the Registry instance and then a HiveMindServiceFactoryBean that uses
> >>>>the Registry to lookup a given service. By default the
> >>>>HiveMindServiceFactoryBean would use the Spring bean name to lookup a
> >>>>service in the Registry, but users could configure a different
> >>>>service name using DI. With this mechanism, users can create one
> >>>>instance of Registry within a Spring application and then access many
> >>>>services from that Registry.
> >>>>
> >>>>If I have time today, I'll work on this. If not, I'll work on it next
> >>>>week some time.
> >>>>
> >>>>Rob
> >>>>
> >>>>Howard Lewis Ship wrote:
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>This comes up quite a bit, they are similiar in intent but quite
> >>>>>different in execution.
> >>>>>
> >>>>>- HiveMind has a very sophisiticated configurations model (very
> >>>>>similar to Eclipse plugins) based on configuration points and
> >>>>>contributions (from multiple locations)
> >>>>>- HiveMind is the infrastructure for Tapestry 3.1, and many Tapestry
> >>>>>applications also use Spring
> >>>>>- Because Rod and I (and the other Spring team member's I've talked
> >>>>>to) want to foster cooperation and compatability rather than
> >>>>>competition
> >>>>>
> >>>>>
> >>>>>On Fri, 28 Jan 2005 10:47:48 +1100, Mason, Ross
> >>>>><ros...@vi...> wrote:
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>Hi Howard,
> >>>>>>
> >>>>>>What is the use case for integrating HiveMind and Spring? I must
> >>>>>>admit I haven't had a chance to get a good look at HiveMind, but my
> >>>>>>understanding is that it is a DI container that provides service
> >>>>>>wiring and interception, much in the same vein as the Spring
> >>>>>>Container. From the outset the two containers seem to be mutally
> >>>>>>exclusive rather than complimentary.
> >>>>>>
> >>>>>>Can you shed some light on this for me?
> >>>>>>
> >>>>>>Cheers,
> >>>>>>
> >>>>>>Ross
> >>>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: spr...@li...
> >>>>>>on behalf of Howard Lewis Ship
> >>>>>> Sent: Wed 26/01/2005 2:46 PM
> >>>>>> To: spr...@li...
> >>>>>> Cc:
> >>>>>> Subject: [Springframework-developer] Spring / HiveMind
> >>>>>>Integration
> >>>>>>
> >>>>>> Since HiveMind 1.0, and improved in HiveMind 1.1, there's
> >>>>>>been basic
> >>>>>> integration between HiveMind and Spring.
> >>>>>>
> >>>>>> At the core of it is the ability to define a HiveMind
> >>>>>>service in terms
> >>>>>> of a Spring bean within a BeanFactory. The essential code is:
> >>>>>>
> >>>>>> public Object createCoreServiceImplementation(
> >>>>>> ServiceImplementationFactoryParameters
> >>>>>>factoryParameters)
> >>>>>> {
> >>>>>> SpringBeanParameter p = (SpringBeanParameter)
> >>>>>> factoryParameters.getFirstParameter();
> >>>>>> String beanName = p.getName();
> >>>>>>
> >>>>>> BeanFactory f = p.getBeanFactory();
> >>>>>>
> >>>>>> if (f == null)
> >>>>>> f = _defaultBeanFactory;
> >>>>>>
> >>>>>> return f.getBean(beanName,
> >>>>>>factoryParameters.getServiceInterface());
> >>>>>> }
> >>>>>>
> >>>>>> With this, its possible to obtain a Spring bean and the core
> >>>>>>service
> >>>>>> implementation of a HiveMind service. The implementation
> >>>>>>can be
> >>>>>> extended with interceptors and injected into other HiveMind
> >>>>>>services.
> >>>>>>
> >>>>>> At Javapolis, I talked with Rod about having something
> >>>>>>similar going
> >>>>>> the other direction, allowing HiveMind services to be
> >>>>>>referencable
> >>>>>> (and injectable) as Spring beans. I'd like to provoke a
> >>>>>>discussion on
> >>>>>> what that would look like, and what API changes would be
> >>>>>>needed in
> >>>>>> HiveMind 1.1 to support it.
> >>>>>>
> >>>>>> Rod seemed to think (and I didn't follow the reasoning) that
> >>>>>>HiveMind
> >>>>>> would need an API to iterate over the names of all services.
> >>>>>>
> >>>>>> In addition, configuration data (in either List or Map form)
> >>>>>>is also
> >>>>>> quite valuable and something that Spring beans would like to
> >>>>>>have
> >>>>>> access to.
> >>>>>>
> >>>>>> --
> >>>>>> Howard M. Lewis Ship
> >>>>>> Independent J2EE / Open-Source Java Consultant
> >>>>>> Creator, Jakarta Tapestry
> >>>>>> Creator, Jakarta HiveMind
> >>>>>>
> >>>>>> Professional Tapestry training, mentoring, support
> >>>>>> and project work. http://howardlewisship.com
> >>>>>>
> >>>>>>
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
> Tool for open source databases. Create drag-&-drop reports. Save time
> by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
> Download a FREE copy at http://www.intelliview.com/go/osdn_nl
> _______________________________________________
> Springframework-developer mailing list
> Spr...@li...
> https://lists.sourceforge.net/lists/listinfo/springframework-developer
>
|