Se estiver usando a configuração baseada em esquema XML do Spring, configure no contexto do Spring assim:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd">
...
<jee:jndi-lookup id="dbDataSource"
jndi-name="jdbc/DatabaseName"
expected-type="javax.sql.DataSource" />
Como alternativa, configure usando uma configuração de bean simples como esta:
<bean id="DatabaseName" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/DatabaseName"/>
</bean>
Você pode declarar o recurso JNDI no server.xml do tomcat usando algo como isto:
<GlobalNamingResources>
<Resource name="jdbc/DatabaseName"
auth="Container"
type="javax.sql.DataSource"
username="dbUser"
password="dbPassword"
url="jdbc:postgresql://localhost/dbname"
driverClassName="org.postgresql.Driver"
initialSize="20"
maxWaitMillis="15000"
maxTotal="75"
maxIdle="20"
maxAge="7200000"
testOnBorrow="true"
validationQuery="select 1"
/>
</GlobalNamingResources>
E referencie o recurso JNDI no web context.xml do Tomcat da seguinte maneira:
<ResourceLink name="jdbc/DatabaseName"
global="jdbc/DatabaseName"
type="javax.sql.DataSource"/>
Documentação de referência:
Editar: esta resposta foi atualizada para o Tomcat 8 e o Spring 4. Houve algumas alterações no nome da propriedade para a configuração do pool de recursos de fonte de dados padrão do Tomcat .
Com o mecanismo JavaConfig do Spring, você pode fazer o seguinte:
fonte
Supondo que você tenha uma definição de fonte de dados "sampleDS" dentro da configuração do tomcat, você pode adicionar as seguintes linhas ao seu
applicationContext.xml
para acessar a fonte de dados usando JNDI.Você deve definir o espaço para nome e o local do esquema para o
jee
prefixo usando:fonte
Documentação: C.2.3.1
<jee:jndi-lookup/>
(simples)Exemplo:
Você só precisa descobrir a que nome JNDI o seu appserver ligou a fonte de dados. Isso é totalmente específico do servidor, consulte os documentos em seu servidor para descobrir como.
Lembre-se de declarar o
jee
espaço para nome na parte superior do seu arquivo beans, conforme descrito em C.2.3 O esquema jee .fonte
Outro recurso: em vez de server.xml, você pode adicionar a tag "Resource" em
your_application / META-INF / Context.xml (de acordo com os documentos do tomcat ), como este:
fonte
De acordo com a página de instruções do Apache Tomcat 7 JNDI Datasource , deve haver uma configuração de recurso no web.xml:
Isso funciona para mim
fonte
Na sua aula de primavera, você pode injetar um feijão anotado como
e você adiciona isso no seu context.xml
Você pode declarar o recurso JNDI no server.xml do tomcat usando
voltar a context.xml de spring adicione isso
se, como este exemplo, você estiver injetando conexão com o banco de dados, verifique se o jar do MySQL está presente no diretório lib do tomcat, caso contrário, o tomcat não poderá criar o pool de conexões do banco de dados MySQL.
fonte
Achei esta solução muito útil de uma maneira limpa para remover completamente a configuração xml.
Por favor, verifique esta configuração de banco de dados usando JNDI e framework Spring. http://www.unotions.com/design/how-to-create-oracleothersql-db-configuration-using-spring-and-maven/
Neste artigo, ele explica como é fácil criar uma configuração de banco de dados com base na configuração do banco de dados jndi (db / test). Depois de concluir a configuração, todos os repositórios db serão carregados usando este jndi. Eu achei útil. Se o @Pierre tiver problemas com isso, entre em contato. É uma solução completa para escrever a configuração de banco de dados.
fonte