Pessoal, tenho várias aplicações no tomcat que acessam o mesmo banco de dados do postgres. Gostaria de saber como fazer uma configuração única ao invés de ter que colocar várias vezes a configuração de dentro de de cada aplicação. Gostaria de configurar em um único lugar que todas as aplicações tivessem visibilidade. Alguma dica?
Olá Boa tarde!
Prezado eu utilizo o Container para o envio de e-mail, da mesma forma pode ser para o banco, isto esta descrito no help do tomcat
ApplicationContext.xml
<jee:jndi-lookup id="mailSession" jndi-name="mail/Session" />
<!-- Configurar e-mail -->
<bean id="mailSender"
class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="session" ref="mailSession" />
</bean>
web.xml
<resource-ref>
<description>
Recurso referente a uma fabrica para javax.mail.Session, instancia que
pode ser utilizada para envio de e-mail preconfigurado em um servidor SMTP.
</description>
<res-ref-name>
mail/Session
</res-ref-name>
<res-type>
javax.mail.Session
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
E agora o principal no server.xml
<!-- Global JNDI resources
Documentation at /docs/jndi-resources-howto.html -->
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users -->
<Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
<!-- JavaMail JNDI Mail Session -->
<Resource name="mail/Session"
auth="Container"
description="Global E-Mail Resource"
type="javax.mail.Session"
mail.user="?????@??????.com"
mail.password="??????"
mail.debug="true"
mail.smtp.auth="true"
mail.smtp.host="smtp.??????.com"
mail.smtp.port="587"
mail.smtp.starttls.enable="false"
mail.smtp.user="usuario@??????.com"
mail.transport.protocol="smtp"
password="???????"
username="usuario@?????.com"/>
</GlobalNamingResources>
Para o caso do banco vc faz o mesmo veja este link
http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
<Resource name="jdbc/postgres" auth="Container"
type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/meubanco"
username="myuser" password="mypasswd" maxActive="20" maxIdle="10" maxWait="-1"/>
o que me deixava confuso ( e ainda deixa ) é que no projeto temos um context.xml no container também temos
a documentação do tomcat explica que existem duas formas
Compartilhada ou seja para toda e qualquer aplicação
Aplicação especifica
no caso da primeira ela não menciona o arquivo ( eu coloquei no server.xlm para enviar os e-mail´s e ta dando certo )
mais sempre faça a configuração do web.xml como descrito
Acabei colocando no context.xml mesmo e funcionou. O problema é que agora fica dando esse abaixo. Pesquisei no google e a maioria dos lugares fala que é problema de conexão que fica aberta, porém se eu mudar de volta para o server.xml o erro não acontece. Se fosse conexão aberta o erro deveria ocorrer em ambas as situações. Muito estranho…
org.postgresql.util.PSQLException: FATAL: sorry, too many clients already
Pessoal, acabei vendo que a opção menos ruim seria colocar o arquivo context.xml em conf/catalina/localhost, porém isso impossibilidade um redeploy sem reiniciar o servidor inteiro. Alguém utiliza o tomcat sem que seja apenas para desenvolvimento local?