pool de conexiones static o no static?

Buenas tengo una duda , he creado un datasource en el JBoss, y en mi clase tengo esto, pero tengo una duda al momento de abrirla tengo que instanciar la clase conexion , cual es la diferencia si es declarada como static y en lugar de instanciarla donde se vaya a usar , esto afectaria en el performance?, les agradezco su consejo y orientacion

package com.App2.conn;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class ConexionJNDI {

private static DataSource datasource = null;

public ConexionJNDI() throws Exception{
try {
Context ctx = new InitialContext();

datasource = (DataSource) ctx.lookup( "java:/MyDBDS" );

if ( datasource == null )
{
String message = "Could not find our DataSource in MyDBDS. We're about to have problems.";
System.err.println("*** " + message);
throw new Exception(message);
}
} catch (NamingException e) {
e.printStackTrace();
}
}

/**
* Dole out the connections here.
*/
public static synchronized Connection getConnection()
throws SQLException
{
return datasource.getConnection();
}

/**
* Must close the database connection to return it to the pool.
*/
public static synchronized void cerrarConexion(Connection connection)
{
try
{
connection.close();
}
catch (Exception e)
{
System.err.println("MyDBDS: Threw an exception closing a database connection");
e.printStackTrace();
}
}

}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de julgo

datasource

el datasource solo es necesario que lo recuperes una ves , puede ser estatico y tus métodos también ,pero lo has hecho de la manera equivocada , una mejor opcion es inicializar el datasource en un bloque estatico y te olvidas del tema de tener que instanciarlo o no , en cuanto a tus métodos de abrir y cerrar no tienen por que ser sincronizados el método:   es thread safe .

Como lo recuperas una ves?

Como lo recuperas una ves? julgo , gracias por tu amable respuesta, yo lo tengo en una clase asi:

 

Y para usarlo en alguna clase lo pongo asi:

 

Espero lo este empleando bien, les agradezco sus comentarios

Gracias

Imagen de julgo

cambia esto   public static

cambia esto
  por esto:   el lookup ponlo en el inicializador estatico -> static { //todo lo que inicializas una ves }

Me quedo asi julgo:   

Me quedo asi julgo:

 

Espero asi este mejor, en espera de sugerencias

Gracias

Imagen de julgo

ultimo

ya pero saca  no se por que lo tienes y peor aun es static, ten cuidado con compartir las conexiones.
y lo ultimo ya seria que investigues que uso tiene   creo que no lo necesitas , aver revisalo y comentas para que a alguien mas le sirva.

Que tal julgo lo deje asi  

Que tal julgo lo deje asi

 

Espero asi no comparta conexiones, en espera de comentarios

Gracias nuevamente