Onde os arquivos JAR do driver JDBC devem residir em uma implementação do Tomcat com uma origem de dados?

Eu tenho aplicação web java usando Spring, Hibernate, Tomcat7 e MySql. Eu uso o Datasource para operações de database. Não estou muito claro sobre qual é o local padrão para carregar os arquivos jar ( Tomcat-jdbc.jar e Mysql-connector.jar ) de? Ele funciona se eu mantenho os dois jars em CATALINA_HOME/lib/ ou webapps/myApp/WEB-INF/lib . Mas me disseram para usar apenas o Tomcat-jdbc de CATALINA_HOME / lib / e o mysql-connector.jar de /WEB-INF/lib/ , que fornece uma exceção ClassNotFound para o Sql Driver . Alguém pode me informar qual é o local certo para esses flasks?

               

Isso depende de quem está gerenciando a fonte de dados.

Se você estiver construindo e gerenciando manualmente a fonte de dados em seu próprio new SomeDataSource() como o new SomeDataSource() , etc, o arquivo JAR do driver JDBC poderá ser colocado no arquivo webapp /WEB-INF/lib . Mas se o appserver fornecer o mesmo arquivo JAR do driver JDBC em seu próprio /lib , você também poderá utilizá-lo.

No entanto, se você estiver instruindo appserver para gerenciar a fonte de dados por si só e você está apenas fazendo uso dela em seu webapp via @Resource , etc, então o arquivo JAR do driver JDBC tem que ser colocado no próprio servidor /lib , a razão muito simples porque a fonte de dados é preparada na boot do appserver de forma totalmente independente de qualquer aplicativo da web (a ser) implementado. Essa fonte de dados é, por sua vez, compartilhável entre todas as aplicações web. Tecnicamente, isso simplesmente não funcionaria se o arquivo JAR do driver JDBC estivesse em um dos aplicativos da web ainda a serem implementados.

Quando se trata da localização dos flasks a serem decididos, a regra geral é que:

  1. Use um jar na localização do servidor lib.
  2. Se o jar não estiver disponível, inclua o mesmo na pasta lib do aplicativo.
  3. Para encontrar um Jars adequado, o sistema procura nos seguintes repositorys, na ordem:

Classes de bootstrap de sua JVM

Classes do carregador de classs do sistema (descritas acima)

/ WEB-INF / classs de sua aplicação web /WEB-INF/lib/*.jar de

seu aplicativo da web $ CATALINA_HOME / common / classs

$ CATALINA_HOME / common / endossado / *. Jar

$ CATALINA_HOME / common / i18n / *. Jar

$ CATALINA_HOME / common / lib / *. Jar

$ CATALINA_BASE / compartilhado / classs

$ CATALINA_BASE / shared / lib / *. Jar

Intereting Posts