sql - Oracle 10g database integration in a java web application -
i'm building program in java runs through jboss 5.0.1 application server. program has consult , update tables in oracle 10g database i'm having lot of trouble it.
basically, have class called dao connects whith database , makes simple query through method "prueba()". here's implementation of class:
package dao; import java.io.file; import java.io.fileinputstream; import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; import java.util.linkedlist; import java.util.properties; import valueobject.itemfisico; public class dao { //---------------------------------------------------- //constantes //---------------------------------------------------- /** * ruta donde se encuentra el archivo de conexion. */ public final static string archivo_propiedades = "./data/conexion.properties"; //---------------------------------------------------- //atributos //---------------------------------------------------- /** * conexion con la base de datos */ public connection conexion; /** * nombre del usuario para conectarse la base de datos. */ private string usuario; /** * clave de conexion la base de datos. */ private string clave; /** * url al cual se debe conectar para acceder la base de datos. */ private string cadenaconexion; /** * constructor de la clase. no inicializa ningun atributo. */ public dao() { } // ------------------------------------------------- // metodos // ------------------------------------------------- /** * obtiene ls datos necesarios para establecer una conexion * los datos se obtienen partir de un archivo properties. */ public void inicializar() { try { file arch= new file(archivo_propiedades); properties prop = new properties(); fileinputstream in = new fileinputstream( arch ); prop.load( in ); in.close( ); cadenaconexion = prop.getproperty("url"); usuario = prop.getproperty("usuario"); clave = prop.getproperty("clave"); final string driver = prop.getproperty("driver"); class.forname(driver); } catch(exception e) { e.printstacktrace(); } } /** * metodo que se encarga de crear la conexion con el driver manager * partir de los parametros recibidos. * @param url direccion url de la base de datos la cual se desea conectar * @param usuario nombre del usuario que se va conectar la base de datos * @param clave clave de acceso la base de datos * @throws sqlexception si ocurre un error generando la conexion con la base de datos. */ private void establecerconexion(string url, string usuario, string clave) throws sqlexception { try { conexion = drivermanager.getconnection(url,usuario,clave); } catch( sqlexception exception ) { throw new sqlexception( "error: consultadao obteniendo una conexion." ); } } /** *cierra la conexion activa la base de datos. ademas, con=null. * @param con objeto de conexion la base de datos * @throws sistemacinesexception si se presentan errores de conexion */ public void closeconnection(connection connection) throws exception { try { connection.close(); connection = null; } catch (sqlexception exception) { throw new exception("error: consultadao: closeconnection() = cerrando una conexion."); } } // --------------------------------------------------- // metodos asociados los casos de uso: consulta // --------------------------------------------------- public void prueba() throws exception{ string prueba = "select * parranderos.bares b b.presupuesto='bajo' "; preparedstatement st=null; try{ inicializar(); establecerconexion(cadenaconexion, usuario, clave); st = conexion.preparestatement(prueba); resultset r= st.executequery(prueba); while(r.next()){ system.out.println(r.getint("id")+":"+r.getstring("nombre")+":"+r.getstring("ciudad")+":"+r.getstring("presupuesto")+":"+r.getstring("cant_sedes")); } } catch(exception e) { e.printstacktrace(); } finally{ if (st != null) { try { st.close(); } catch (sqlexception exception) { throw new exception("error: consultadao: loadrow() = cerrando una conexi�n."); } } closeconnection(conexion); } } }
here's thing, in class works fine, have run java application through simple main() method , performs query fine. driver .jar placed , referenced , properties used connection fine.
now, when run whole application (including other classes servlets , so) mounted on running server, , try run again method "prueba()", crashes. gets filenotfoundexception caused conexion.properties file, exists!!!.
i not expert on web applications , don't know if have make changes on server configuration or in place. can me?
the problem using absolute path ./data/conexion.properties
fine when run program locally. deploying application server, make path invalid because file in other location (e.g. /apps/jboss/.../myapp/data/conexion.properties
). in inicializar
method replace following
file arch= new file(archivo_propiedades);
with
url url = getclass().getclassloader().getresource("conexion.properties"); file arch= new file(url.getfile());
Comments
Post a Comment