Espero que no estoy pidiendo un duplicado de la pregunta porque yo era incapaz de encontrar una respuesta.
Estoy recibiendo este error:

javax.nomenclatura.NamingException: error de Búsqueda para la «jdbc/osclassDB’ en SerialContext

Esto es lo que hice: he creado un JDBC Connection Pool y un de Recursos JDBC apuntando a la piscina (tanto en Glassfish).

Entonces me dije a mi web.xml que no es un Recurso JDBC:

<resource-ref>
    <res-ref-name>jdbc/osclassDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>                
</resource-ref>

Y, a continuación, he intentado utilizar ese recurso en un Servlet:

  Connection connection = null;

  try {        
     InitialContext initialContext = new InitialContext();
     //Context dbContext = (Context) initialContext.lookup("java:comp/env");

     DataSource dataSource = (DataSource) initialContext.lookup("jdbc/osclassDB");
     connection = dataSource.getConnection();

     if (connection == null) {
         throw new SQLException("Error establishing connection!");
     }
     //some queries here
  } 
  //catch and finally close connection

Pero cuando me llaman la Servlet me arroja el NamingException y me dice que el Lookup failed for 'jdbc/osclassDB' in SerialContext

¿Qué estoy haciendo mal aquí? es el web.xml? ¿me olvido de algo?
Gracias por su ayuda!

InformationsquelleAutor GameDroids | 2014-01-15

1 Comentario

  1. 2

    Resuelto el problema:

    1 de mediante la adición de un sun-web.xml que vincula la de referencia de recursos de la web.xml a una real jndi-name (el que me la instalación de Glassfish). Normalmente, no debería ser necesario (como dice Oracle), pero lo hice de todos modos [Editar: como resulta que no es realmente necesario! ]

    me fui de la «jdbc«. En el servlet, el web.xml y la sun-web.xml ahora se llama simplemente «osclassDB» (mi nombre de recurso) en lugar de «jdbc/osclassDB»

    ahora se parece a esto:

    web.xml

    <resource-ref>
        <res-ref-name>osclassDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>                
    </resource-ref>

    sun-web.xml

    <resource-ref>
        <res-ref-name>osclassDB</res-ref-name>
        <jndi-name>osclassDB</jndi-name>  
    </resource-ref> 

    en el servlet

    Context dbContext = (Context) initialContext.lookup("java:comp/env");
    DataSource dataSource = (DataSource) dbContext.lookup("osclassDB");
    connection = dataSource.getConnection();

    [Modificar:] la sun-web.xml no es realmente necesario

Dejar respuesta

Please enter your comment!
Please enter your name here