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: Patrick L. <pli...@gm...> - 2005-01-13 17:02:10
|
Hey guys -- I'm just lurking but I thought I'd chime in: Disable anonymous comments and also turn off the trackback list -- that will take care of 99% of it. As for your blog, rename the comment CGI script -- it works wonders :) Patrick On Thu, 13 Jan 2005 09:26:01 -0500, Colin Sampaleanu <col...@ex...> wrote: > It's distressing that things have gotten to this state with spam (on my > blog, I have to kill about 5-10 spams in the moderation queue every day, > seems like absolutely every possible venue for spaming is being > exploited). I agree about turning off anonymous posts. > > > Pieter Coucke wrote: > > >I already reported this some time ago. It's almost becoming a daily task > >for me... > >Every time I visit the wiki, I clean up spam that I find. New spam can > >quickly be found from the wiki homepage (new posts). It seems that > >especially the RCP project is targeted. > > > >I suggest to disable anonymous posts/comments. > > > > > > > > > >Darren Davison said: > > > > > >>Some of the pages in confluence have recently been updated with chinese > >>(surprise) spam. One is > >><http://opensource.atlassian.com/confluence/spring/display/RCP/Home> I > >>don't > >>know how many more.. > >> > >>-- > >>Darren Davison > >>Public Key: #DD356B0D > >> > >> > >> > >> > >>------------------------------------------------------- > >>The SF.Net email is sponsored by: Beat the post-holiday blues > >>Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > >>It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > >>_______________________________________________ > >>Springframework-developer mailing list > >>Spr...@li... > >>https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> > >> > >> > > > > > > > >------------------------------------------------------- > >The SF.Net email is sponsored by: Beat the post-holiday blues > >Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > >It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > >_______________________________________________ > >Springframework-developer mailing list > >Spr...@li... > >https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > |
|
From: Colin S. <col...@ex...> - 2005-01-13 14:26:07
|
It's distressing that things have gotten to this state with spam (on my blog, I have to kill about 5-10 spams in the moderation queue every day, seems like absolutely every possible venue for spaming is being exploited). I agree about turning off anonymous posts. Pieter Coucke wrote: >I already reported this some time ago. It's almost becoming a daily task >for me... >Every time I visit the wiki, I clean up spam that I find. New spam can >quickly be found from the wiki homepage (new posts). It seems that >especially the RCP project is targeted. > >I suggest to disable anonymous posts/comments. > > > > >Darren Davison said: > > >>Some of the pages in confluence have recently been updated with chinese >>(surprise) spam. One is >><http://opensource.atlassian.com/confluence/spring/display/RCP/Home> I >>don't >>know how many more.. >> >>-- >>Darren Davison >>Public Key: #DD356B0D >> >> >> >> >>------------------------------------------------------- >>The SF.Net email is sponsored by: Beat the post-holiday blues >>Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. >>It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt >>_______________________________________________ >>Springframework-developer mailing list >>Spr...@li... >>https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> >> > > > >------------------------------------------------------- >The SF.Net email is sponsored by: Beat the post-holiday blues >Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. >It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt >_______________________________________________ >Springframework-developer mailing list >Spr...@li... >https://lists.sourceforge.net/lists/listinfo/springframework-developer > > |
|
From: Pieter C. <pie...@on...> - 2005-01-13 12:58:22
|
I already reported this some time ago. It's almost becoming a daily task for me... Every time I visit the wiki, I clean up spam that I find. New spam can quickly be found from the wiki homepage (new posts). It seems that especially the RCP project is targeted. I suggest to disable anonymous posts/comments. Darren Davison said: > > Some of the pages in confluence have recently been updated with chinese > (surprise) spam. One is > <http://opensource.atlassian.com/confluence/spring/display/RCP/Home> I > don't > know how many more.. > > -- > Darren Davison > Public Key: #DD356B0D > > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > |
|
From: Darren D. <da...@da...> - 2005-01-13 12:50:33
|
Some of the pages in confluence have recently been updated with chinese (surprise) spam. One is <http://opensource.atlassian.com/confluence/spring/display/RCP/Home> I do= n't know how many more.. --=20 Darren Davison Public Key: #DD356B0D |
|
From: Matt S. <sga...@us...> - 2005-01-13 12:16:24
|
Ah-hah... I missed that. Thanks, Matt Juergen Hoeller wrote: > The only reason for the "defaultAutoCommit()" and > "defaultTransactionIsolation()" is to deliberately *avoid* the JavaBean > property pattern here, as the return value does *not* match the type > accepted by "setDefaultAutoCommit" and "setDefaultTransactionIsolation" > (it's primitives for the setters, wrapper types for the accessors). > > Strictly speaking, we could still use "getDefaultAutoCommit()" and > "getDefaultTransactionIsolation()", because those accessors are protected > and wouldn't be detected by the JavaBeans Introspector (which just > introspects public methods) anyway. However, I considered it clearer to > still use different method names, indicating that those accessors are not > part of the bean properties defined by "setDefaultAutoCommit" and > "setDefaultTransactionIsolation". > > Of course, any name other than "getDefaultAutoCommit()" and > "getDefaultTransactionIsolation()" would have done the job. Because those > are just internal accessors to be called by LazyConnectionInvocationHandler, > I didn't worry too much about it :-) > > Juergen > > > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...]On Behalf > Of Matt Sgarlata > Sent: Thursday, January 13, 2005 5:53 AM > To: spr...@li... > Subject: [Springframework-developer] Re: Lazy transaction creation > > > The destroy-method fix is working for me in the nightly. For what it's > worth, I have a number of post processors and some AOP running too and > everything looks like it's working great in the nightly :) Thanks for > the fix! > > In LazyConnectionDataSourceProxy, how come you have defaultAutoCommit() > and defaultTransactionIsolation() methods instead of > getDefaultAutoCommit() and getDefaultTransactionIsolation()? That > really threw me through a loop because Spring made me start exposing > EVERYTHING as getter/setter pairs. Maybe I went overboard? ;) > > Matt > > Juergen Hoeller wrote: > >>Matt, >> >>Regarding the issue with custom destroy methods: Indeed, the bean factory >>looks for them on the exposed object rather than the originally defined > > one; > >>in your case, on the LazyConnectionDataSourceProxy instead of on the > > wrapped > >>BasicDataSource. >> >>This is not deliberate but rather an unfortunate side effect. I've just >>adapted AbstractAutowireCapableBeanFactory to detect this scenario and >>register the original bean objects as disposable beans (implementing >>DisposableBean or having defined a destroy-method) if necessary. The >>mechanism was already there, because of a similar problem with inner > > beans. > >>I'll commit the change today; please give the next nightly snapshot a try > > if > >>you have the chance! >> >>I'll also add lazy defaultAutoCommit/defaultTransactionIsolation checks to >>LazyConnectionDataSourceProxy, kicking in when the check on startup > > failed. > >>Note that you can also specify those defaults as bean properties: In that >>case, no check of a Connection will happen, as we assume that the > > specified > >>defaults match those of the target DataSource. >> >>Juergen >> >> >>-----Original Message----- >>From: spr...@li... >>[mailto:spr...@li...]On Behalf >>Of Matt Sgarlata >>Sent: Wednesday, January 12, 2005 1:31 AM >>To: spr...@li... >>Subject: [Springframework-developer] Re: Lazy transaction creation >> >> >>Juergen - >> >>The LazyConnectionDataSourceProxy works great :) I am using a >>BeanNameAutoProxyCreator to automatically apply transaction management >>to all of my Struts Actions, yet the Actions don't fail even if the >>actual database is not working, so long as they don't touch the database > > :) > >>One comment - I would suggest adding the ability for defaultAutoCommit >>and the defaultTransactionIsolation to be lazily fetched. I'm guessing >>you're doing an eager fetch in the afterPropertiesSet method so that >>only a single connection need be retrieved when the context is refreshed >>rather than one connection when defaultAutoCommit is lazily fetched and >>a separate one when defaultTransactionIsolation is lazily fetched. I >>think it would be best to have *both* your eager strategy and a lazy >>strategy available as a backup in case the eager strategy fails. That >>way, if the DB is down when the application starts up but comes on line >>later, the defaultAutoCommit and defaultTransactionIsolation will still >>get set correctly. >> >>I set up the LazyConnectionDataSourceProxy in the >>postProcessAfterInitialization method of a BeanPostProcessor (as >>suggested in the JavaDoc). However, when I refresh my application >>context I'm getting errors: >> >>ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't >>find a destroy method named 'close' on bean with name 'carlosPool' >>ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't >>find a destroy method named 'close' on bean with name 'dev2Pool' >>ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't >>find a destroy method named 'close' on bean with name 'devDatabasePool' >> >>Obviously the problem is that the ApplicationContext is attempting to >>call the close method of the LazyConnectionDataSourceProxy instead of >>the close method of my underlying >>org.apache.commons.dbcp.BasicDataSource. Is this considered a feature? >> I would think it would be better for the close method of the unproxied >>class to be invoked rather than the close method of the wrapper object >>created by the BeanPostProcessor. >> >>Matt >> >>Juergen Hoeller wrote: >> >> >>>Guys, >>> >>>Please check out the following issue that I've just addressed: >>> >>>http://opensource.atlassian.com/projects/spring/browse/SPR-572 >>> >>>As I said in my comment, I've been wondering about this for a while and >>>finally took the occasion to implement a generic solution for it. A >>>particularly nice side effect is that it allows for efficient >> >>transactional >> >> >>>reads with HibernateTransactionManager, avoiding database communication >>>overhead if everything can be resolved in the second-level cache! >>> >>>I'll commit this in a moment, so feel free to give it a try. >>> >>>Juergen >>> >>> >>> >>>------------------------------------------------------- >>>The SF.Net email is sponsored by: Beat the post-holiday blues >>>Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. >>>It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt >> >> >> >> >>------------------------------------------------------- >>The SF.Net email is sponsored by: Beat the post-holiday blues >>Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. >>It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt >>_______________________________________________ >>Springframework-developer mailing list >>Spr...@li... >>https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> >> >>------------------------------------------------------- >>The SF.Net email is sponsored by: Beat the post-holiday blues >>Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. >>It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt |
|
From: Rob H. <ro...@ca...> - 2005-01-13 11:08:44
|
All, I committed the JasperReports extensions a few days ago, along with the sample application. Do I need to to anything special to have the sample application included in the nightly build? Rob |
|
From: Juergen H. <ju...@in...> - 2005-01-13 09:04:32
|
The only reason for the "defaultAutoCommit()" and "defaultTransactionIsolation()" is to deliberately *avoid* the JavaBean property pattern here, as the return value does *not* match the type accepted by "setDefaultAutoCommit" and "setDefaultTransactionIsolation" (it's primitives for the setters, wrapper types for the accessors). Strictly speaking, we could still use "getDefaultAutoCommit()" and "getDefaultTransactionIsolation()", because those accessors are protected and wouldn't be detected by the JavaBeans Introspector (which just introspects public methods) anyway. However, I considered it clearer to still use different method names, indicating that those accessors are not part of the bean properties defined by "setDefaultAutoCommit" and "setDefaultTransactionIsolation". Of course, any name other than "getDefaultAutoCommit()" and "getDefaultTransactionIsolation()" would have done the job. Because those are just internal accessors to be called by LazyConnectionInvocationHandler, I didn't worry too much about it :-) Juergen -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of Matt Sgarlata Sent: Thursday, January 13, 2005 5:53 AM To: spr...@li... Subject: [Springframework-developer] Re: Lazy transaction creation The destroy-method fix is working for me in the nightly. For what it's worth, I have a number of post processors and some AOP running too and everything looks like it's working great in the nightly :) Thanks for the fix! In LazyConnectionDataSourceProxy, how come you have defaultAutoCommit() and defaultTransactionIsolation() methods instead of getDefaultAutoCommit() and getDefaultTransactionIsolation()? That really threw me through a loop because Spring made me start exposing EVERYTHING as getter/setter pairs. Maybe I went overboard? ;) Matt Juergen Hoeller wrote: > Matt, > > Regarding the issue with custom destroy methods: Indeed, the bean factory > looks for them on the exposed object rather than the originally defined one; > in your case, on the LazyConnectionDataSourceProxy instead of on the wrapped > BasicDataSource. > > This is not deliberate but rather an unfortunate side effect. I've just > adapted AbstractAutowireCapableBeanFactory to detect this scenario and > register the original bean objects as disposable beans (implementing > DisposableBean or having defined a destroy-method) if necessary. The > mechanism was already there, because of a similar problem with inner beans. > I'll commit the change today; please give the next nightly snapshot a try if > you have the chance! > > I'll also add lazy defaultAutoCommit/defaultTransactionIsolation checks to > LazyConnectionDataSourceProxy, kicking in when the check on startup failed. > Note that you can also specify those defaults as bean properties: In that > case, no check of a Connection will happen, as we assume that the specified > defaults match those of the target DataSource. > > Juergen > > > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...]On Behalf > Of Matt Sgarlata > Sent: Wednesday, January 12, 2005 1:31 AM > To: spr...@li... > Subject: [Springframework-developer] Re: Lazy transaction creation > > > Juergen - > > The LazyConnectionDataSourceProxy works great :) I am using a > BeanNameAutoProxyCreator to automatically apply transaction management > to all of my Struts Actions, yet the Actions don't fail even if the > actual database is not working, so long as they don't touch the database :) > > One comment - I would suggest adding the ability for defaultAutoCommit > and the defaultTransactionIsolation to be lazily fetched. I'm guessing > you're doing an eager fetch in the afterPropertiesSet method so that > only a single connection need be retrieved when the context is refreshed > rather than one connection when defaultAutoCommit is lazily fetched and > a separate one when defaultTransactionIsolation is lazily fetched. I > think it would be best to have *both* your eager strategy and a lazy > strategy available as a backup in case the eager strategy fails. That > way, if the DB is down when the application starts up but comes on line > later, the defaultAutoCommit and defaultTransactionIsolation will still > get set correctly. > > I set up the LazyConnectionDataSourceProxy in the > postProcessAfterInitialization method of a BeanPostProcessor (as > suggested in the JavaDoc). However, when I refresh my application > context I'm getting errors: > > ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't > find a destroy method named 'close' on bean with name 'carlosPool' > ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't > find a destroy method named 'close' on bean with name 'dev2Pool' > ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't > find a destroy method named 'close' on bean with name 'devDatabasePool' > > Obviously the problem is that the ApplicationContext is attempting to > call the close method of the LazyConnectionDataSourceProxy instead of > the close method of my underlying > org.apache.commons.dbcp.BasicDataSource. Is this considered a feature? > I would think it would be better for the close method of the unproxied > class to be invoked rather than the close method of the wrapper object > created by the BeanPostProcessor. > > Matt > > Juergen Hoeller wrote: > >>Guys, >> >>Please check out the following issue that I've just addressed: >> >>http://opensource.atlassian.com/projects/spring/browse/SPR-572 >> >>As I said in my comment, I've been wondering about this for a while and >>finally took the occasion to implement a generic solution for it. A >>particularly nice side effect is that it allows for efficient > > transactional > >>reads with HibernateTransactionManager, avoiding database communication >>overhead if everything can be resolved in the second-level cache! >> >>I'll commit this in a moment, so feel free to give it a try. >> >>Juergen >> >> >> >>------------------------------------------------------- >>The SF.Net email is sponsored by: Beat the post-holiday blues >>Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. >>It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Steven D. <ste...@gm...> - 2005-01-13 08:26:16
|
It's maybe more consistent to rename the classes to IntraVMInvokerProxyFactoryBean and IntraVMInvokerServiceExporter. I'm also thinking about creating a LocalInvokerProxyFactoryBean and LocalInvokerServiceInvoker. This would be especially handy in an EAR environment. A LocalInvocationMediator class could be part of Spring. This would allow you to get a proxy for a service from inside a session bean or message driven bean from the application context in the servlet context like this: MyService myService = (MyService)LocalInvokerProxyFactory.getProxy(MyService.class); This would effectively turn Spring into a very nice alternative/facade for JNDI. This could help migration projects from EJB to Spring significantly. On Wed, 12 Jan 2005 22:54:47 +0100, Steven Devijver <ste...@gm...> wrote: > I've got IntraVMProxyFactoryBean and IntraVMServiceExporter working. > The thing I forgot about is the fact that two classes cannot be equal > if they are not loaded by the same class loader so simply passing > object around between two web application contexts doesn't work. > > To work around this I serialize/de-serialize the RemoteInvocation and > RemoteInvocationResult instances. > > I'll be writing a user guide in the next few days and I'll try to find > out how to get the source in the sandbox in CVS. There's a jar file > that contains two classes that I'll be offering as a separate > distribution. This jar file needs to be loaded by the class loader > that is shared by the different web applications. > > > On Wed, 12 Jan 2005 17:41:45 +0100, Steven Devijver > <ste...@gm...> wrote: > > To the Spring team: could IntraVMProxyFactoryBean and > > IntraVMServiceExporter be added to the sandbox? They have a dependency > > on a separate jar which I will host elsewhere. I will also include a > > user guide. > > > > On Wed, 12 Jan 2005 15:06:44 -0000, Andre Vermeulen > > <ave...@su...> wrote: > > > I will look into the HttpInvokerProxyFactoryBean a bit... > > > > > > thx > > > > > > andre > > > > > > -----Original Message----- > > > From: spr...@li... > > > [mailto:spr...@li...]On Behalf > > > Of Steven Devijver > > > Sent: 12 January 2005 13:24 > > > To: spr...@li... > > > Subject: Re: [Springframework-developer] Fwd: application integration: > > > intra-VM remoting > > > > > > Andre, > > > > > > The two classes I've send are the proof-of-concept. You would need to > > > create a proxy factory bean and a service exporter. I use > > > HttpInvokerProxyFactoryBean and HttpInvokerServiceExporter as > > > examples. I'm planning to release this as a separate project. Since > > > you need to deploy this jar in a special way it cannot be part of the > > > Spring sandbox. > > > > > > Take a look here, it will be easier for you to copy the code: > > > > > > http://forum.springframework.org/viewtopic.php?t=2907 > > > > > > Steven > > > > > > On Wed, 12 Jan 2005 13:12:33 -0000, Andre Vermeulen > > > <ave...@su...> wrote: > > > > Hi Steven > > > > > > > > A very interesting idea... > > > > > > > > I was thinking about this exact thing a few weeks back. But didn't have a clue to go about... neither the time for r&d. > > > > If nothing else I might be able to help you test. > > > > > > > > Send your proof-of-concept on I would be very interested. > > > > > > > > regards > > > > > > > > andre > > > > > > > > > > > > -----Original Message----- > > > > From: spr...@li... > > > > [mailto:spr...@li...]On Behalf > > > > Of Steven Devijver > > > > Sent: 12 January 2005 12:48 > > > > To: spr...@li... > > > > Subject: [Springframework-developer] Fwd: application integration: > > > > intra-VM remoting > > > > > > > > I've created a proof-of-concept implementation that allows intra-VM > > > > method invocations. > > > > I will probably release this code in a seperate jar but for now I > > > > would like your feedback. What's missing from is the proxy factory for > > > > clients and the exporter for the host. > > > > > > > > This interface needs to be implemented by the exporter: > > > > > > > > /** > > > > * This interface needs to be implemented by exporter classes that > > > > want to participate in intra-VM method > > > > * invocation in the same thread as the caller of the invoked method. > > > > This allows > > > > * for an EJB-style integration pattern by calling objects that live > > > > in the same VM but > > > > * are managed by a separate container. The typical use case would be > > > > a caller that lives in a > > > > * web application (WAR) and calls a service object that lives in the > > > > same VM but inside another > > > > * web application. > > > > * > > > > * @author Steven Devijver > > > > * @since 12-01-2005 > > > > */ > > > > public interface InvocationHandler { > > > > > > > > /** > > > > * The interface of the service that is called. This interface is shipped > > > > * by the application that hosts the service to other applications that want > > > > * to call the service as a client. The interface class functions a an end > > > > * point marked. > > > > * > > > > * @return the service interface > > > > */ > > > > public Class getServiceInterface(); > > > > > > > > /** > > > > * This method is called by an invocation mediator to pass method invocations. > > > > * > > > > * @param invocation the method invocation > > > > * @return the result of the method invocation > > > > */ > > > > public Object handleInvocation(Object invocation); > > > > } > > > > > > > > This is the mediator that passes method invocations to > > > > InvocationHandler interfaces: > > > > > > > > /** > > > > * <p>This class offers a number of static methods to register and > > > > * unregister InvocationHandler instances and pass method > > > > * invocations to these instance based on end point interfaces. > > > > * > > > > * <p>In a servlet container setup where applications each living in a > > > > * separate web application (WAR) environment this class needs to be loaded > > > > * by the class loader that is shared by the web applications. The best location > > > > * to put the jar file would be in the lib directory of the servlet engine. > > > > * > > > > * @author Steven Devijver > > > > * @since 12-01-2005 > > > > */ > > > > public class IntraVMInvocationMediator { > > > > > > > > private static Map invocationHandlers = new Hashtable(); > > > > > > > > private IntraVMInvocationMediator() { > > > > super(); > > > > } > > > > > > > > /** > > > > * Register a InvocationHandler instance with the mediator. > > > > * > > > > * @param invocationHandler the InvocationHandler instance > > > > */ > > > > public static void register(InvocationHandler invocationHandler) { > > > > invocationHandlers.put(invocationHandler.getServiceInterface(), new > > > > WeakReference(invocationHandler)); > > > > } > > > > > > > > /** > > > > * Unregister a InvocationHandler instance with the mediator. > > > > * > > > > * @param invocationHandler the InvocationHandler instance > > > > */ > > > > public static void unregister(InvocationHandler invocationHandler) { > > > > invocationHandlers.remove(invocationHandler.getServiceInterface()); > > > > } > > > > > > > > /** > > > > * Pass a method invocation to a InvocationHandler instance based on the > > > > * name of the service interface end point. > > > > * > > > > * @param serviceInterface the service interface end point > > > > * @param invocation the method invocation > > > > * @return the result of the method invocation > > > > */ > > > > public static Object invoke(Class serviceInterface, Object invocation) { > > > > Map tmpMap = new HashMap(invocationHandlers); > > > > > > > > for (Iterator iter = tmpMap.keySet().iterator(); iter.hasNext();) { > > > > Class tmpClass = (Class)iter.next(); > > > > if (tmpClass.getName().equals(serviceInterface.getName())) { > > > > WeakReference weakReference = (WeakReference)tmpMap.get(tmpClass); > > > > InvocationHandler invocationHandler = > > > > (InvocationHandler)weakReference.get(); > > > > if (invocationHandler != null) { > > > > return invocationHandler.handleInvocation(invocation); > > > > } else { > > > > throw new RuntimeException("End point with interface [" + > > > > serviceInterface.getName() + "] is not available!"); > > > > } > > > > } > > > > } > > > > > > > > throw new RuntimeException("End point with interface [" + > > > > serviceInterface.getName() + "] is not available!"); > > > > } > > > > } > > > > > > > > Steven > > > > > > > > ---------- Forwarded message ---------- > > > > From: Steven Devijver <ste...@gm...> > > > > Date: Tue, 11 Jan 2005 13:32:50 +0100 > > > > Subject: application integration: intra-VM remoting > > > > To: spr...@li... > > > > > > > > Hi, > > > > > > > > Consider an organization that has a number of applications each using > > > > Spring. Each application is deployed as a separate war in the same > > > > servlet container. > > > > > > > > An application can expose specific services which allow integration > > > > with other applications. Messaging is one solution for integration but > > > > if you can use global transactions direct method calls in the same > > > > thread is also a suitable integration pattern. > > > > > > > > I don't want to re-configure the service beans belonging to one > > > > application plus all its dependencies in each application that wants > > > > to call said application. Instead I want to do a call through a client > > > > library EJB style. Using Spring each application could provide the > > > > persistent classes, interfaces of exposed services and a Spring config > > > > file with a client setup to access these services. The service than > > > > would live in one place: the servlet context of the application it > > > > belongs to. > > > > > > > > But I don't want to use the remoting strategies currently included > > > > with Spring: HTTP invoker, Hessian, Burlap, RMI. For a number of > > > > reasons this is not suitable: > > > > > > > > - communication overhead in creating connections and serialization > > > > while in the same VM. > > > > - calls do not happen in the same thread -> no global transactions. > > > > > > > > So all I can think of is to do remoting through an intra-VM mechanism. > > > > I haven't got a clue on how to set up such a mechanism but I know it's > > > > a typical use case for EJB applications (local home interfaces). > > > > > > > > Steven > > > > > > > > > > > > ------------------------------------------------------- > > > > The SF.Net email is sponsored by: Beat the post-holiday blues > > > > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > > > > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > > > _______________________________________________ > > > > Springframework-developer mailing list > > > > Spr...@li... > > > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > > > ------------------------------------------------------- > > > > The SF.Net email is sponsored by: Beat the post-holiday blues > > > > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > > > > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > > > _______________________________________________ > > > > Springframework-developer mailing list > > > > Spr...@li... > > > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > The SF.Net email is sponsored by: Beat the post-holiday blues > > > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > > > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > > _______________________________________________ > > > Springframework-developer mailing list > > > Spr...@li... > > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > ------------------------------------------------------- > > > The SF.Net email is sponsored by: Beat the post-holiday blues > > > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > > > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > > _______________________________________________ > > > Springframework-developer mailing list > > > Spr...@li... > > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > > > > |
|
From: Matt S. <sga...@us...> - 2005-01-13 04:52:55
|
The destroy-method fix is working for me in the nightly. For what it's worth, I have a number of post processors and some AOP running too and everything looks like it's working great in the nightly :) Thanks for the fix! In LazyConnectionDataSourceProxy, how come you have defaultAutoCommit() and defaultTransactionIsolation() methods instead of getDefaultAutoCommit() and getDefaultTransactionIsolation()? That really threw me through a loop because Spring made me start exposing EVERYTHING as getter/setter pairs. Maybe I went overboard? ;) Matt Juergen Hoeller wrote: > Matt, > > Regarding the issue with custom destroy methods: Indeed, the bean factory > looks for them on the exposed object rather than the originally defined one; > in your case, on the LazyConnectionDataSourceProxy instead of on the wrapped > BasicDataSource. > > This is not deliberate but rather an unfortunate side effect. I've just > adapted AbstractAutowireCapableBeanFactory to detect this scenario and > register the original bean objects as disposable beans (implementing > DisposableBean or having defined a destroy-method) if necessary. The > mechanism was already there, because of a similar problem with inner beans. > I'll commit the change today; please give the next nightly snapshot a try if > you have the chance! > > I'll also add lazy defaultAutoCommit/defaultTransactionIsolation checks to > LazyConnectionDataSourceProxy, kicking in when the check on startup failed. > Note that you can also specify those defaults as bean properties: In that > case, no check of a Connection will happen, as we assume that the specified > defaults match those of the target DataSource. > > Juergen > > > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...]On Behalf > Of Matt Sgarlata > Sent: Wednesday, January 12, 2005 1:31 AM > To: spr...@li... > Subject: [Springframework-developer] Re: Lazy transaction creation > > > Juergen - > > The LazyConnectionDataSourceProxy works great :) I am using a > BeanNameAutoProxyCreator to automatically apply transaction management > to all of my Struts Actions, yet the Actions don't fail even if the > actual database is not working, so long as they don't touch the database :) > > One comment - I would suggest adding the ability for defaultAutoCommit > and the defaultTransactionIsolation to be lazily fetched. I'm guessing > you're doing an eager fetch in the afterPropertiesSet method so that > only a single connection need be retrieved when the context is refreshed > rather than one connection when defaultAutoCommit is lazily fetched and > a separate one when defaultTransactionIsolation is lazily fetched. I > think it would be best to have *both* your eager strategy and a lazy > strategy available as a backup in case the eager strategy fails. That > way, if the DB is down when the application starts up but comes on line > later, the defaultAutoCommit and defaultTransactionIsolation will still > get set correctly. > > I set up the LazyConnectionDataSourceProxy in the > postProcessAfterInitialization method of a BeanPostProcessor (as > suggested in the JavaDoc). However, when I refresh my application > context I'm getting errors: > > ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't > find a destroy method named 'close' on bean with name 'carlosPool' > ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't > find a destroy method named 'close' on bean with name 'dev2Pool' > ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't > find a destroy method named 'close' on bean with name 'devDatabasePool' > > Obviously the problem is that the ApplicationContext is attempting to > call the close method of the LazyConnectionDataSourceProxy instead of > the close method of my underlying > org.apache.commons.dbcp.BasicDataSource. Is this considered a feature? > I would think it would be better for the close method of the unproxied > class to be invoked rather than the close method of the wrapper object > created by the BeanPostProcessor. > > Matt > > Juergen Hoeller wrote: > >>Guys, >> >>Please check out the following issue that I've just addressed: >> >>http://opensource.atlassian.com/projects/spring/browse/SPR-572 >> >>As I said in my comment, I've been wondering about this for a while and >>finally took the occasion to implement a generic solution for it. A >>particularly nice side effect is that it allows for efficient > > transactional > >>reads with HibernateTransactionManager, avoiding database communication >>overhead if everything can be resolved in the second-level cache! >> >>I'll commit this in a moment, so feel free to give it a try. >> >>Juergen >> >> >> >>------------------------------------------------------- >>The SF.Net email is sponsored by: Beat the post-holiday blues >>Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. >>It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt |
|
From: <al...@jt...> - 2005-01-12 23:39:51
|
<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.186</td></tr><tr><td class=3D"header-data"><span class=
=3D"header-label">Date of build: </span>01/13/2005 00:16:55</td></tr><=
tr><td class=3D"header-data"><span class=3D"header-label">Time to build:&nb=
sp;</span>21 minutes 10 seconds</td></tr><tr><td class=3D"header-data"><spa=
n class=3D"header-label">Last changed: </span>01/12/2005 15:05:25</td>=
</tr><tr><td class=3D"header-data"><span class=3D"header-label">Last log en=
try: </span>polishing</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: (26) </td></tr><tr><td><pre class=3D"compile-data=
">/jteam/build2/checkout/spring/spring/src/org/springframework/jdbc/support=
/lob/OracleLobHandler.java:76: warning - Tag @see: reference not found: ora=
cle.sql.BLOB<br/>/jteam/build2/checkout/spring/spring/src/org/springframewo=
rk/jdbc/support/lob/OracleLobHandler.java:76: warning - Tag @see: reference=
not found: oracle.sql.CLOB<br/>/jteam/build2/checkout/spring/spring/src/or=
g/springframework/jdbc/support/lob/OracleLobHandler.java:115: warning - Tag=
@see: reference not found: oracle.sql.BLOB#DURATION_SESSION<br/>/jteam/bui=
ld2/checkout/spring/spring/src/org/springframework/jdbc/support/lob/OracleL=
obHandler.java:115: warning - Tag @see: reference not found: oracle.sql.BLO=
B#MODE_READWRITE<br/>/jteam/build2/checkout/spring/spring/src/org/springfra=
mework/jdbc/support/lob/OracleLobHandler.java:115: warning - Tag @see: refe=
rence not found: oracle.sql.CLOB#DURATION_SESSION<br/>/jteam/build2/checkou=
t/spring/spring/src/org/springframework/jdbc/support/lob/OracleLobHandler.j=
ava:115: warning - Tag @see: reference not found: oracle.sql.CLOB#MODE_READ=
WRITE<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/jdbc=
/support/lob/OracleLobHandler.java:154: warning - Tag @see: reference not f=
ound: oracle.jdbc.OracleConnection<br/>/jteam/build2/checkout/spring/spring=
/src/org/springframework/jdbc/support/lob/OracleLobHandler.java:164: warnin=
g - Tag @see: reference not found: oracle.sql.BLOB#createTemporary<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.CLOB#createTemporary<br/>/jteam/build2/checkout/spring/spring/src/org/sp=
ringframework/jdbc/support/nativejdbc/JBossNativeJdbcExtractor.java:49: war=
ning - Tag @see: reference not found: org.jboss.resource.adapter.jdbc.Wrapp=
edConnection#getUnderlyingConnection<br/>/jteam/build2/checkout/spring/spri=
ng/src/org/springframework/jdbc/support/nativejdbc/JBossNativeJdbcExtractor=
.java:49: warning - Tag @see: reference not found: org.jboss.resource.adapt=
er.jdbc.WrappedStatement#getUnderlyingStatement<br/>/jteam/build2/checkout/=
spring/spring/src/org/springframework/jdbc/support/nativejdbc/JBossNativeJd=
bcExtractor.java:49: warning - Tag @see: reference not found: org.jboss.res=
ource.adapter.jdbc.WrappedResultSet#getUnderlyingResultSet<br/>/jteam/build=
2/checkout/spring/spring/src/org/springframework/jdbc/support/nativejdbc/We=
bLogicNativeJdbcExtractor.java:45: warning - Tag @see: reference not found:=
weblogic.jdbc.extensions.WLConnection#getVendorConnection<br/>/jteam/build=
2/checkout/spring/spring/src/org/springframework/jdbc/support/nativejdbc/We=
bSphereNativeJdbcExtractor.java:34: warning - Tag @see: reference not found=
: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection<br/>/jteam/build2/checkout/spr=
ing/spring/src/org/springframework/jdbc/support/nativejdbc/WebSphereNativeJ=
dbcExtractor.java:34: warning - Tag @see: reference not found: com.ibm.ws.r=
sadapter.jdbc.WSJdbcUtil#getNativeConnection<br/>/jteam/build2/checkout/spr=
ing/spring/src/org/springframework/jdbc/support/nativejdbc/WebSphereNativeJ=
dbcExtractor.java:34: warning - Tag @see: reference not found: com.ibm.ejs.=
cm.proxy.ConnectionProxy#getPhysicalConnection<br/>/jteam/build2/checkout/s=
pring/spring/src/org/springframework/orm/ibatis/SqlMapClientFactoryBean.jav=
a:174: warning - Tag @see: reference not found: com.ibatis.sqlmap.engine.tr=
ansaction.jdbc.JdbcTransactionConfig<br/>/jteam/build2/checkout/spring/spri=
ng/src/org/springframework/orm/ibatis/SqlMapClientFactoryBean.java:174: war=
ning - Tag @see: reference not found: com.ibatis.sqlmap.engine.transaction.=
jta.JtaTransactionConfig<br/>/jteam/build2/checkout/spring/spring/src/org/s=
pringframework/orm/ibatis/SqlMapClientFactoryBean.java:202: warning - Tag @=
see: reference not found: com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTra=
nsactionConfig<br/>/jteam/build2/checkout/spring/spring/src/org/springframe=
work/orm/ibatis/SqlMapClientFactoryBean.java:202: warning - Tag @see: refer=
ence not found: com.ibatis.sqlmap.engine.transaction.jta.JtaTransactionConf=
ig<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/transac=
tion/jta/WebLogicJtaTransactionManager.java:67: warning - Tag @see: referen=
ce not found: weblogic.transaction.TransactionManager#forceResume<br/>/jtea=
m/build2/checkout/spring/spring/src/org/springframework/transaction/jta/Web=
LogicServerTransactionManagerFactoryBean.java:45: warning - Tag @see: refer=
ence not found: weblogic.transaction.TxHelper#getTransactionManager<br/>/jt=
eam/build2/checkout/spring/spring/src/org/springframework/transaction/jta/W=
ebSphereTransactionManagerFactoryBean.java:47: warning - Tag @see: referenc=
e not found: com.ibm.ws.Transaction.TransactionManagerFactory#getTransactio=
nManager<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/t=
ransaction/jta/WebSphereTransactionManagerFactoryBean.java:47: warning - Ta=
g @see: reference not found: com.ibm.ejs.jts.jta.JTSXA#getTransactionManage=
r<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/transact=
ion/jta/WebSphereTransactionManagerFactoryBean.java:47: warning - Tag @see:=
reference not found: com.ibm.ejs.jts.jta.TransactionManagerFactory#getTran=
sactionManager<br/>/jteam/build2/checkout/spring/spring/src/org/springframe=
work/web/servlet/handler/metadata/PathMap.java:31: warning - @@org.apache.c=
ommons.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: (2371) </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: =
(9) </td></tr><tr class=3D"modifications-evenrow"><td c=
lass=3D"modifications-data">modified</td><td class=3D"modifications-data">j=
hoeller</td><td class=3D"modifications-data">test/org/springframework/beans=
/factory/xml/XmlListableBeanFactoryTests.java</td><td class=3D"modification=
s-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/beans/factory/=
config/AutowireCapableBeanFactory.java</td><td class=3D"modifications-data"=
>polishing</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifi=
cations-data">modified</td><td class=3D"modifications-data">jhoeller</td><t=
d class=3D"modifications-data">src/org/springframework/beans/factory/config=
/DestructionAwareBeanPostProcessor.java</td><td class=3D"modifications-data=
">polishing</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/beans/factory/Defau=
ltListableBeanFactoryTests.java</td><td class=3D"modifications-data">correc=
tly destroy original bean objects if wrapped by a BeanPostProcessor</td></t=
r><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">modi=
fied</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modific=
ations-data">src/org/springframework/beans/factory/support/AbstractAutowire=
CapableBeanFactory.java</td><td class=3D"modifications-data">correctly dest=
roy original bean objects if wrapped by a BeanPostProcessor</td></tr><tr cl=
ass=3D"modifications-oddrow"><td class=3D"modifications-data">modified</td>=
<td class=3D"modifications-data">jhoeller</td><td class=3D"modifications-da=
ta">src/org/springframework/beans/factory/support/AbstractBeanFactory.java<=
/td><td class=3D"modifications-data">correctly destroy original bean object=
s if wrapped by a BeanPostProcessor</td></tr><tr class=3D"modifications-eve=
nrow"><td class=3D"modifications-data">modified</td><td class=3D"modificati=
ons-data">jhoeller</td><td class=3D"modifications-data">test/org/springfram=
ework/orm/hibernate/HibernateTransactionManagerTests.java</td><td class=3D"=
modifications-data">reworked check of default connection properties</td></t=
r><tr class=3D"modifications-oddrow"><td class=3D"modifications-data">modif=
ied</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modifica=
tions-data">src/org/springframework/jdbc/datasource/LazyConnectionDataSourc=
eProxy.java</td><td class=3D"modifications-data">reworked check of default =
connection properties</td></tr><tr class=3D"modifications-evenrow"><td clas=
s=3D"modifications-data">modified</td><td class=3D"modifications-data">jhoe=
ller</td><td class=3D"modifications-data">mock/org/springframework/mock/web=
/MockHttpServletRequest.java</td><td class=3D"modifications-data">changed "=
addHeader" method to check for existing values, adding given value to Strin=
g array</td></tr></table><p>
<table width=3D"98%" border=3D"0" cellspacing=3D"0" cellpadding=3D"2" align=
=3D"center"><tr><td class=3D"distributables-sectionheader"> =
Deployments by this build: (16) </td>=
</tr><tr><td class=3D"distributables-data">Building jar: /jteam/build2/chec=
kout/spring/spring/dist/spring-core.jar</td></tr><tr class=3D"distributable=
s-oddrow"><td class=3D"distributables-data">Building jar: /jteam/build2/che=
ckout/spring/spring/dist/spring-aop.jar</td></tr><tr><td class=3D"distribut=
ables-data">Building jar: /jteam/build2/checkout/spring/spring/dist/spring-=
context.jar</td></tr><tr class=3D"distributables-oddrow"><td class=3D"distr=
ibutables-data">Building jar: /jteam/build2/checkout/spring/spring/dist/spr=
ing-dao.jar</td></tr><tr><td class=3D"distributables-data">Building jar: /j=
team/build2/checkout/spring/spring/dist/spring-orm.jar</td></tr><tr class=
=3D"distributables-oddrow"><td class=3D"distributables-data">Building jar: =
/jteam/build2/checkout/spring/spring/dist/spring-web.jar</td></tr><tr><td c=
lass=3D"distributables-data">Building jar: /jteam/build2/checkout/spring/sp=
ring/dist/spring-webmvc.jar</td></tr><tr class=3D"distributables-oddrow"><t=
d class=3D"distributables-data">Building jar: /jteam/build2/checkout/spring=
/spring/dist/spring.jar</td></tr><tr><td class=3D"distributables-data">Buil=
ding jar: /jteam/build2/checkout/spring/spring/dist/spring-mock.jar</td></t=
r><tr class=3D"distributables-oddrow"><td class=3D"distributables-data">Bui=
lding war: /jteam/build2/checkout/spring/spring/autobuilds/apps/buildtest/d=
ist/buildtest.war</td></tr><tr><td class=3D"distributables-data">Building w=
ar: /jteam/build2/checkout/spring/spring/autobuilds/apps/buildtest/dist/bui=
ldtest.war</td></tr><tr class=3D"distributables-oddrow"><td class=3D"distri=
butables-data">Building war: /jteam/build2/checkout/spring/spring/autobuild=
s/apps/buildtest/dist/buildtest.war</td></tr><tr><td class=3D"distributable=
s-data">Building jar: /jteam/build2/checkout/spring/spring/autobuilds/apps/=
jpetstore/war/WEB-INF/lib/jpetstore.jar</td></tr><tr class=3D"distributable=
s-oddrow"><td class=3D"distributables-data">Building war: /jteam/build2/che=
ckout/spring/spring/autobuilds/apps/jpetstore/dist/jpetstore.war</td></tr><=
tr><td class=3D"distributables-data">Building jar: /jteam/build2/checkout/s=
pring/spring/autobuilds/apps/jpetstore/war/WEB-INF/lib/jpetstore.jar</td></=
tr><tr class=3D"distributables-oddrow"><td class=3D"distributables-data">Bu=
ilding war: /jteam/build2/checkout/spring/spring/autobuilds/apps/jpetstore/=
dist/jpetstore.war</td></tr></table>
</body></html> |
|
From: Steven D. <ste...@gm...> - 2005-01-12 21:54:54
|
I've got IntraVMProxyFactoryBean and IntraVMServiceExporter working. The thing I forgot about is the fact that two classes cannot be equal if they are not loaded by the same class loader so simply passing object around between two web application contexts doesn't work. To work around this I serialize/de-serialize the RemoteInvocation and RemoteInvocationResult instances. I'll be writing a user guide in the next few days and I'll try to find out how to get the source in the sandbox in CVS. There's a jar file that contains two classes that I'll be offering as a separate distribution. This jar file needs to be loaded by the class loader that is shared by the different web applications. On Wed, 12 Jan 2005 17:41:45 +0100, Steven Devijver <ste...@gm...> wrote: > To the Spring team: could IntraVMProxyFactoryBean and > IntraVMServiceExporter be added to the sandbox? They have a dependency > on a separate jar which I will host elsewhere. I will also include a > user guide. > > On Wed, 12 Jan 2005 15:06:44 -0000, Andre Vermeulen > <ave...@su...> wrote: > > I will look into the HttpInvokerProxyFactoryBean a bit... > > > > thx > > > > andre > > > > -----Original Message----- > > From: spr...@li... > > [mailto:spr...@li...]On Behalf > > Of Steven Devijver > > Sent: 12 January 2005 13:24 > > To: spr...@li... > > Subject: Re: [Springframework-developer] Fwd: application integration: > > intra-VM remoting > > > > Andre, > > > > The two classes I've send are the proof-of-concept. You would need to > > create a proxy factory bean and a service exporter. I use > > HttpInvokerProxyFactoryBean and HttpInvokerServiceExporter as > > examples. I'm planning to release this as a separate project. Since > > you need to deploy this jar in a special way it cannot be part of the > > Spring sandbox. > > > > Take a look here, it will be easier for you to copy the code: > > > > http://forum.springframework.org/viewtopic.php?t=2907 > > > > Steven > > > > On Wed, 12 Jan 2005 13:12:33 -0000, Andre Vermeulen > > <ave...@su...> wrote: > > > Hi Steven > > > > > > A very interesting idea... > > > > > > I was thinking about this exact thing a few weeks back. But didn't have a clue to go about... neither the time for r&d. > > > If nothing else I might be able to help you test. > > > > > > Send your proof-of-concept on I would be very interested. > > > > > > regards > > > > > > andre > > > > > > > > > -----Original Message----- > > > From: spr...@li... > > > [mailto:spr...@li...]On Behalf > > > Of Steven Devijver > > > Sent: 12 January 2005 12:48 > > > To: spr...@li... > > > Subject: [Springframework-developer] Fwd: application integration: > > > intra-VM remoting > > > > > > I've created a proof-of-concept implementation that allows intra-VM > > > method invocations. > > > I will probably release this code in a seperate jar but for now I > > > would like your feedback. What's missing from is the proxy factory for > > > clients and the exporter for the host. > > > > > > This interface needs to be implemented by the exporter: > > > > > > /** > > > * This interface needs to be implemented by exporter classes that > > > want to participate in intra-VM method > > > * invocation in the same thread as the caller of the invoked method. > > > This allows > > > * for an EJB-style integration pattern by calling objects that live > > > in the same VM but > > > * are managed by a separate container. The typical use case would be > > > a caller that lives in a > > > * web application (WAR) and calls a service object that lives in the > > > same VM but inside another > > > * web application. > > > * > > > * @author Steven Devijver > > > * @since 12-01-2005 > > > */ > > > public interface InvocationHandler { > > > > > > /** > > > * The interface of the service that is called. This interface is shipped > > > * by the application that hosts the service to other applications that want > > > * to call the service as a client. The interface class functions a an end > > > * point marked. > > > * > > > * @return the service interface > > > */ > > > public Class getServiceInterface(); > > > > > > /** > > > * This method is called by an invocation mediator to pass method invocations. > > > * > > > * @param invocation the method invocation > > > * @return the result of the method invocation > > > */ > > > public Object handleInvocation(Object invocation); > > > } > > > > > > This is the mediator that passes method invocations to > > > InvocationHandler interfaces: > > > > > > /** > > > * <p>This class offers a number of static methods to register and > > > * unregister InvocationHandler instances and pass method > > > * invocations to these instance based on end point interfaces. > > > * > > > * <p>In a servlet container setup where applications each living in a > > > * separate web application (WAR) environment this class needs to be loaded > > > * by the class loader that is shared by the web applications. The best location > > > * to put the jar file would be in the lib directory of the servlet engine. > > > * > > > * @author Steven Devijver > > > * @since 12-01-2005 > > > */ > > > public class IntraVMInvocationMediator { > > > > > > private static Map invocationHandlers = new Hashtable(); > > > > > > private IntraVMInvocationMediator() { > > > super(); > > > } > > > > > > /** > > > * Register a InvocationHandler instance with the mediator. > > > * > > > * @param invocationHandler the InvocationHandler instance > > > */ > > > public static void register(InvocationHandler invocationHandler) { > > > invocationHandlers.put(invocationHandler.getServiceInterface(), new > > > WeakReference(invocationHandler)); > > > } > > > > > > /** > > > * Unregister a InvocationHandler instance with the mediator. > > > * > > > * @param invocationHandler the InvocationHandler instance > > > */ > > > public static void unregister(InvocationHandler invocationHandler) { > > > invocationHandlers.remove(invocationHandler.getServiceInterface()); > > > } > > > > > > /** > > > * Pass a method invocation to a InvocationHandler instance based on the > > > * name of the service interface end point. > > > * > > > * @param serviceInterface the service interface end point > > > * @param invocation the method invocation > > > * @return the result of the method invocation > > > */ > > > public static Object invoke(Class serviceInterface, Object invocation) { > > > Map tmpMap = new HashMap(invocationHandlers); > > > > > > for (Iterator iter = tmpMap.keySet().iterator(); iter.hasNext();) { > > > Class tmpClass = (Class)iter.next(); > > > if (tmpClass.getName().equals(serviceInterface.getName())) { > > > WeakReference weakReference = (WeakReference)tmpMap.get(tmpClass); > > > InvocationHandler invocationHandler = > > > (InvocationHandler)weakReference.get(); > > > if (invocationHandler != null) { > > > return invocationHandler.handleInvocation(invocation); > > > } else { > > > throw new RuntimeException("End point with interface [" + > > > serviceInterface.getName() + "] is not available!"); > > > } > > > } > > > } > > > > > > throw new RuntimeException("End point with interface [" + > > > serviceInterface.getName() + "] is not available!"); > > > } > > > } > > > > > > Steven > > > > > > ---------- Forwarded message ---------- > > > From: Steven Devijver <ste...@gm...> > > > Date: Tue, 11 Jan 2005 13:32:50 +0100 > > > Subject: application integration: intra-VM remoting > > > To: spr...@li... > > > > > > Hi, > > > > > > Consider an organization that has a number of applications each using > > > Spring. Each application is deployed as a separate war in the same > > > servlet container. > > > > > > An application can expose specific services which allow integration > > > with other applications. Messaging is one solution for integration but > > > if you can use global transactions direct method calls in the same > > > thread is also a suitable integration pattern. > > > > > > I don't want to re-configure the service beans belonging to one > > > application plus all its dependencies in each application that wants > > > to call said application. Instead I want to do a call through a client > > > library EJB style. Using Spring each application could provide the > > > persistent classes, interfaces of exposed services and a Spring config > > > file with a client setup to access these services. The service than > > > would live in one place: the servlet context of the application it > > > belongs to. > > > > > > But I don't want to use the remoting strategies currently included > > > with Spring: HTTP invoker, Hessian, Burlap, RMI. For a number of > > > reasons this is not suitable: > > > > > > - communication overhead in creating connections and serialization > > > while in the same VM. > > > - calls do not happen in the same thread -> no global transactions. > > > > > > So all I can think of is to do remoting through an intra-VM mechanism. > > > I haven't got a clue on how to set up such a mechanism but I know it's > > > a typical use case for EJB applications (local home interfaces). > > > > > > Steven > > > > > > > > > ------------------------------------------------------- > > > The SF.Net email is sponsored by: Beat the post-holiday blues > > > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > > > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > > _______________________________________________ > > > Springframework-developer mailing list > > > Spr...@li... > > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > ------------------------------------------------------- > > > The SF.Net email is sponsored by: Beat the post-holiday blues > > > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > > > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > > _______________________________________________ > > > Springframework-developer mailing list > > > Spr...@li... > > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > > > > > > > ------------------------------------------------------- > > The SF.Net email is sponsored by: Beat the post-holiday blues > > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > ------------------------------------------------------- > > The SF.Net email is sponsored by: Beat the post-holiday blues > > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > |
|
From: Darren D. <da...@da...> - 2005-01-12 20:10:49
|
On Wednesday 12 January 2005 16:51, James Cook wrote: > Darren (sorry..don't have a direct email address for you), are you using > CruiseControl also? no. In order to make it work it work on all of the machines in the compile= =20 farm (at least those with a suitable environment) I use some custom bash=20 scripts. The file system that the local CVS copy is checked out to is=20 mounted on all of the machines, so a combination of Unix' strong networking= =20 model and a good shell does the job :) =2D-=20 Darren Davison Public Key: #DD356B0D |
|
From: James C. <jim...@do...> - 2005-01-12 16:51:13
|
Thanks Alef. Darren (sorry..don't have a direct email address for you), are you using CruiseControl also? > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...] On Behalf > Of Alef Arendsen > Sent: Wednesday, January 12, 2005 10:28 AM > To: spr...@li... > Subject: RE: [Springframework-developer] Spring's continuous build > > Sorry for responding a bit late. > > No there's no public doco about how I set this up, but it's pretty > simple. It uses CruiseControl (I think the latest version) and the > following bit of config code for cruisecontrol. Build-mb.xml (the build > file that does the nightly build) is custom and very small. This is the > file that transfers the snapshots to www.springframework.org. Build > numbering is all part of cruisecontrol (through an implicit ${label} > property in ant - supplied by by cruisecontrol). > > That's about it I guess. > > Alef > > > > <project name="spring" buildafterfailed="true"> > <listeners> > <currentbuildstatuslistener > file="logs/spring/buildstatus"/> > </listeners> > <bootstrappers> > <!-- bootstrappers update the file from the CVS > in any case, before the build starts --> > <cvsbootstrapper > localworkingcopy="checkout/spring/spring" file="build.xml"/> > <cvsbootstrapper > localworkingcopy="checkout/spring/spring" file="project.properties"/> > </bootstrappers> > <modificationset quietperiod="1"> > <cvs localworkingcopy="checkout/spring/spring"/> > </modificationset> > <schedule> > <ant > > antscript="/jteam/build2/apache-ant-1.6.2/bin/ant" > buildfile="build-mb.xml" > uselogger="true" > usedebug="false" > time="0015" > antWorkingDir="checkout/spring/spring" > target="mb"> > <jvmarg arg="-Xmx512m"/> > </ant> > </schedule> > <log dir="logs/spring"> > <merge > dir="checkout/spring/spring/target/test-reports"/> > </log> > <publishers> > <htmlemail mailhost="smtp.xs4all.nl" > css="/jteam/build2/cruisecontrol-2.2/reporting/jsp/css/cruisecontrol.css > " xsldir="/jteam/build2/cruisecontrol-2.2/reporting/jsp/xsl" > logdir="logs/spring" returnaddress="al...@jt..." skipusers="true" > spamwhilebroken="true" defaultsuffix="@jteam.nl"> > <always > address="spr...@li..."/> > </htmlemail> > </publishers> > </project> > > > -----Original Message----- > > From: spr...@li... > > [mailto:spr...@li...] > > On Behalf Of Darren Davison > > Sent: Wednesday, January 12, 2005 11:46 AM > > To: spr...@li... > > Subject: Re: [Springframework-developer] Spring's continuous build > > > > > > On Mon, January 10, 2005 17:20, James Cook said: > > > Alef, did you set up the continuous build? > > > > > > Is there a document or short blurb that describes the > > > software/techniques you used? > > > > Hi James, > > > > If you mean the one that sends a nightly email to the dev > > list, that's Alef, if you mean the one here > > <http://springframework.sourceforge.net/test/> then that's me. > > > > There's no public blurb that I've written detailing how that > > bit was done, but mail me directly if you want more info on > > it and I'll gladly help. > > > > -- > > Darren Davison > > Public Key: #DD356B0D > > > > > > > > > > ------------------------------------------------------- > > The SF.Net email is sponsored by: Beat the post-holiday blues > > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > > > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Steven D. <ste...@gm...> - 2005-01-12 16:41:52
|
To the Spring team: could IntraVMProxyFactoryBean and IntraVMServiceExporter be added to the sandbox? They have a dependency on a separate jar which I will host elsewhere. I will also include a user guide. On Wed, 12 Jan 2005 15:06:44 -0000, Andre Vermeulen <ave...@su...> wrote: > I will look into the HttpInvokerProxyFactoryBean a bit... > > thx > > andre > > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...]On Behalf > Of Steven Devijver > Sent: 12 January 2005 13:24 > To: spr...@li... > Subject: Re: [Springframework-developer] Fwd: application integration: > intra-VM remoting > > Andre, > > The two classes I've send are the proof-of-concept. You would need to > create a proxy factory bean and a service exporter. I use > HttpInvokerProxyFactoryBean and HttpInvokerServiceExporter as > examples. I'm planning to release this as a separate project. Since > you need to deploy this jar in a special way it cannot be part of the > Spring sandbox. > > Take a look here, it will be easier for you to copy the code: > > http://forum.springframework.org/viewtopic.php?t=2907 > > Steven > > On Wed, 12 Jan 2005 13:12:33 -0000, Andre Vermeulen > <ave...@su...> wrote: > > Hi Steven > > > > A very interesting idea... > > > > I was thinking about this exact thing a few weeks back. But didn't have a clue to go about... neither the time for r&d. > > If nothing else I might be able to help you test. > > > > Send your proof-of-concept on I would be very interested. > > > > regards > > > > andre > > > > > > -----Original Message----- > > From: spr...@li... > > [mailto:spr...@li...]On Behalf > > Of Steven Devijver > > Sent: 12 January 2005 12:48 > > To: spr...@li... > > Subject: [Springframework-developer] Fwd: application integration: > > intra-VM remoting > > > > I've created a proof-of-concept implementation that allows intra-VM > > method invocations. > > I will probably release this code in a seperate jar but for now I > > would like your feedback. What's missing from is the proxy factory for > > clients and the exporter for the host. > > > > This interface needs to be implemented by the exporter: > > > > /** > > * This interface needs to be implemented by exporter classes that > > want to participate in intra-VM method > > * invocation in the same thread as the caller of the invoked method. > > This allows > > * for an EJB-style integration pattern by calling objects that live > > in the same VM but > > * are managed by a separate container. The typical use case would be > > a caller that lives in a > > * web application (WAR) and calls a service object that lives in the > > same VM but inside another > > * web application. > > * > > * @author Steven Devijver > > * @since 12-01-2005 > > */ > > public interface InvocationHandler { > > > > /** > > * The interface of the service that is called. This interface is shipped > > * by the application that hosts the service to other applications that want > > * to call the service as a client. The interface class functions a an end > > * point marked. > > * > > * @return the service interface > > */ > > public Class getServiceInterface(); > > > > /** > > * This method is called by an invocation mediator to pass method invocations. > > * > > * @param invocation the method invocation > > * @return the result of the method invocation > > */ > > public Object handleInvocation(Object invocation); > > } > > > > This is the mediator that passes method invocations to > > InvocationHandler interfaces: > > > > /** > > * <p>This class offers a number of static methods to register and > > * unregister InvocationHandler instances and pass method > > * invocations to these instance based on end point interfaces. > > * > > * <p>In a servlet container setup where applications each living in a > > * separate web application (WAR) environment this class needs to be loaded > > * by the class loader that is shared by the web applications. The best location > > * to put the jar file would be in the lib directory of the servlet engine. > > * > > * @author Steven Devijver > > * @since 12-01-2005 > > */ > > public class IntraVMInvocationMediator { > > > > private static Map invocationHandlers = new Hashtable(); > > > > private IntraVMInvocationMediator() { > > super(); > > } > > > > /** > > * Register a InvocationHandler instance with the mediator. > > * > > * @param invocationHandler the InvocationHandler instance > > */ > > public static void register(InvocationHandler invocationHandler) { > > invocationHandlers.put(invocationHandler.getServiceInterface(), new > > WeakReference(invocationHandler)); > > } > > > > /** > > * Unregister a InvocationHandler instance with the mediator. > > * > > * @param invocationHandler the InvocationHandler instance > > */ > > public static void unregister(InvocationHandler invocationHandler) { > > invocationHandlers.remove(invocationHandler.getServiceInterface()); > > } > > > > /** > > * Pass a method invocation to a InvocationHandler instance based on the > > * name of the service interface end point. > > * > > * @param serviceInterface the service interface end point > > * @param invocation the method invocation > > * @return the result of the method invocation > > */ > > public static Object invoke(Class serviceInterface, Object invocation) { > > Map tmpMap = new HashMap(invocationHandlers); > > > > for (Iterator iter = tmpMap.keySet().iterator(); iter.hasNext();) { > > Class tmpClass = (Class)iter.next(); > > if (tmpClass.getName().equals(serviceInterface.getName())) { > > WeakReference weakReference = (WeakReference)tmpMap.get(tmpClass); > > InvocationHandler invocationHandler = > > (InvocationHandler)weakReference.get(); > > if (invocationHandler != null) { > > return invocationHandler.handleInvocation(invocation); > > } else { > > throw new RuntimeException("End point with interface [" + > > serviceInterface.getName() + "] is not available!"); > > } > > } > > } > > > > throw new RuntimeException("End point with interface [" + > > serviceInterface.getName() + "] is not available!"); > > } > > } > > > > Steven > > > > ---------- Forwarded message ---------- > > From: Steven Devijver <ste...@gm...> > > Date: Tue, 11 Jan 2005 13:32:50 +0100 > > Subject: application integration: intra-VM remoting > > To: spr...@li... > > > > Hi, > > > > Consider an organization that has a number of applications each using > > Spring. Each application is deployed as a separate war in the same > > servlet container. > > > > An application can expose specific services which allow integration > > with other applications. Messaging is one solution for integration but > > if you can use global transactions direct method calls in the same > > thread is also a suitable integration pattern. > > > > I don't want to re-configure the service beans belonging to one > > application plus all its dependencies in each application that wants > > to call said application. Instead I want to do a call through a client > > library EJB style. Using Spring each application could provide the > > persistent classes, interfaces of exposed services and a Spring config > > file with a client setup to access these services. The service than > > would live in one place: the servlet context of the application it > > belongs to. > > > > But I don't want to use the remoting strategies currently included > > with Spring: HTTP invoker, Hessian, Burlap, RMI. For a number of > > reasons this is not suitable: > > > > - communication overhead in creating connections and serialization > > while in the same VM. > > - calls do not happen in the same thread -> no global transactions. > > > > So all I can think of is to do remoting through an intra-VM mechanism. > > I haven't got a clue on how to set up such a mechanism but I know it's > > a typical use case for EJB applications (local home interfaces). > > > > Steven > > > > > > ------------------------------------------------------- > > The SF.Net email is sponsored by: Beat the post-holiday blues > > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > ------------------------------------------------------- > > The SF.Net email is sponsored by: Beat the post-holiday blues > > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > |
|
From: Alef A. <al...@jt...> - 2005-01-12 15:25:14
|
Sorry for responding a bit late. No there's no public doco about how I set this up, but it's pretty simple. It uses CruiseControl (I think the latest version) and the following bit of config code for cruisecontrol. Build-mb.xml (the build file that does the nightly build) is custom and very small. This is the file that transfers the snapshots to www.springframework.org. Build numbering is all part of cruisecontrol (through an implicit ${label} property in ant - supplied by by cruisecontrol). That's about it I guess. Alef <project name=3D"spring" buildafterfailed=3D"true"> <listeners> <currentbuildstatuslistener file=3D"logs/spring/buildstatus"/> </listeners> <bootstrappers> <!-- bootstrappers update the file from the CVS in any case, before the build starts --> <cvsbootstrapper localworkingcopy=3D"checkout/spring/spring" file=3D"build.xml"/> <cvsbootstrapper localworkingcopy=3D"checkout/spring/spring" = file=3D"project.properties"/> </bootstrappers> <modificationset quietperiod=3D"1"> <cvs = localworkingcopy=3D"checkout/spring/spring"/> </modificationset> <schedule> <ant =20 antscript=3D"/jteam/build2/apache-ant-1.6.2/bin/ant" buildfile=3D"build-mb.xml" uselogger=3D"true" usedebug=3D"false" time=3D"0015" antWorkingDir=3D"checkout/spring/spring" target=3D"mb"> <jvmarg arg=3D"-Xmx512m"/> </ant> </schedule> <log dir=3D"logs/spring"> <merge dir=3D"checkout/spring/spring/target/test-reports"/> </log> <publishers> <htmlemail mailhost=3D"smtp.xs4all.nl" css=3D"/jteam/build2/cruisecontrol-2.2/reporting/jsp/css/cruisecontrol.cs= s " xsldir=3D"/jteam/build2/cruisecontrol-2.2/reporting/jsp/xsl" logdir=3D"logs/spring" returnaddress=3D"al...@jt..." = skipusers=3D"true" spamwhilebroken=3D"true" defaultsuffix=3D"@jteam.nl"> <always address=3D"spr...@li..."/> </htmlemail> </publishers> </project>=20 > -----Original Message----- > From: spr...@li...=20 > [mailto:spr...@li...] > On Behalf Of Darren Davison > Sent: Wednesday, January 12, 2005 11:46 AM > To: spr...@li... > Subject: Re: [Springframework-developer] Spring's continuous build >=20 >=20 > On Mon, January 10, 2005 17:20, James Cook said: > > Alef, did you set up the continuous build? > > > > Is there a document or short blurb that describes the=20 > > software/techniques you used? >=20 > Hi James, >=20 > If you mean the one that sends a nightly email to the dev=20 > list, that's Alef, if you mean the one here=20 > <http://springframework.sourceforge.net/test/> then that's me. >=20 > There's no public blurb that I've written detailing how that=20 > bit was done, but mail me directly if you want more info on=20 > it and I'll gladly help. >=20 > -- > Darren Davison > Public Key: #DD356B0D >=20 >=20 >=20 >=20 > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer >=20 >=20 >=20 >=20 |
|
From: Andre V. <ave...@su...> - 2005-01-12 15:07:05
|
I will look into the HttpInvokerProxyFactoryBean a bit... thx andre -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of Steven Devijver Sent: 12 January 2005 13:24 To: spr...@li... Subject: Re: [Springframework-developer] Fwd: application integration: intra-VM remoting Andre, The two classes I've send are the proof-of-concept. You would need to create a proxy factory bean and a service exporter. I use HttpInvokerProxyFactoryBean and HttpInvokerServiceExporter as examples. I'm planning to release this as a separate project. Since you need to deploy this jar in a special way it cannot be part of the Spring sandbox. Take a look here, it will be easier for you to copy the code: http://forum.springframework.org/viewtopic.php?t=3D2907 Steven=20 On Wed, 12 Jan 2005 13:12:33 -0000, Andre Vermeulen <ave...@su...> wrote: > Hi Steven >=20 > A very interesting idea... >=20 > I was thinking about this exact thing a few weeks back. But didn't = have a clue to go about... neither the time for r&d. > If nothing else I might be able to help you test. >=20 > Send your proof-of-concept on I would be very interested. >=20 > regards >=20 > andre >=20 >=20 > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...]On = Behalf > Of Steven Devijver > Sent: 12 January 2005 12:48 > To: spr...@li... > Subject: [Springframework-developer] Fwd: application integration: > intra-VM remoting >=20 > I've created a proof-of-concept implementation that allows intra-VM > method invocations. > I will probably release this code in a seperate jar but for now I > would like your feedback. What's missing from is the proxy factory for > clients and the exporter for the host. >=20 > This interface needs to be implemented by the exporter: >=20 > /** > * This interface needs to be implemented by exporter classes that > want to participate in intra-VM method > * invocation in the same thread as the caller of the invoked method. > This allows > * for an EJB-style integration pattern by calling objects that live > in the same VM but > * are managed by a separate container. The typical use case would be > a caller that lives in a > * web application (WAR) and calls a service object that lives in the > same VM but inside another > * web application. > * > * @author Steven Devijver > * @since 12-01-2005 > */ > public interface InvocationHandler { >=20 > /** > * The interface of the service that is called. This interface = is shipped > * by the application that hosts the service to other = applications that want > * to call the service as a client. The interface class = functions a an end > * point marked. > * > * @return the service interface > */ > public Class getServiceInterface(); >=20 > /** > * This method is called by an invocation mediator to pass = method invocations. > * > * @param invocation the method invocation > * @return the result of the method invocation > */ > public Object handleInvocation(Object invocation); > } >=20 > This is the mediator that passes method invocations to > InvocationHandler interfaces: >=20 > /** > * <p>This class offers a number of static methods to register and > * unregister InvocationHandler instances and pass method > * invocations to these instance based on end point interfaces. > * > * <p>In a servlet container setup where applications each living in a > * separate web application (WAR) environment this class needs to be = loaded > * by the class loader that is shared by the web applications. The = best location > * to put the jar file would be in the lib directory of the servlet = engine. > * > * @author Steven Devijver > * @since 12-01-2005 > */ > public class IntraVMInvocationMediator { >=20 > private static Map invocationHandlers =3D new Hashtable(); >=20 > private IntraVMInvocationMediator() { > super(); > } >=20 > /** > * Register a InvocationHandler instance with the mediator. > * > * @param invocationHandler the InvocationHandler instance > */ > public static void register(InvocationHandler = invocationHandler) { > = invocationHandlers.put(invocationHandler.getServiceInterface(), new > WeakReference(invocationHandler)); > } >=20 > /** > * Unregister a InvocationHandler instance with the mediator. > * > * @param invocationHandler the InvocationHandler instance > */ > public static void unregister(InvocationHandler = invocationHandler) { > = invocationHandlers.remove(invocationHandler.getServiceInterface()); > } >=20 > /** > * Pass a method invocation to a InvocationHandler instance = based on the > * name of the service interface end point. > * > * @param serviceInterface the service interface end point > * @param invocation the method invocation > * @return the result of the method invocation > */ > public static Object invoke(Class serviceInterface, Object = invocation) { > Map tmpMap =3D new HashMap(invocationHandlers); >=20 > for (Iterator iter =3D tmpMap.keySet().iterator(); = iter.hasNext();) { > Class tmpClass =3D (Class)iter.next(); > if = (tmpClass.getName().equals(serviceInterface.getName())) { > WeakReference weakReference =3D = (WeakReference)tmpMap.get(tmpClass); > InvocationHandler invocationHandler = =3D > (InvocationHandler)weakReference.get(); > if (invocationHandler !=3D null) { > return = invocationHandler.handleInvocation(invocation); > } else { > throw new = RuntimeException("End point with interface [" + > serviceInterface.getName() + "] is not available!"); > } > } > } >=20 > throw new RuntimeException("End point with interface = [" + > serviceInterface.getName() + "] is not available!"); > } > } >=20 > Steven >=20 > ---------- Forwarded message ---------- > From: Steven Devijver <ste...@gm...> > Date: Tue, 11 Jan 2005 13:32:50 +0100 > Subject: application integration: intra-VM remoting > To: spr...@li... >=20 > Hi, >=20 > Consider an organization that has a number of applications each using > Spring. Each application is deployed as a separate war in the same > servlet container. >=20 > An application can expose specific services which allow integration > with other applications. Messaging is one solution for integration but > if you can use global transactions direct method calls in the same > thread is also a suitable integration pattern. >=20 > I don't want to re-configure the service beans belonging to one > application plus all its dependencies in each application that wants > to call said application. Instead I want to do a call through a client > library EJB style. Using Spring each application could provide the > persistent classes, interfaces of exposed services and a Spring config > file with a client setup to access these services. The service than > would live in one place: the servlet context of the application it > belongs to. >=20 > But I don't want to use the remoting strategies currently included > with Spring: HTTP invoker, Hessian, Burlap, RMI. For a number of > reasons this is not suitable: >=20 > - communication overhead in creating connections and serialization > while in the same VM. > - calls do not happen in the same thread -> no global transactions. >=20 > So all I can think of is to do remoting through an intra-VM mechanism. > I haven't got a clue on how to set up such a mechanism but I know it's > a typical use case for EJB applications (local home interfaces). >=20 > Steven >=20 >=20 > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer >=20 > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer >=20 > ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Steven D. <ste...@gm...> - 2005-01-12 13:23:42
|
Andre, The two classes I've send are the proof-of-concept. You would need to create a proxy factory bean and a service exporter. I use HttpInvokerProxyFactoryBean and HttpInvokerServiceExporter as examples. I'm planning to release this as a separate project. Since you need to deploy this jar in a special way it cannot be part of the Spring sandbox. Take a look here, it will be easier for you to copy the code: http://forum.springframework.org/viewtopic.php?t=2907 Steven On Wed, 12 Jan 2005 13:12:33 -0000, Andre Vermeulen <ave...@su...> wrote: > Hi Steven > > A very interesting idea... > > I was thinking about this exact thing a few weeks back. But didn't have a clue to go about... neither the time for r&d. > If nothing else I might be able to help you test. > > Send your proof-of-concept on I would be very interested. > > regards > > andre > > > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...]On Behalf > Of Steven Devijver > Sent: 12 January 2005 12:48 > To: spr...@li... > Subject: [Springframework-developer] Fwd: application integration: > intra-VM remoting > > I've created a proof-of-concept implementation that allows intra-VM > method invocations. > I will probably release this code in a seperate jar but for now I > would like your feedback. What's missing from is the proxy factory for > clients and the exporter for the host. > > This interface needs to be implemented by the exporter: > > /** > * This interface needs to be implemented by exporter classes that > want to participate in intra-VM method > * invocation in the same thread as the caller of the invoked method. > This allows > * for an EJB-style integration pattern by calling objects that live > in the same VM but > * are managed by a separate container. The typical use case would be > a caller that lives in a > * web application (WAR) and calls a service object that lives in the > same VM but inside another > * web application. > * > * @author Steven Devijver > * @since 12-01-2005 > */ > public interface InvocationHandler { > > /** > * The interface of the service that is called. This interface is shipped > * by the application that hosts the service to other applications that want > * to call the service as a client. The interface class functions a an end > * point marked. > * > * @return the service interface > */ > public Class getServiceInterface(); > > /** > * This method is called by an invocation mediator to pass method invocations. > * > * @param invocation the method invocation > * @return the result of the method invocation > */ > public Object handleInvocation(Object invocation); > } > > This is the mediator that passes method invocations to > InvocationHandler interfaces: > > /** > * <p>This class offers a number of static methods to register and > * unregister InvocationHandler instances and pass method > * invocations to these instance based on end point interfaces. > * > * <p>In a servlet container setup where applications each living in a > * separate web application (WAR) environment this class needs to be loaded > * by the class loader that is shared by the web applications. The best location > * to put the jar file would be in the lib directory of the servlet engine. > * > * @author Steven Devijver > * @since 12-01-2005 > */ > public class IntraVMInvocationMediator { > > private static Map invocationHandlers = new Hashtable(); > > private IntraVMInvocationMediator() { > super(); > } > > /** > * Register a InvocationHandler instance with the mediator. > * > * @param invocationHandler the InvocationHandler instance > */ > public static void register(InvocationHandler invocationHandler) { > invocationHandlers.put(invocationHandler.getServiceInterface(), new > WeakReference(invocationHandler)); > } > > /** > * Unregister a InvocationHandler instance with the mediator. > * > * @param invocationHandler the InvocationHandler instance > */ > public static void unregister(InvocationHandler invocationHandler) { > invocationHandlers.remove(invocationHandler.getServiceInterface()); > } > > /** > * Pass a method invocation to a InvocationHandler instance based on the > * name of the service interface end point. > * > * @param serviceInterface the service interface end point > * @param invocation the method invocation > * @return the result of the method invocation > */ > public static Object invoke(Class serviceInterface, Object invocation) { > Map tmpMap = new HashMap(invocationHandlers); > > for (Iterator iter = tmpMap.keySet().iterator(); iter.hasNext();) { > Class tmpClass = (Class)iter.next(); > if (tmpClass.getName().equals(serviceInterface.getName())) { > WeakReference weakReference = (WeakReference)tmpMap.get(tmpClass); > InvocationHandler invocationHandler = > (InvocationHandler)weakReference.get(); > if (invocationHandler != null) { > return invocationHandler.handleInvocation(invocation); > } else { > throw new RuntimeException("End point with interface [" + > serviceInterface.getName() + "] is not available!"); > } > } > } > > throw new RuntimeException("End point with interface [" + > serviceInterface.getName() + "] is not available!"); > } > } > > Steven > > ---------- Forwarded message ---------- > From: Steven Devijver <ste...@gm...> > Date: Tue, 11 Jan 2005 13:32:50 +0100 > Subject: application integration: intra-VM remoting > To: spr...@li... > > Hi, > > Consider an organization that has a number of applications each using > Spring. Each application is deployed as a separate war in the same > servlet container. > > An application can expose specific services which allow integration > with other applications. Messaging is one solution for integration but > if you can use global transactions direct method calls in the same > thread is also a suitable integration pattern. > > I don't want to re-configure the service beans belonging to one > application plus all its dependencies in each application that wants > to call said application. Instead I want to do a call through a client > library EJB style. Using Spring each application could provide the > persistent classes, interfaces of exposed services and a Spring config > file with a client setup to access these services. The service than > would live in one place: the servlet context of the application it > belongs to. > > But I don't want to use the remoting strategies currently included > with Spring: HTTP invoker, Hessian, Burlap, RMI. For a number of > reasons this is not suitable: > > - communication overhead in creating connections and serialization > while in the same VM. > - calls do not happen in the same thread -> no global transactions. > > So all I can think of is to do remoting through an intra-VM mechanism. > I haven't got a clue on how to set up such a mechanism but I know it's > a typical use case for EJB applications (local home interfaces). > > Steven > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > |
|
From: Andre V. <ave...@su...> - 2005-01-12 13:12:55
|
Hi Steven
A very interesting idea...
I was thinking about this exact thing a few weeks back. But didn't have =
a clue to go about... neither the time for r&d.=20
If nothing else I might be able to help you test.
Send your proof-of-concept on I would be very interested.
regards
andre
-----Original Message-----
From: spr...@li...
[mailto:spr...@li...]On Behalf
Of Steven Devijver
Sent: 12 January 2005 12:48
To: spr...@li...
Subject: [Springframework-developer] Fwd: application integration:
intra-VM remoting
I've created a proof-of-concept implementation that allows intra-VM
method invocations.
I will probably release this code in a seperate jar but for now I
would like your feedback. What's missing from is the proxy factory for
clients and the exporter for the host.
This interface needs to be implemented by the exporter:
/**
* This interface needs to be implemented by exporter classes that
want to participate in intra-VM method
* invocation in the same thread as the caller of the invoked method.
This allows
* for an EJB-style integration pattern by calling objects that live
in the same VM but
* are managed by a separate container. The typical use case would be
a caller that lives in a
* web application (WAR) and calls a service object that lives in the
same VM but inside another
* web application.
*=20
* @author Steven Devijver
* @since 12-01-2005
*/
public interface InvocationHandler {
/**
* The interface of the service that is called. This interface is =
shipped
* by the application that hosts the service to other applications that =
want
* to call the service as a client. The interface class functions a an =
end
* point marked.
*=20
* @return the service interface
*/
public Class getServiceInterface();
=09
/**
* This method is called by an invocation mediator to pass method =
invocations.
*=20
* @param invocation the method invocation
* @return the result of the method invocation
*/
public Object handleInvocation(Object invocation);
}
This is the mediator that passes method invocations to
InvocationHandler interfaces:
/**
* <p>This class offers a number of static methods to register and=20
* unregister InvocationHandler instances and pass method
* invocations to these instance based on end point interfaces.
*=20
* <p>In a servlet container setup where applications each living in a
* separate web application (WAR) environment this class needs to be =
loaded
* by the class loader that is shared by the web applications. The best =
location
* to put the jar file would be in the lib directory of the servlet =
engine.
*=20
* @author Steven Devijver
* @since 12-01-2005
*/
public class IntraVMInvocationMediator {
private static Map invocationHandlers =3D new Hashtable();
=09
private IntraVMInvocationMediator() {
super();
}
/**
* Register a InvocationHandler instance with the mediator.
*=20
* @param invocationHandler the InvocationHandler instance
*/
public static void register(InvocationHandler invocationHandler) {
invocationHandlers.put(invocationHandler.getServiceInterface(), new
WeakReference(invocationHandler));
}
=09
/**
* Unregister a InvocationHandler instance with the mediator.=20
*=20
* @param invocationHandler the InvocationHandler instance
*/
public static void unregister(InvocationHandler invocationHandler) {
invocationHandlers.remove(invocationHandler.getServiceInterface());
}
=09
/**
* Pass a method invocation to a InvocationHandler instance based on =
the
* name of the service interface end point.
*=20
* @param serviceInterface the service interface end point
* @param invocation the method invocation
* @return the result of the method invocation
*/
public static Object invoke(Class serviceInterface, Object invocation) =
{
Map tmpMap =3D new HashMap(invocationHandlers);
=09
for (Iterator iter =3D tmpMap.keySet().iterator(); iter.hasNext();) {
Class tmpClass =3D (Class)iter.next();
if (tmpClass.getName().equals(serviceInterface.getName())) {
WeakReference weakReference =3D (WeakReference)tmpMap.get(tmpClass);
InvocationHandler invocationHandler =3D
(InvocationHandler)weakReference.get();
if (invocationHandler !=3D null) {
return invocationHandler.handleInvocation(invocation);
} else {
throw new RuntimeException("End point with interface [" +
serviceInterface.getName() + "] is not available!");
}
}
}
=09
throw new RuntimeException("End point with interface [" +
serviceInterface.getName() + "] is not available!");
}
}
Steven
---------- Forwarded message ----------
From: Steven Devijver <ste...@gm...>
Date: Tue, 11 Jan 2005 13:32:50 +0100
Subject: application integration: intra-VM remoting
To: spr...@li...
Hi,
Consider an organization that has a number of applications each using
Spring. Each application is deployed as a separate war in the same
servlet container.
An application can expose specific services which allow integration
with other applications. Messaging is one solution for integration but
if you can use global transactions direct method calls in the same
thread is also a suitable integration pattern.
I don't want to re-configure the service beans belonging to one
application plus all its dependencies in each application that wants
to call said application. Instead I want to do a call through a client
library EJB style. Using Spring each application could provide the
persistent classes, interfaces of exposed services and a Spring config
file with a client setup to access these services. The service than
would live in one place: the servlet context of the application it
belongs to.
But I don't want to use the remoting strategies currently included
with Spring: HTTP invoker, Hessian, Burlap, RMI. For a number of
reasons this is not suitable:
- communication overhead in creating connections and serialization
while in the same VM.
- calls do not happen in the same thread -> no global transactions.
So all I can think of is to do remoting through an intra-VM mechanism.
I haven't got a clue on how to set up such a mechanism but I know it's
a typical use case for EJB applications (local home interfaces).
Steven
-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|
|
From: Steven D. <ste...@gm...> - 2005-01-12 12:48:33
|
I've created a proof-of-concept implementation that allows intra-VM
method invocations.
I will probably release this code in a seperate jar but for now I
would like your feedback. What's missing from is the proxy factory for
clients and the exporter for the host.
This interface needs to be implemented by the exporter:
/**
* This interface needs to be implemented by exporter classes that
want to participate in intra-VM method
* invocation in the same thread as the caller of the invoked method.
This allows
* for an EJB-style integration pattern by calling objects that live
in the same VM but
* are managed by a separate container. The typical use case would be
a caller that lives in a
* web application (WAR) and calls a service object that lives in the
same VM but inside another
* web application.
*
* @author Steven Devijver
* @since 12-01-2005
*/
public interface InvocationHandler {
/**
* The interface of the service that is called. This interface is shipped
* by the application that hosts the service to other applications that want
* to call the service as a client. The interface class functions a an end
* point marked.
*
* @return the service interface
*/
public Class getServiceInterface();
/**
* This method is called by an invocation mediator to pass method invocations.
*
* @param invocation the method invocation
* @return the result of the method invocation
*/
public Object handleInvocation(Object invocation);
}
This is the mediator that passes method invocations to
InvocationHandler interfaces:
/**
* <p>This class offers a number of static methods to register and
* unregister InvocationHandler instances and pass method
* invocations to these instance based on end point interfaces.
*
* <p>In a servlet container setup where applications each living in a
* separate web application (WAR) environment this class needs to be loaded
* by the class loader that is shared by the web applications. The best location
* to put the jar file would be in the lib directory of the servlet engine.
*
* @author Steven Devijver
* @since 12-01-2005
*/
public class IntraVMInvocationMediator {
private static Map invocationHandlers = new Hashtable();
private IntraVMInvocationMediator() {
super();
}
/**
* Register a InvocationHandler instance with the mediator.
*
* @param invocationHandler the InvocationHandler instance
*/
public static void register(InvocationHandler invocationHandler) {
invocationHandlers.put(invocationHandler.getServiceInterface(), new
WeakReference(invocationHandler));
}
/**
* Unregister a InvocationHandler instance with the mediator.
*
* @param invocationHandler the InvocationHandler instance
*/
public static void unregister(InvocationHandler invocationHandler) {
invocationHandlers.remove(invocationHandler.getServiceInterface());
}
/**
* Pass a method invocation to a InvocationHandler instance based on the
* name of the service interface end point.
*
* @param serviceInterface the service interface end point
* @param invocation the method invocation
* @return the result of the method invocation
*/
public static Object invoke(Class serviceInterface, Object invocation) {
Map tmpMap = new HashMap(invocationHandlers);
for (Iterator iter = tmpMap.keySet().iterator(); iter.hasNext();) {
Class tmpClass = (Class)iter.next();
if (tmpClass.getName().equals(serviceInterface.getName())) {
WeakReference weakReference = (WeakReference)tmpMap.get(tmpClass);
InvocationHandler invocationHandler =
(InvocationHandler)weakReference.get();
if (invocationHandler != null) {
return invocationHandler.handleInvocation(invocation);
} else {
throw new RuntimeException("End point with interface [" +
serviceInterface.getName() + "] is not available!");
}
}
}
throw new RuntimeException("End point with interface [" +
serviceInterface.getName() + "] is not available!");
}
}
Steven
---------- Forwarded message ----------
From: Steven Devijver <ste...@gm...>
Date: Tue, 11 Jan 2005 13:32:50 +0100
Subject: application integration: intra-VM remoting
To: spr...@li...
Hi,
Consider an organization that has a number of applications each using
Spring. Each application is deployed as a separate war in the same
servlet container.
An application can expose specific services which allow integration
with other applications. Messaging is one solution for integration but
if you can use global transactions direct method calls in the same
thread is also a suitable integration pattern.
I don't want to re-configure the service beans belonging to one
application plus all its dependencies in each application that wants
to call said application. Instead I want to do a call through a client
library EJB style. Using Spring each application could provide the
persistent classes, interfaces of exposed services and a Spring config
file with a client setup to access these services. The service than
would live in one place: the servlet context of the application it
belongs to.
But I don't want to use the remoting strategies currently included
with Spring: HTTP invoker, Hessian, Burlap, RMI. For a number of
reasons this is not suitable:
- communication overhead in creating connections and serialization
while in the same VM.
- calls do not happen in the same thread -> no global transactions.
So all I can think of is to do remoting through an intra-VM mechanism.
I haven't got a clue on how to set up such a mechanism but I know it's
a typical use case for EJB applications (local home interfaces).
Steven
|
|
From: Darren D. <da...@da...> - 2005-01-12 10:27:26
|
On Mon, January 10, 2005 17:20, James Cook said: > Alef, did you set up the continuous build? > > Is there a document or short blurb that describes the software/techniqu= es > you used? Hi James, If you mean the one that sends a nightly email to the dev list, that's Al= ef, if you mean the one here <http://springframework.sourceforge.net/test/> t= hen that's me. There's no public blurb that I've written detailing how that bit was done= , but mail me directly if you want more info on it and I'll gladly help. --=20 Darren Davison Public Key: #DD356B0D |
|
From: Thierry T. <te...@ya...> - 2005-01-12 09:21:50
|
Hi, I have tested the LazyConnectionDataSourceProxy class with a DataSourceTransactionManager manager, and BeanNameAutoProxyCreator / TransactionInterceptor for the weaving. It works fine! I have tested too when the hypersonic database isn't started on the load of the webapp but started on the first call... It works fine too. Thierry > Lazy connection check added. If the eager check on > startup fails, the first > transaction on that DataSource will fetch a physical > JDBC Connection on > getAutoCommit and getTransactionIsolation to > retrieve the actual defaults, > keeping those default values from then on to be able > to expose them without > fetching a physical Connection. > > Juergen > > > -----Original Message----- > From: > spr...@li... > [mailto:spr...@li...]On > Behalf > Of Juergen Hoeller > Sent: Wednesday, January 12, 2005 8:46 AM > To: spr...@li... > Subject: Re: [Springframework-developer] Re: Lazy > transaction creation > > > Matt, > > Regarding the issue with custom destroy methods: > Indeed, the bean factory > looks for them on the exposed object rather than the > originally defined one; > in your case, on the LazyConnectionDataSourceProxy > instead of on the wrapped > BasicDataSource. > > This is not deliberate but rather an unfortunate > side effect. I've just > adapted AbstractAutowireCapableBeanFactory to detect > this scenario and > register the original bean objects as disposable > beans (implementing > DisposableBean or having defined a destroy-method) > if necessary. The > mechanism was already there, because of a similar > problem with inner beans. > I'll commit the change today; please give the next > nightly snapshot a try if > you have the chance! > > I'll also add lazy > defaultAutoCommit/defaultTransactionIsolation checks > to > LazyConnectionDataSourceProxy, kicking in when the > check on startup failed. > Note that you can also specify those defaults as > bean properties: In that > case, no check of a Connection will happen, as we > assume that the specified > defaults match those of the target DataSource. > > Juergen > > > -----Original Message----- > From: > spr...@li... > [mailto:spr...@li...]On > Behalf > Of Matt Sgarlata > Sent: Wednesday, January 12, 2005 1:31 AM > To: spr...@li... > Subject: [Springframework-developer] Re: Lazy > transaction creation > > > Juergen - > > The LazyConnectionDataSourceProxy works great :) I > am using a > BeanNameAutoProxyCreator to automatically apply > transaction management > to all of my Struts Actions, yet the Actions don't > fail even if the > actual database is not working, so long as they > don't touch the database :) > > One comment - I would suggest adding the ability for > defaultAutoCommit > and the defaultTransactionIsolation to be lazily > fetched. I'm guessing > you're doing an eager fetch in the > afterPropertiesSet method so that > only a single connection need be retrieved when the > context is refreshed > rather than one connection when defaultAutoCommit is > lazily fetched and > a separate one when defaultTransactionIsolation is > lazily fetched. I > think it would be best to have *both* your eager > strategy and a lazy > strategy available as a backup in case the eager > strategy fails. That > way, if the DB is down when the application starts > up but comes on line > later, the defaultAutoCommit and > defaultTransactionIsolation will still > get set correctly. > > I set up the LazyConnectionDataSourceProxy in the > postProcessAfterInitialization method of a > BeanPostProcessor (as > suggested in the JavaDoc). However, when I refresh > my application > context I'm getting errors: > > ERROR > (DefaultListableBeanFactory:invokeCustomDestroyMethod) > - Couldn't > find a destroy method named 'close' on bean with > name 'carlosPool' > ERROR > (DefaultListableBeanFactory:invokeCustomDestroyMethod) > - Couldn't > find a destroy method named 'close' on bean with > name 'dev2Pool' > ERROR > (DefaultListableBeanFactory:invokeCustomDestroyMethod) > - Couldn't > find a destroy method named 'close' on bean with > name 'devDatabasePool' > > Obviously the problem is that the ApplicationContext > is attempting to > call the close method of the > LazyConnectionDataSourceProxy instead of > the close method of my underlying > org.apache.commons.dbcp.BasicDataSource. Is this > considered a feature? > I would think it would be better for the close > method of the unproxied > class to be invoked rather than the close method of > the wrapper object > created by the BeanPostProcessor. > > Matt > > Juergen Hoeller wrote: > > Guys, > > > > Please check out the following issue that I've > just addressed: > > > > > http://opensource.atlassian.com/projects/spring/browse/SPR-572 > > > > As I said in my comment, I've been wondering about > this for a while and > > finally took the occasion to implement a generic > solution for it. A > > particularly nice side effect is that it allows > for efficient > transactional > > reads with HibernateTransactionManager, avoiding > database communication > > overhead if everything can be resolved in the > second-level cache! > > > > I'll commit this in a moment, so feel free to give > it a try. > > > > Juergen > > > > > > > > > ------------------------------------------------------- > > The SF.Net email is sponsored by: Beat the > post-holiday blues > > Get a FREE limited edition SourceForge.net t-shirt > from ThinkGeek. > > It's fun and FREE -- well, > almost....http://www.thinkgeek.com/sfshirt > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the > post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt > from ThinkGeek. > It's fun and FREE -- well, > almost....http://www.thinkgeek.com/sfshirt > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the > post-holiday === message truncated === ===== Take a look at my blog: http://templth.blogspot.com/ Découvrez le nouveau Yahoo! Mail : 250 Mo d'espace de stockage pour vos mails ! Créez votre Yahoo! Mail sur http://fr.mail.yahoo.com/ |
|
From: Juergen H. <ju...@in...> - 2005-01-12 08:11:39
|
Lazy connection check added. If the eager check on startup fails, the first transaction on that DataSource will fetch a physical JDBC Connection on getAutoCommit and getTransactionIsolation to retrieve the actual defaults, keeping those default values from then on to be able to expose them without fetching a physical Connection. Juergen -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of Juergen Hoeller Sent: Wednesday, January 12, 2005 8:46 AM To: spr...@li... Subject: Re: [Springframework-developer] Re: Lazy transaction creation Matt, Regarding the issue with custom destroy methods: Indeed, the bean factory looks for them on the exposed object rather than the originally defined one; in your case, on the LazyConnectionDataSourceProxy instead of on the wrapped BasicDataSource. This is not deliberate but rather an unfortunate side effect. I've just adapted AbstractAutowireCapableBeanFactory to detect this scenario and register the original bean objects as disposable beans (implementing DisposableBean or having defined a destroy-method) if necessary. The mechanism was already there, because of a similar problem with inner beans. I'll commit the change today; please give the next nightly snapshot a try if you have the chance! I'll also add lazy defaultAutoCommit/defaultTransactionIsolation checks to LazyConnectionDataSourceProxy, kicking in when the check on startup failed. Note that you can also specify those defaults as bean properties: In that case, no check of a Connection will happen, as we assume that the specified defaults match those of the target DataSource. Juergen -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of Matt Sgarlata Sent: Wednesday, January 12, 2005 1:31 AM To: spr...@li... Subject: [Springframework-developer] Re: Lazy transaction creation Juergen - The LazyConnectionDataSourceProxy works great :) I am using a BeanNameAutoProxyCreator to automatically apply transaction management to all of my Struts Actions, yet the Actions don't fail even if the actual database is not working, so long as they don't touch the database :) One comment - I would suggest adding the ability for defaultAutoCommit and the defaultTransactionIsolation to be lazily fetched. I'm guessing you're doing an eager fetch in the afterPropertiesSet method so that only a single connection need be retrieved when the context is refreshed rather than one connection when defaultAutoCommit is lazily fetched and a separate one when defaultTransactionIsolation is lazily fetched. I think it would be best to have *both* your eager strategy and a lazy strategy available as a backup in case the eager strategy fails. That way, if the DB is down when the application starts up but comes on line later, the defaultAutoCommit and defaultTransactionIsolation will still get set correctly. I set up the LazyConnectionDataSourceProxy in the postProcessAfterInitialization method of a BeanPostProcessor (as suggested in the JavaDoc). However, when I refresh my application context I'm getting errors: ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't find a destroy method named 'close' on bean with name 'carlosPool' ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't find a destroy method named 'close' on bean with name 'dev2Pool' ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't find a destroy method named 'close' on bean with name 'devDatabasePool' Obviously the problem is that the ApplicationContext is attempting to call the close method of the LazyConnectionDataSourceProxy instead of the close method of my underlying org.apache.commons.dbcp.BasicDataSource. Is this considered a feature? I would think it would be better for the close method of the unproxied class to be invoked rather than the close method of the wrapper object created by the BeanPostProcessor. Matt Juergen Hoeller wrote: > Guys, > > Please check out the following issue that I've just addressed: > > http://opensource.atlassian.com/projects/spring/browse/SPR-572 > > As I said in my comment, I've been wondering about this for a while and > finally took the occasion to implement a generic solution for it. A > particularly nice side effect is that it allows for efficient transactional > reads with HibernateTransactionManager, avoiding database communication > overhead if everything can be resolved in the second-level cache! > > I'll commit this in a moment, so feel free to give it a try. > > Juergen > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Juergen H. <ju...@in...> - 2005-01-12 07:46:07
|
Matt, Regarding the issue with custom destroy methods: Indeed, the bean factory looks for them on the exposed object rather than the originally defined one; in your case, on the LazyConnectionDataSourceProxy instead of on the wrapped BasicDataSource. This is not deliberate but rather an unfortunate side effect. I've just adapted AbstractAutowireCapableBeanFactory to detect this scenario and register the original bean objects as disposable beans (implementing DisposableBean or having defined a destroy-method) if necessary. The mechanism was already there, because of a similar problem with inner beans. I'll commit the change today; please give the next nightly snapshot a try if you have the chance! I'll also add lazy defaultAutoCommit/defaultTransactionIsolation checks to LazyConnectionDataSourceProxy, kicking in when the check on startup failed. Note that you can also specify those defaults as bean properties: In that case, no check of a Connection will happen, as we assume that the specified defaults match those of the target DataSource. Juergen -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of Matt Sgarlata Sent: Wednesday, January 12, 2005 1:31 AM To: spr...@li... Subject: [Springframework-developer] Re: Lazy transaction creation Juergen - The LazyConnectionDataSourceProxy works great :) I am using a BeanNameAutoProxyCreator to automatically apply transaction management to all of my Struts Actions, yet the Actions don't fail even if the actual database is not working, so long as they don't touch the database :) One comment - I would suggest adding the ability for defaultAutoCommit and the defaultTransactionIsolation to be lazily fetched. I'm guessing you're doing an eager fetch in the afterPropertiesSet method so that only a single connection need be retrieved when the context is refreshed rather than one connection when defaultAutoCommit is lazily fetched and a separate one when defaultTransactionIsolation is lazily fetched. I think it would be best to have *both* your eager strategy and a lazy strategy available as a backup in case the eager strategy fails. That way, if the DB is down when the application starts up but comes on line later, the defaultAutoCommit and defaultTransactionIsolation will still get set correctly. I set up the LazyConnectionDataSourceProxy in the postProcessAfterInitialization method of a BeanPostProcessor (as suggested in the JavaDoc). However, when I refresh my application context I'm getting errors: ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't find a destroy method named 'close' on bean with name 'carlosPool' ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't find a destroy method named 'close' on bean with name 'dev2Pool' ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't find a destroy method named 'close' on bean with name 'devDatabasePool' Obviously the problem is that the ApplicationContext is attempting to call the close method of the LazyConnectionDataSourceProxy instead of the close method of my underlying org.apache.commons.dbcp.BasicDataSource. Is this considered a feature? I would think it would be better for the close method of the unproxied class to be invoked rather than the close method of the wrapper object created by the BeanPostProcessor. Matt Juergen Hoeller wrote: > Guys, > > Please check out the following issue that I've just addressed: > > http://opensource.atlassian.com/projects/spring/browse/SPR-572 > > As I said in my comment, I've been wondering about this for a while and > finally took the occasion to implement a generic solution for it. A > particularly nice side effect is that it allows for efficient transactional > reads with HibernateTransactionManager, avoiding database communication > overhead if everything can be resolved in the second-level cache! > > I'll commit this in a moment, so feel free to give it a try. > > Juergen > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Matt S. <sga...@us...> - 2005-01-12 00:31:30
|
Juergen - The LazyConnectionDataSourceProxy works great :) I am using a BeanNameAutoProxyCreator to automatically apply transaction management to all of my Struts Actions, yet the Actions don't fail even if the actual database is not working, so long as they don't touch the database :) One comment - I would suggest adding the ability for defaultAutoCommit and the defaultTransactionIsolation to be lazily fetched. I'm guessing you're doing an eager fetch in the afterPropertiesSet method so that only a single connection need be retrieved when the context is refreshed rather than one connection when defaultAutoCommit is lazily fetched and a separate one when defaultTransactionIsolation is lazily fetched. I think it would be best to have *both* your eager strategy and a lazy strategy available as a backup in case the eager strategy fails. That way, if the DB is down when the application starts up but comes on line later, the defaultAutoCommit and defaultTransactionIsolation will still get set correctly. I set up the LazyConnectionDataSourceProxy in the postProcessAfterInitialization method of a BeanPostProcessor (as suggested in the JavaDoc). However, when I refresh my application context I'm getting errors: ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't find a destroy method named 'close' on bean with name 'carlosPool' ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't find a destroy method named 'close' on bean with name 'dev2Pool' ERROR (DefaultListableBeanFactory:invokeCustomDestroyMethod) - Couldn't find a destroy method named 'close' on bean with name 'devDatabasePool' Obviously the problem is that the ApplicationContext is attempting to call the close method of the LazyConnectionDataSourceProxy instead of the close method of my underlying org.apache.commons.dbcp.BasicDataSource. Is this considered a feature? I would think it would be better for the close method of the unproxied class to be invoked rather than the close method of the wrapper object created by the BeanPostProcessor. Matt Juergen Hoeller wrote: > Guys, > > Please check out the following issue that I've just addressed: > > http://opensource.atlassian.com/projects/spring/browse/SPR-572 > > As I said in my comment, I've been wondering about this for a while and > finally took the occasion to implement a generic solution for it. A > particularly nice side effect is that it allows for efficient transactional > reads with HibernateTransactionManager, avoiding database communication > overhead if everything can be resolved in the second-level cache! > > I'll commit this in a moment, so feel free to give it a try. > > Juergen > > > > ------------------------------------------------------- > The SF.Net email is sponsored by: Beat the post-holiday blues > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt |
|
From: <al...@jt...> - 2005-01-11 23:42:51
|
<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.185</td></tr><tr><td class=3D"header-data"><span class=
=3D"header-label">Date of build: </span>01/12/2005 00:16:15</td></tr><=
tr><td class=3D"header-data"><span class=3D"header-label">Time to build:&nb=
sp;</span>23 minutes 52 seconds</td></tr><tr><td class=3D"header-data"><spa=
n class=3D"header-label">Last changed: </span>01/11/2005 19:27:06</td>=
</tr><tr><td class=3D"header-data"><span class=3D"header-label">Last log en=
try: </span>added "proxyFactory" property, for passing in a Hessian/Bu=
rlapProxyFactory instance</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: (26) </td></tr><tr><td><pre class=3D"compile-data=
">/jteam/build2/checkout/spring/spring/src/org/springframework/jdbc/support=
/lob/OracleLobHandler.java:76: warning - Tag @see: reference not found: ora=
cle.sql.BLOB<br/>/jteam/build2/checkout/spring/spring/src/org/springframewo=
rk/jdbc/support/lob/OracleLobHandler.java:76: warning - Tag @see: reference=
not found: oracle.sql.CLOB<br/>/jteam/build2/checkout/spring/spring/src/or=
g/springframework/jdbc/support/lob/OracleLobHandler.java:115: warning - Tag=
@see: reference not found: oracle.sql.BLOB#DURATION_SESSION<br/>/jteam/bui=
ld2/checkout/spring/spring/src/org/springframework/jdbc/support/lob/OracleL=
obHandler.java:115: warning - Tag @see: reference not found: oracle.sql.BLO=
B#MODE_READWRITE<br/>/jteam/build2/checkout/spring/spring/src/org/springfra=
mework/jdbc/support/lob/OracleLobHandler.java:115: warning - Tag @see: refe=
rence not found: oracle.sql.CLOB#DURATION_SESSION<br/>/jteam/build2/checkou=
t/spring/spring/src/org/springframework/jdbc/support/lob/OracleLobHandler.j=
ava:115: warning - Tag @see: reference not found: oracle.sql.CLOB#MODE_READ=
WRITE<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/jdbc=
/support/lob/OracleLobHandler.java:154: warning - Tag @see: reference not f=
ound: oracle.jdbc.OracleConnection<br/>/jteam/build2/checkout/spring/spring=
/src/org/springframework/jdbc/support/lob/OracleLobHandler.java:164: warnin=
g - Tag @see: reference not found: oracle.sql.BLOB#createTemporary<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.CLOB#createTemporary<br/>/jteam/build2/checkout/spring/spring/src/org/sp=
ringframework/jdbc/support/nativejdbc/JBossNativeJdbcExtractor.java:49: war=
ning - Tag @see: reference not found: org.jboss.resource.adapter.jdbc.Wrapp=
edConnection#getUnderlyingConnection<br/>/jteam/build2/checkout/spring/spri=
ng/src/org/springframework/jdbc/support/nativejdbc/JBossNativeJdbcExtractor=
.java:49: warning - Tag @see: reference not found: org.jboss.resource.adapt=
er.jdbc.WrappedStatement#getUnderlyingStatement<br/>/jteam/build2/checkout/=
spring/spring/src/org/springframework/jdbc/support/nativejdbc/JBossNativeJd=
bcExtractor.java:49: warning - Tag @see: reference not found: org.jboss.res=
ource.adapter.jdbc.WrappedResultSet#getUnderlyingResultSet<br/>/jteam/build=
2/checkout/spring/spring/src/org/springframework/jdbc/support/nativejdbc/We=
bLogicNativeJdbcExtractor.java:45: warning - Tag @see: reference not found:=
weblogic.jdbc.extensions.WLConnection#getVendorConnection<br/>/jteam/build=
2/checkout/spring/spring/src/org/springframework/jdbc/support/nativejdbc/We=
bSphereNativeJdbcExtractor.java:34: warning - Tag @see: reference not found=
: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection<br/>/jteam/build2/checkout/spr=
ing/spring/src/org/springframework/jdbc/support/nativejdbc/WebSphereNativeJ=
dbcExtractor.java:34: warning - Tag @see: reference not found: com.ibm.ws.r=
sadapter.jdbc.WSJdbcUtil#getNativeConnection<br/>/jteam/build2/checkout/spr=
ing/spring/src/org/springframework/jdbc/support/nativejdbc/WebSphereNativeJ=
dbcExtractor.java:34: warning - Tag @see: reference not found: com.ibm.ejs.=
cm.proxy.ConnectionProxy#getPhysicalConnection<br/>/jteam/build2/checkout/s=
pring/spring/src/org/springframework/orm/ibatis/SqlMapClientFactoryBean.jav=
a:174: warning - Tag @see: reference not found: com.ibatis.sqlmap.engine.tr=
ansaction.jdbc.JdbcTransactionConfig<br/>/jteam/build2/checkout/spring/spri=
ng/src/org/springframework/orm/ibatis/SqlMapClientFactoryBean.java:174: war=
ning - Tag @see: reference not found: com.ibatis.sqlmap.engine.transaction.=
jta.JtaTransactionConfig<br/>/jteam/build2/checkout/spring/spring/src/org/s=
pringframework/orm/ibatis/SqlMapClientFactoryBean.java:202: warning - Tag @=
see: reference not found: com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTra=
nsactionConfig<br/>/jteam/build2/checkout/spring/spring/src/org/springframe=
work/orm/ibatis/SqlMapClientFactoryBean.java:202: warning - Tag @see: refer=
ence not found: com.ibatis.sqlmap.engine.transaction.jta.JtaTransactionConf=
ig<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/transac=
tion/jta/WebLogicJtaTransactionManager.java:67: warning - Tag @see: referen=
ce not found: weblogic.transaction.TransactionManager#forceResume<br/>/jtea=
m/build2/checkout/spring/spring/src/org/springframework/transaction/jta/Web=
LogicServerTransactionManagerFactoryBean.java:45: warning - Tag @see: refer=
ence not found: weblogic.transaction.TxHelper#getTransactionManager<br/>/jt=
eam/build2/checkout/spring/spring/src/org/springframework/transaction/jta/W=
ebSphereTransactionManagerFactoryBean.java:47: warning - Tag @see: referenc=
e not found: com.ibm.ws.Transaction.TransactionManagerFactory#getTransactio=
nManager<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/t=
ransaction/jta/WebSphereTransactionManagerFactoryBean.java:47: warning - Ta=
g @see: reference not found: com.ibm.ejs.jts.jta.JTSXA#getTransactionManage=
r<br/>/jteam/build2/checkout/spring/spring/src/org/springframework/transact=
ion/jta/WebSphereTransactionManagerFactoryBean.java:47: warning - Tag @see:=
reference not found: com.ibm.ejs.jts.jta.TransactionManagerFactory#getTran=
sactionManager<br/>/jteam/build2/checkout/spring/spring/src/org/springframe=
work/web/servlet/handler/metadata/PathMap.java:31: warning - @@org.apache.c=
ommons.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: (2369) </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: =
(77) </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/remo=
ting/caucho/CauchoRemotingTests.java</td><td class=3D"modifications-data">a=
dded "proxyFactory" property, for passing in a Hessian/BurlapProxyFactory i=
nstance</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificati=
ons-data">modified</td><td class=3D"modifications-data">jhoeller</td><td cl=
ass=3D"modifications-data">src/org/springframework/remoting/caucho/BurlapCl=
ientInterceptor.java</td><td class=3D"modifications-data">added "proxyFacto=
ry" property, for passing in a Hessian/BurlapProxyFactory instance</td></tr=
><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">added=
</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modificatio=
ns-data">src/org/springframework/remoting/caucho/CauchoRemoteAccessor.java<=
/td><td class=3D"modifications-data">added "proxyFactory" property, for pas=
sing in a Hessian/BurlapProxyFactory instance</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/remoting/caucho/HessianClientInterceptor.java</td><td class=
=3D"modifications-data">added "proxyFactory" property, for passing in a Hes=
sian/BurlapProxyFactory instance</td></tr><tr class=3D"modifications-evenro=
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/hibernate/HibernateTemplate.java</td><td class=3D"modifications-data"=
>fixed javadoc typos</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/orm/jdo/Jd=
oOperations.java</td><td class=3D"modifications-data">polishing</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">src/org/springframework/orm/hibernate/HibernateOperations.java</td=
><td class=3D"modifications-data">polishing</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">test/org/spr=
ingframework/orm/jdo/JdoTransactionManagerTests.java</td><td class=3D"modif=
ications-data">added "exposeNativePersistenceManager" property, allowing to=
proxy exposed PersistenceManagers, automatically applying transaction time=
outs</td></tr><tr class=3D"modifications-evenrow"><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/jdo/JdoTemplate.java</=
td><td class=3D"modifications-data">added "exposeNativePersistenceManager" =
property, allowing to proxy exposed PersistenceManagers, automatically appl=
ying transaction timeouts</td></tr><tr class=3D"modifications-oddrow"><td c=
lass=3D"modifications-data">modified</td><td class=3D"modifications-data">j=
hoeller</td><td class=3D"modifications-data">test/org/springframework/orm/h=
ibernate/HibernateTransactionManagerTests.java</td><td class=3D"modificatio=
ns-data">proxy exposed Sessions by default, applying query cache settings a=
nd transaction timeouts</td></tr><tr class=3D"modifications-evenrow"><td cl=
ass=3D"modifications-data">modified</td><td class=3D"modifications-data">jh=
oeller</td><td class=3D"modifications-data">test/org/springframework/orm/hi=
bernate/HibernateJtaTransactionTests.java</td><td class=3D"modifications-da=
ta">proxy exposed Sessions by default, applying query cache settings and tr=
ansaction timeouts</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">test/org/springframework/orm/hibernat=
e/HibernateTemplateTests.java</td><td class=3D"modifications-data">proxy ex=
posed Sessions by default, applying query cache settings and transaction ti=
meouts</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/hibernate/HibernateT=
emplate.java</td><td class=3D"modifications-data">proxy exposed Sessions by=
default, applying query cache settings and transaction timeouts</td></tr><=
tr class=3D"modifications-oddrow"><td class=3D"modifications-data">modified=
</td><td class=3D"modifications-data">robharrop</td><td class=3D"modificati=
ons-data">test/org/springframework/web/servlet/view/jasperreports/AbstractJ=
asperReportsTests.java</td><td class=3D"modifications-data">Added support f=
or sub-reports to JasperReports code.</td></tr><tr class=3D"modifications-e=
venrow"><td class=3D"modifications-data">added</td><td class=3D"modificatio=
ns-data">robharrop</td><td class=3D"modifications-data">test/org/springfram=
ework/ui/jasperreports/ProductBean.java</td><td class=3D"modifications-data=
">Added support for sub-reports to JasperReports code.</td></tr><tr class=
=3D"modifications-oddrow"><td class=3D"modifications-data">added</td><td cl=
ass=3D"modifications-data">robharrop</td><td class=3D"modifications-data">t=
est/org/springframework/ui/jasperreports/subReportChild.jrxml</td><td class=
=3D"modifications-data">Added support for sub-reports to JasperReports code=
.</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">test/org/springframework/ui/jasperreports/subReportPare=
nt.jrxml</td><td class=3D"modifications-data">Added support for sub-reports=
to JasperReports code.</td></tr><tr class=3D"modifications-oddrow"><td cla=
ss=3D"modifications-data">modified</td><td class=3D"modifications-data">rob=
harrop</td><td class=3D"modifications-data">src/org/springframework/web/ser=
vlet/view/jasperreports/AbstractJasperReportsView.java</td><td class=3D"mod=
ifications-data">Added support for sub-reports to JasperReports code.</td><=
/tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">mo=
dified</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modif=
ications-data">changelog.txt</td><td class=3D"modifications-data">LazyInitT=
argetSource, ResourcePatternResolver, DefaultPropertiesPersister, BindExcep=
tion</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/web/context/ContextLoader.j=
ava</td><td class=3D"modifications-data">fixed javadoc link</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">src/org/springframework/context/support/MessageSourceAccessor.java</td=
><td class=3D"modifications-data">added protected "getDefaultLocale" method=
</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifications-dat=
a">modified</td><td class=3D"modifications-data">jhoeller</td><td class=3D"=
modifications-data">test/org/springframework/aop/framework/AbstractAopProxy=
Tests.java</td><td class=3D"modifications-data">polishing</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">test/org/springframework/beans/SerializablePerson.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-dat=
a">jhoeller</td><td class=3D"modifications-data">src/org/springframework/ut=
il/DefaultPropertiesPersister.java</td><td class=3D"modifications-data">rei=
mplemented DefaultPropertiesPersister's Reader/Writer persistence</td></tr>=
<tr class=3D"modifications-evenrow"><td class=3D"modifications-data">modifi=
ed</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modificat=
ions-data">src/org/springframework/util/StringUtils.java</td><td class=3D"m=
odifications-data">reimplemented DefaultPropertiesPersister's Reader/Writer=
persistence</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">test/org/springframework/context/support/Re=
sourceBundleMessageSourceTests.java</td><td class=3D"modifications-data">re=
implemented DefaultPropertiesPersister's Reader/Writer persistence</td></tr=
><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">modif=
ied</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modifica=
tions-data">test/org/springframework/context/support/messages.properties</t=
d><td class=3D"modifications-data">reimplemented DefaultPropertiesPersister=
's Reader/Writer persistence</td></tr><tr class=3D"modifications-oddrow"><t=
d class=3D"modifications-data">added</td><td class=3D"modifications-data">j=
hoeller</td><td class=3D"modifications-data">test/org/springframework/util/=
PropertiesPersisterTests.java</td><td class=3D"modifications-data">reimplem=
ented DefaultPropertiesPersister's Reader/Writer persistence</td></tr><tr c=
lass=3D"modifications-evenrow"><td class=3D"modifications-data">modified</t=
d><td class=3D"modifications-data">jhoeller</td><td class=3D"modifications-=
data">src/org/springframework/validation/BindException.java</td><td class=
=3D"modifications-data">made BindException serializable</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/validation/DefaultMessageCodesResolver.java</td><t=
d class=3D"modifications-data">made BindException serializable</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">test/org/springframework/validation/DataBinderTests.java</td><td cl=
ass=3D"modifications-data">made BindException serializable</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/web/context/support/ServletContextSupportTests.=
java</td><td class=3D"modifications-data">added ServletContextFactoryBean, =
exposing the ServletContext for bean references</td></tr><tr class=3D"modif=
ications-evenrow"><td class=3D"modifications-data">added</td><td class=3D"m=
odifications-data">jhoeller</td><td class=3D"modifications-data">src/org/sp=
ringframework/web/context/support/ServletContextFactoryBean.java</td><td cl=
ass=3D"modifications-data">added ServletContextFactoryBean, exposing the Se=
rvletContext for bean references</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">build.xml</td><td class=
=3D"modifications-data">removed jdom.jar from release</td></tr><tr class=3D=
"modifications-evenrow"><td class=3D"modifications-data">modified</td><td c=
lass=3D"modifications-data">jhoeller</td><td class=3D"modifications-data">s=
rc/org/springframework/core/io/support/PathMatchingResourcePatternResolver.=
java</td><td class=3D"modifications-data">redesigned ResourcePatternResolve=
r as extension of ResourceLoader</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=
/core/io/support/ResourcePatternResolver.java</td><td class=3D"modification=
s-data">redesigned ResourcePatternResolver as extension of ResourceLoader</=
td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data=
">modified</td><td class=3D"modifications-data">jhoeller</td><td class=3D"m=
odifications-data">src/org/springframework/core/io/ResourceLoader.java</td>=
<td class=3D"modifications-data">redesigned ResourcePatternResolver as exte=
nsion of ResourceLoader</td></tr><tr class=3D"modifications-oddrow"><td cla=
ss=3D"modifications-data">modified</td><td class=3D"modifications-data">jho=
eller</td><td class=3D"modifications-data">src/org/springframework/context/=
ApplicationContext.java</td><td class=3D"modifications-data">redesigned Res=
ourcePatternResolver as extension of ResourceLoader</td></tr><tr class=3D"m=
odifications-evenrow"><td class=3D"modifications-data">modified</td><td cla=
ss=3D"modifications-data">jhoeller</td><td class=3D"modifications-data">src=
/org/springframework/context/ResourceLoaderAware.java</td><td class=3D"modi=
fications-data">redesigned ResourcePatternResolver as extension of Resource=
Loader</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificatio=
ns-data">modified</td><td class=3D"modifications-data">jhoeller</td><td cla=
ss=3D"modifications-data">src/org/springframework/jdbc/datasource/DataSourc=
eUtils.java</td><td class=3D"modifications-data">polishing</td></tr><tr cla=
ss=3D"modifications-evenrow"><td class=3D"modifications-data">modified</td>=
<td class=3D"modifications-data">jhoeller</td><td class=3D"modifications-da=
ta">src/org/springframework/jdbc/datasource/DelegatingDataSource.java</td><=
td class=3D"modifications-data">polishing</td></tr><tr class=3D"modificatio=
ns-oddrow"><td class=3D"modifications-data">modified</td><td class=3D"modif=
ications-data">jhoeller</td><td class=3D"modifications-data">src/org/spring=
framework/jdbc/datasource/TransactionAwareDataSourceProxy.java</td><td clas=
s=3D"modifications-data">polishing</td></tr><tr class=3D"modifications-even=
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/beans/factory/config/AbstractFactoryBean.java</td><td class=3D"modifica=
tions-data">fixed "afterPropertiesSet" implementation to avoid singleton cr=
eation in case of a prototype</td></tr><tr class=3D"modifications-oddrow"><=
td class=3D"modifications-data">modified</td><td class=3D"modifications-dat=
a">jhoeller</td><td class=3D"modifications-data">src/org/springframework/tr=
ansaction/support/AbstractPlatformTransactionManager.java</td><td class=3D"=
modifications-data">polishing</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/=
jdbc/datasource/DataSourceTransactionManagerTests.java</td><td class=3D"mod=
ifications-data">added LazyConnectionDataSourceProxy</td></tr><tr class=3D"=
modifications-oddrow"><td class=3D"modifications-data">modified</td><td cla=
ss=3D"modifications-data">jhoeller</td><td class=3D"modifications-data">tes=
t/org/springframework/orm/hibernate/HibernateTransactionManagerTests.java</=
td><td class=3D"modifications-data">added LazyConnectionDataSourceProxy</td=
></tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">=
modified</td><td class=3D"modifications-data">jhoeller</td><td class=3D"mod=
ifications-data">src/org/springframework/orm/hibernate/LocalSessionFactoryB=
ean.java</td><td class=3D"modifications-data">added LazyConnectionDataSourc=
eProxy</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modificatio=
ns-data">added</td><td class=3D"modifications-data">jhoeller</td><td class=
=3D"modifications-data">src/org/springframework/jdbc/datasource/LazyConnect=
ionDataSourceProxy.java</td><td class=3D"modifications-data">added LazyConn=
ectionDataSourceProxy</td></tr><tr class=3D"modifications-evenrow"><td clas=
s=3D"modifications-data">modified</td><td class=3D"modifications-data">jhoe=
ller</td><td class=3D"modifications-data">lib/jdom/jdom.jar</td><td class=
=3D"modifications-data">temporarily re-added jdom.jar for DomifyCheckout in=
autobuilds</td></tr><tr class=3D"modifications-oddrow"><td class=3D"modifi=
cations-data">modified</td><td class=3D"modifications-data">aarendsen</td><=
td class=3D"modifications-data">docs/reference/src/mvc.xml</td><td class=3D=
"modifications-data">* Removed utility section</td></tr><tr class=3D"modifi=
cations-evenrow"><td class=3D"modifications-data">modified</td><td class=3D=
"modifications-data">aarendsen</td><td class=3D"modifications-data">docs/re=
ference/src/scheduling.xml</td><td class=3D"modifications-data">* Fixed lit=
tle doco improvement</td></tr><tr class=3D"modifications-oddrow"><td class=
=3D"modifications-data">modified</td><td class=3D"modifications-data">aaren=
dsen</td><td class=3D"modifications-data">docs/reference/src/mvc.xml</td><t=
d class=3D"modifications-data">* Added a bit more doco about chaining view =
resolvers and the XmlViewResolver</td></tr><tr class=3D"modifications-evenr=
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/crypto/digest/MessageDigestTemplate.java</td><td class=3D"modif=
ications-data">Remove dependency on Commons Codec</td></tr><tr class=3D"mod=
ifications-oddrow"><td class=3D"modifications-data">modified</td><td class=
=3D"modifications-data">jhoeller</td><td class=3D"modifications-data">sandb=
ox/test/org/springframework/enums/CodedEnumTests.java</td><td class=3D"modi=
fications-data">reformatted</td></tr><tr class=3D"modifications-evenrow"><t=
d class=3D"modifications-data">modified</td><td class=3D"modifications-data=
">jhoeller</td><td class=3D"modifications-data">sandbox/src/org/springframe=
work/enums/support/AbstractCodedEnumResolver.java</td><td class=3D"modifica=
tions-data">reformatted</td></tr><tr class=3D"modifications-oddrow"><td cla=
ss=3D"modifications-data">modified</td><td class=3D"modifications-data">jho=
eller</td><td class=3D"modifications-data">sandbox/src/org/springframework/=
enums/support/AbstractCodedEnumUserType.java</td><td class=3D"modifications=
-data">reformatted</td></tr><tr class=3D"modifications-evenrow"><td class=
=3D"modifications-data">modified</td><td class=3D"modifications-data">jhoel=
ler</td><td class=3D"modifications-data">sandbox/src/org/springframework/en=
ums/support/GenericLabeledCodedEnum.java</td><td class=3D"modifications-dat=
a">reformatted</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">sandbox/src/org/springframework/enums/sup=
port/HibernateCodedEnumResolver.java</td><td class=3D"modifications-data">r=
eformatted</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modifi=
cations-data">modified</td><td class=3D"modifications-data">jhoeller</td><t=
d class=3D"modifications-data">sandbox/src/org/springframework/enums/suppor=
t/StaticCodedEnumResolver.java</td><td class=3D"modifications-data">reforma=
tted</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">sandbox/src/org/springframework/enums/AbstractCoded=
Enum.java</td><td class=3D"modifications-data">reformatted</td></tr><tr cla=
ss=3D"modifications-evenrow"><td class=3D"modifications-data">modified</td>=
<td class=3D"modifications-data">jhoeller</td><td class=3D"modifications-da=
ta">sandbox/src/org/springframework/enums/CodedEnum.java</td><td class=3D"m=
odifications-data">reformatted</td></tr><tr class=3D"modifications-oddrow">=
<td class=3D"modifications-data">modified</td><td class=3D"modifications-da=
ta">jhoeller</td><td class=3D"modifications-data">sandbox/src/org/springfra=
mework/enums/CodedEnumEditor.java</td><td class=3D"modifications-data">refo=
rmatted</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modificat=
ions-data">modified</td><td class=3D"modifications-data">jhoeller</td><td c=
lass=3D"modifications-data">sandbox/src/org/springframework/enums/CodedEnum=
Resolver.java</td><td class=3D"modifications-data">reformatted</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">sandbox/src/org/springframework/enums/LetterCodedEnum.java</td><td c=
lass=3D"modifications-data">reformatted</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">sandbox/src/org=
/springframework/enums/ShortCodedEnum.java</td><td class=3D"modifications-d=
ata">reformatted</td></tr><tr class=3D"modifications-oddrow"><td class=3D"m=
odifications-data">modified</td><td class=3D"modifications-data">jhoeller</=
td><td class=3D"modifications-data">sandbox/src/org/springframework/enums/S=
tringCodedEnum.java</td><td class=3D"modifications-data">reformatted</td></=
tr><tr class=3D"modifications-evenrow"><td class=3D"modifications-data">mod=
ified</td><td class=3D"modifications-data">jhoeller</td><td class=3D"modifi=
cations-data">build.xml</td><td class=3D"modifications-data">reorganized bu=
ild script</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/jpetstore/build.xml</td><td class=3D"=
modifications-data">fixed library 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">samples/jp=
etstore/attributes/build.xml</td><td class=3D"modifications-data">fixed lib=
rary references</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">lib/readme.txt</td><td class=3D"modifica=
tions-data">updated FreeMarker and iBATIS SQL Maps</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">lib/=
freemarker/freemarker.jar</td><td class=3D"modifications-data">updated Free=
Marker to 2.3.1</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">lib/ibatis/ibatis-common-2.jar</td><td c=
lass=3D"modifications-data">updated iBATIS SQL Maps to 2.0.9</td></tr><tr c=
lass=3D"modifications-evenrow"><td class=3D"modifications-data">modified</t=
d><td class=3D"modifications-data">jhoeller</td><td class=3D"modifications-=
data">lib/ibatis/ibatis-sqlmap-2.jar</td><td class=3D"modifications-data">u=
pdated iBATIS SQL Maps to 2.0.9</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/ibatis/SqlMapTests.java</td><td class=3D"modifications-data">removed i=
BATIS SQL Maps 1.3 runtime libraries</td></tr><tr class=3D"modifications-ev=
enrow"><td class=3D"modifications-data">deleted</td><td class=3D"modificati=
ons-data">jhoeller</td><td class=3D"modifications-data">test/org/springfram=
ework/orm/ibatis/sql-map-config.xml</td><td class=3D"modifications-data">re=
moved iBATIS SQL Maps 1.3 runtime libraries</td></tr><tr class=3D"modificat=
ions-oddrow"><td class=3D"modifications-data">deleted</td><td class=3D"modi=
fications-data">jhoeller</td><td class=3D"modifications-data">lib/jdom/jdom=
.jar</td><td class=3D"modifications-data">removed iBATIS SQL Maps 1.3 runti=
me libraries</td></tr><tr class=3D"modifications-evenrow"><td class=3D"modi=
fications-data">deleted</td><td class=3D"modifications-data">jhoeller</td><=
td class=3D"modifications-data">lib/ibatis/ibatis-common.jar</td><td class=
=3D"modifications-data">removed iBATIS SQL Maps 1.3 runtime libraries</td><=
/tr></table><p>
<table width=3D"98%" border=3D"0" cellspacing=3D"0" cellpadding=3D"2" align=
=3D"center"><tr><td class=3D"distributables-sectionheader"> =
Deployments by this build: (16) </td>=
</tr><tr><td class=3D"distributables-data">Building jar: /jteam/build2/chec=
kout/spring/spring/dist/spring-core.jar</td></tr><tr class=3D"distributable=
s-oddrow"><td class=3D"distributables-data">Building jar: /jteam/build2/che=
ckout/spring/spring/dist/spring-aop.jar</td></tr><tr><td class=3D"distribut=
ables-data">Building jar: /jteam/build2/checkout/spring/spring/dist/spring-=
context.jar</td></tr><tr class=3D"distributables-oddrow"><td class=3D"distr=
ibutables-data">Building jar: /jteam/build2/checkout/spring/spring/dist/spr=
ing-dao.jar</td></tr><tr><td class=3D"distributables-data">Building jar: /j=
team/build2/checkout/spring/spring/dist/spring-orm.jar</td></tr><tr class=
=3D"distributables-oddrow"><td class=3D"distributables-data">Building jar: =
/jteam/build2/checkout/spring/spring/dist/spring-web.jar</td></tr><tr><td c=
lass=3D"distributables-data">Building jar: /jteam/build2/checkout/spring/sp=
ring/dist/spring-webmvc.jar</td></tr><tr class=3D"distributables-oddrow"><t=
d class=3D"distributables-data">Building jar: /jteam/build2/checkout/spring=
/spring/dist/spring.jar</td></tr><tr><td class=3D"distributables-data">Buil=
ding jar: /jteam/build2/checkout/spring/spring/dist/spring-mock.jar</td></t=
r><tr class=3D"distributables-oddrow"><td class=3D"distributables-data">Bui=
lding war: /jteam/build2/checkout/spring/spring/autobuilds/apps/buildtest/d=
ist/buildtest.war</td></tr><tr><td class=3D"distributables-data">Building w=
ar: /jteam/build2/checkout/spring/spring/autobuilds/apps/buildtest/dist/bui=
ldtest.war</td></tr><tr class=3D"distributables-oddrow"><td class=3D"distri=
butables-data">Building war: /jteam/build2/checkout/spring/spring/autobuild=
s/apps/buildtest/dist/buildtest.war</td></tr><tr><td class=3D"distributable=
s-data">Building jar: /jteam/build2/checkout/spring/spring/autobuilds/apps/=
jpetstore/war/WEB-INF/lib/jpetstore.jar</td></tr><tr class=3D"distributable=
s-oddrow"><td class=3D"distributables-data">Building war: /jteam/build2/che=
ckout/spring/spring/autobuilds/apps/jpetstore/dist/jpetstore.war</td></tr><=
tr><td class=3D"distributables-data">Building jar: /jteam/build2/checkout/s=
pring/spring/autobuilds/apps/jpetstore/war/WEB-INF/lib/jpetstore.jar</td></=
tr><tr class=3D"distributables-oddrow"><td class=3D"distributables-data">Bu=
ilding war: /jteam/build2/checkout/spring/spring/autobuilds/apps/jpetstore/=
dist/jpetstore.war</td></tr></table>
</body></html> |