Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / October 2007

Tip: Looking for answers? Try searching our database.

Create single Database connection

Thread view: 
francan00@yahoo.com - 18 Oct 2007 02:36 GMT
I would like to create a single Database connection point that I can
use for 4 classes in my Java Web Application.

Here is my ConnectionManager Class:

public class ConnectionManager {
   private static Connection activeConnection = null;
   public static Connection getConnection() {
       if (activeConnection = null) {
           Class.forName("OracleThinInfoHere...");
           activeConnection =
DriverManager.getConnection("jdbc:oracle:thin:@myname:1234:orcl",
"scott", "tiger");
);
       }
       return activeConnection;
   }
}

Now how would I access this in each one of my classes?

For example here is one:

public class MainClass
{

public ConnectionManager.getConnection(),
public Connection connection;

//I tried my db connection as this and it didnt return any results
public MainClass(connection)
{
    this.connection = ConnectionManager.getConnection();
}

public int matcher(BeanClass abc)
{
    try
    {
        new OtherDbClass(connection).insertDbMethod(abc);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    finally
    {
       //closing statements here
    }

OtherClass looks like this:
public class OtherClass {
  private Connection connection;
  public OtherClass(Connection connection)
  {
     this.connection = ConnectionManager.getConnection();
  }

public int insertDbMethod(BeanClass abc)
{
...
}

Please advise.
Arne Vajhøj - 18 Oct 2007 03:06 GMT
> I would like to create a single Database connection point that I can
> use for 4 classes in my Java Web Application.
[quoted text clipped - 14 lines]
>     }
> }

Before spending more time on this problem: redesign, because
a static connection used in a web app is not good. It is not
thread safe and web apps are multi threaded.

Arne
Lew - 18 Oct 2007 05:36 GMT
francan00@yahoo.com wrote:
>> I would like to create a single Database connection point that I can
>> use for 4 classes in my Java Web Application.

> Before spending more time on this problem: redesign, because
> a static connection used in a web app is not good. It is not
> thread safe and web apps are multi threaded.

Furthermore, most JDBC drivers include a pooled-connection type, at least a
rudimentary one, and Apache has pooling libraries that seem pretty workable.
Push that connection-pooling layer as far to the back as it will go.  Your
bizlogic should use and close connections as tightly as possible.  The pooling
driver will convert "close" into "recycle" for you.

Holding connections open in the wrong place is a scalability killer.

Signature

Lew

RedGrittyBrick - 18 Oct 2007 11:36 GMT
> Furthermore, most JDBC drivers include a pooled-connection type, at
> least a rudimentary one, and Apache has pooling libraries that seem
> pretty workable. Push that connection-pooling layer as far to the back
> as it will go.  Your bizlogic should use and close connections as
> tightly as possible.  The pooling driver will convert "close" into
> "recycle" for you.

Some URLs that might be helpful:
http://www.java2s.com/Code/Java/Apache-Common/ConnectionPoolBasics.htm
http://java.sun.com/developer/onlineTraining/Programming/JDCBook/conpool.html

When I first started with a JDBC app, having read that connections were
expensive, I tried to use a single connection and manage it's re-use
myself. Eventually I had to rework the app to use a pool of connections
(I used the code from the second URL above). Later, in order to minimise
the duration of locks, I had to rework my app to minimise the work done
between obtaining a connection and closing it (releasing it back to the
pool). Which is a long way of saying that Lew's recommendations make a
lot of sense, thinking about this now may save time later.
Chintan(Neo) - 18 Oct 2007 08:20 GMT
Hi,

Even i agree that using a single connection is not a good approach as
any method which uses it can cuddle with it and it can create problems
for other classes/methods using the same connection... But still if u
wanna use it, u can use a singleton approach... The connection class
will be like this.. THis is not the full class... all methods which
connects to the database will come in that class...

public class MyConnection {
    /** The conn. Connection for Database.*/
    private Connection conn = null;
    private static MyConnection myConnection= null;

    private MyConnection(){
        try {
            // Loads the Class
            Class.forName("<classname>");
            String url = "url";
            String username = "username";
            String password = "password";
            conn = DriverManager.getConnection(url, username, password);
            conn.setAutoCommit(false);
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static MyConnection getConnection(){
        if(myConnection == null){
            myConnection = new MyConnection();
        }
        return myConnection;
    }
}

and in any method, u want to use the database connection, just create
an object of MyConnection and call its methods to use the database
with the same connection. though i still not recommend this...

On Oct 18, 6:36 am, franca...@yahoo.com wrote:
> I would like to create a single Database connection point that I can
> use for 4 classes in my Java Web Application.
[quoted text clipped - 63 lines]
>
> Please advise.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.