Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
JavaRanch.com/granny.jsp
The moose likes Other Application Frameworks and the fly likes Injecting A DataSource Into A Factory Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Frameworks » Other Application Frameworks
Bookmark "Injecting A DataSource Into A Factory" Watch "Injecting A DataSource Into A Factory" New topic
Author

Injecting A DataSource Into A Factory

Jason Ferguson
Ranch Hand

Joined: Aug 09, 2007
Posts: 58
I am attempting to inject a DataSource into a factory class I wrote. This factory was SUPPOSED to have static methods that would take a String specifying SQL, and return a ResultSet from the SQL. This way I can call the code from a scriptlet in a JSP?

The big question will be "WHY would any sane person want to do this?" The answer is that this is an existing application that I have to fix, but am not allowed to rewrite from scratch using DAOs (*grumble*). So, I wanted to replace a bunch of ugly JDBC code in the scriptlet with something that looks like this:



However, Spring can't inject the datasource into a static variable (declared as "private static DataSource dataSource". If anyone has any ideas, I would LOVE to hear them. I don't want to have to instantiate the ResultSetFactory, because that seems to miss the point of a Factory class.

Here is my non-working code:



And here is my applicationContext.xml:



Again, any ideas are appreciated.
Herman Schelti
Ranch Hand

Joined: Jul 17, 2006
Posts: 387
hi,

you can make the method getResultSet static, but that does not mean that setDatasource and it's property have to be.

Apart from that: I don't think your code will work, if you close the connection I don't think you can access the resultset anymore.

Herman
Jason Ferguson
Ranch Hand

Joined: Sep 16, 2007
Posts: 47
Yes, I now notice this in the ResultSet javadocs... thwarted again. This explains the ugly NullPointerExceptions that I noticed 10 minutes before leaving for the day yesterday.

Originally posted by Herman Scheltinga:
hi,

you can make the method getResultSet static, but that does not mean that setDatasource and it's property have to be.

Apart from that: I don't think your code will work, if you close the connection I don't think you can access the resultset anymore.

Herman
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Injecting A DataSource Into A Factory