JDBC Datasource en Tomcat
Necesite configurar JDBC Datasource en Tomcat 8.5, con el driver jtds, para una KB GeneXus 16 U3 y el generador Java, con SQLServer.
Siguiendo las instrucciones para configurar el JDBC Datasource para Tomcat 6, me daba el error:
Entonces, la solucion ademas de seguir las instrucciones del articulo del wiki, fue poner en el conf/context.xml
Con eso, quedo funcionando.
Siguiendo las instrucciones para configurar el JDBC Datasource para Tomcat 6, me daba el error:
javax.servlet.ServletException: java.lang.AbstractMethodError: net.sourceforge.jtds.jdbc. ConnectionJDBC3.isValid(I)Z at org.apache.tomcat.dbcp.dbcp2. DelegatingConnection.isValid( DelegatingConnection.java:874) at org.apache.tomcat.dbcp.dbcp2. PoolableConnection.validate( PoolableConnection.java:270) at org.apache.tomcat.dbcp.dbcp2. PoolableConnectionFactory. validateConnection( PoolableConnectionFactory. java:389) at org.apache.tomcat.dbcp.dbcp2. BasicDataSource. validateConnectionFactory( BasicDataSource.java:2398) at org.apache.tomcat.dbcp.dbcp2. BasicDataSource. createPoolableConnectionFactor y(BasicDataSource.java:2381) at org.apache.tomcat.dbcp.dbcp2. BasicDataSource. createDataSource( BasicDataSource.java:2110) at org.apache.tomcat.dbcp.dbcp2. BasicDataSource.getConnection( BasicDataSource.java:1563) at com.genexus.db.driver. GXConnection. connectJDBCDataSource(Unknown Source)
......
Despues de un rato de tratar de entender el error, encontre el articulo
https://stackoverflow.com/questions/41231750/abstractmethoderror-with-jtds-jdbc-driver-on-tomcat-8
que indicaba que habia que poner la linea
al context.xml.validationQuery="select 1"
Entonces, la solucion ademas de seguir las instrucciones del articulo del wiki, fue poner en el conf/context.xml
<Resource name="jdbc/nombredatasource"
auth="Container"
type="javax.sql.DataSource"
driverClassName="net. sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://maquina:1433/BaseDatos"
username="user"
password="********"
maxActive="8"
maxIdle="4"
validationQuery="select 1" />
Con eso, quedo funcionando.
Enrique, excelente esto, gracias por compartir.
ResponderBorrarEstoy en la misma, y me surge una duda: apagaste el connection pool de GeneXus para activar esto? Según entendí en la doc de Tomcat, definir el datasource activa el connection pool propio de Tomcat... Si es así, no veo que convivan ambos CP en producción, por eso mi duda.
Gracias!
Sebastian:
BorrarMira el articulo: https://wiki.genexus.com/commwiki/servlet/wiki?4115,JDBC+Datasource+on+JBoss
Tal vez te ayude.
Enrique
Muchas gracias Enrique, justo me estaba pasado y con esta linea funciona correctamente.
BorrarBuenas tardes.
ResponderBorrarme podrian ayudar si existe alguna propiedad dentro del archivo client.cfg la cual quisiera agregarle el nombre de la aplicacion que se conecta.
En todos los drivers jdbc que utilice tienen forma de establecer eso en el string de conexión a la base de datos. Alcanza con agregar ahí la información que quieras en el cliente.cfg
Borrar