style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Conexión JNDI y DataSource

Buenas a todos ,

por favor necesito que me ayuden llevo días buscando por internet y no encuentro mucha información .

Lo que quiero es hacer un Pool de Conexiones con el Servidor de Aplicaciones "GlassFish" , ya he creado el Pool y el Recurso ("jdbc/Oracle") en el servidor he hecho un PING y todo correcto , hasta ahí voy bien .

Ahora lo que me falta es desde mi aplicación poder conectarme a la BD , el codigo que uso es este

// @Resource(mappedName = "jdbc/Oracle")
// @Resource(name = "jdbc/Oracle")

public static void main(String[] args) throws NamingException{

DataSource ds = null;
Statement st = null;
ResultSet rs = null;

try{
// try (Connection cnx = ds.getConnection()) {

InitialContext initialContext = new InitialContext();
// Context env= (Context)initialContext.lookup("java:comp/env");
ds = (DataSource) initialContext.lookup("jdbc/Oracle");
Connection cnx = ds.getConnection();
}
}

como se puede observar lo he intentado de varias formas , he leido por internet que tengo que configurar mi archivo "WEB.XML" y crear otro
"SUM-WEB.XML" he configurado uno y creado el otro , pero nada ya se me estan agotando las ideas y las paginas en google para ver ,
por favor necesito su apoyo .

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.

Re: Conexión JNDI y DataSource

 

Aunque es posible acceder a un pool de conexiones en GlassFish de manera externa, a saber, desde otra máquina virtual —o también, desde otro proceso java.exe—, no se recomienda hacerlo.

Porque para ejecutar ese pequeño código que has puesto, yo supongo que lo ejecutas como otro proceso, ya que Glassfish no interpreta el método public static void main(String[] args).


Para poder acceder directamente al pool de conexiones en Glassfish, necesitas utilizar una instancia de alguna clase que administre GlassFish. Es decir, un servlet, un EJB, un webservice, etc. Ejemplo:

@WebServlet("/test")
public class TestServlet extends HttpServlet {

    @Resource(lookup = "jdbc/sample")
    private DataSource ds;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String query = "SELECT current_timestamp FROM sysibm.sysdummy1";
        try (Connection conn = ds.getConnection();
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery(query)) {
            if (rs.next()) {
                log(rs.getString(1));
            }
        } catch (SQLException e) {
            log("Bad things happen to good people.", e);
        }
    }

}

El ejemplo anterior utiliza uno de pools de conexiones que GlassFish trae por defecto. Verás en el log algo similar a:

Info:   WebModule[null] ServletContext.log():test.TestServlet: 2016-02-04 09:53:18.073

Aquí hay otro código de ejemplo que utiliza InitialContext.doLookup.

¡Por si sirve de algo!

~~~

Depende

Para conectarte a la base de datos por JNDI depende de lo que tienes en el código, puedes hacerlo a muy muy muy bajo nivel con JDBC o con las anotaciones también se configura, pero bueno como no existe proyecto demo ni nada por el estilo te dejare como se conecta un proyecto con Spring y Hibernate a la base de datos por medio de JNDI saludos.

http://www.ingenieroperales.com/2016/02/12/primeros-pasos-con-spring-6/

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">