He podido configurar mi fuente de datos en una aplicación web, pero no puedo replicarla en una aplicación independiente.
La fuente de datos está configurada como archivo server.xml en el servidor tomcat en la carpeta de configuración. ¿Cómo puedo cargar la fuente de datos de este archivo en una aplicación Java independiente? si pruebo con
Context initialContext = new InitialContext(); DataSource dataSource = (DataSource) csDBEnvContext.lookup(DATASOURCE_NAME);Da la siguiente excepción:
javax.naming.NoInitialContextException: es necesario especificar el nombre de la clase en la propiedad del entorno o del sistema, o como un parámetro de subprograma, o en un archivo de recursos de la aplicación: java.naming.factory.initial
El mismo código cuando se intenta usar la aplicación web se ejecuta bien.
El nombre de username y password están redactados ya que es un entorno de producción.
Aquí está el jdbc.java :
public static void main(String[] args) throws Exception { Context initContext = new InitialContext(); Context envContext = (Context) initContext.lookup("java:comp/env"); DataSource ds = (DataSource) envContext.lookup("jdbc/haryana"); //Connection conn = ds.getConnection(); try { DatabaseMetaData dataSource = null; conn = ds.getConnection(); } catch (Exception e) { System.out.println("Exception while getting local JDBC Connection getLogsJdbcConnection(): " + e.getMessage()); }Contexto.xml :
<Context crossContext="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> <Resource name="jdbc/haryana" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="postgres" password="postgres" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/fps_ws_db_feb17"/> </Context>archivo web.xml :
<resource-ref> <description>Database connection resource</description> <res-ref-name>jdbc/haryana</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth>¿Alguien puede ayudarme a rectificar esta excepción?