java - sqlserver - pagina principal de tomcat
¿Dónde deberían residir los archivos JAR del controlador JDBC en una implementación de Tomcat con un origen de datos? (2)
Tengo una aplicación web java con Spring, Hibernate, Tomcat7 y MySql. Yo uso Datasource para las operaciones de la base de datos. No tengo muy claro cuál es la ubicación estándar para cargar los archivos jar ( Tomcat-jdbc.jar
& Mysql-connector.jar
)? Funciona si webapps/myApp/WEB-INF/lib
AMBAS las jarras en CATALINA_HOME/lib/
o webapps/myApp/WEB-INF/lib
. Pero me dijeron que use solo el Tomcat-jdbc de CATALINA_HOME / lib / y mysql-connector.jar
desde /WEB-INF/lib/
, que da una excepción ClassNotFound
para el Sql Driver
. ¿Alguien me puede decir cuál es el lugar correcto para estos frascos?
<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
<property name="initialSize" value="${db.initialSize}" />
<property name="minIdle" value="${db.minIdle}" />
<property name="maxActive" value="${db.maxActive}" />
<property name="maxIdle" value="${db.maxIdle}" />
<property name="testWhileIdle" value="${db.testWhileIdle}" />
<property name="minEvictableIdleTimeMillis" value="${db.minEvictableIdleTimeMillis}" />
<property name="timeBetweenEvictionRunsMillis" value="${db.timeBetweenEvictionRunsMillis}" />
<property name="validationQuery" value="${db.validationQuery}" />
</bean>
Eso depende de quién administre la fuente de datos.
Si está construyendo y administrando manualmente la fuente de datos en su propia aplicación web, como por new SomeDataSource()
, etc., entonces el archivo JAR del controlador JDBC se puede colocar en la aplicación web /WEB-INF/lib
. Pero si el servidor de aplicaciones proporciona el mismo archivo JAR del controlador JDBC en su propia /lib
, entonces también podría usarlo.
Sin embargo, si está ordenando al servidor de aplicaciones que administre el origen de datos por sí solo y simplemente lo utiliza en su aplicación web a través de @Resource
, etc., el archivo JAR del controlador JDBC debe colocarse en el archivo /lib
del servidor de aplicaciones, para el motivo más simple es que la fuente de datos se prepara en el inicio del servidor de aplicaciones de forma completamente independiente de las aplicaciones web (que se implementarán). Esta fuente de datos a su vez se puede compartir entre todas las aplicaciones web. Técnicamente no funcionaría si el archivo JAR del controlador JDBC se encuentra en una de las aplicaciones de Internet aún por implementar.
Cuando se trata de la ubicación de los frascos a decidir, la regla del pulgar es que:
- Use un jar en la ubicación de lib del servidor.
- Si el archivo jar no está disponible, incluya el mismo en la carpeta lib de la aplicación.
- Para encontrar un Jars adecuado, el sistema busca en los siguientes repositorios, en el orden siguiente:
Clases de Bootstrap de su JVM
Clases del cargador de clases del sistema (descritas arriba)
/ WEB-INF / classes de su aplicación web /WEB-INF/lib/*.jar de
su aplicación web $ CATALINA_HOME / common / classes
$ CATALINA_HOME / common / endorsed / *. Jar
$ CATALINA_HOME / common / i18n / *. Jar
$ CATALINA_HOME / common / lib / *. Jar
$ CATALINA_BASE / shared / classes
$ CATALINA_BASE / shared / lib / *. Jar