Será necessária utilizar a conexão via datasource do tomcat e também modificar alguns arquivos de configuração.
Premissas:
1. Executar o passo 1 em um servidor linux;
2. É necessário ter o JDK instalado corretamente.
3. É necessário ter o tomcat instalado corretamente.
Passo 1 - Criar a senha criptografada.
Será necessário ter o git no servidor de desenvolvimento para realizar o clone de um repositório do git.
cd ~
git clone https://github.com/AKSarav/SecureTomcatJDBC.git
cd SecureTomcatJDBC
No diretório SecureTomcatJDBC execute o comando abaixo
./SecureTomcatJDBC.sh
Ao executar o comando acima, será solicitado o caminho de onde o tomcat está instalado, exemplo (/opt/apache-tomcat-9.0.10). Conforme exemplo abaixo.
[root@cf3a608ec4b7 SecureTomcatJDBC]# ./SecureTomcatJDBC.sh
Enter the Tomcat Instance CATALINA_HOME ( A Parent Directory of conf/ bin/ webapps/ )
/opt/apache-tomcat-9.0.10
Após infomrar o PATH do tomcat, será solicitado a senha do banco de dados e uma outra senha que será responsável pela criptografia.
INFO: Vaidating the Tomcat Juli and Tomcat JDBC Jar files availability
INFO: Jar files are present. Good to Go
Enter the Password to Encrypt
Enter the Secret PassPhrase
Após digitar a senha de criptografi, o script deverá mostrar um hash de senha criptografada. (ENCRYPTED PASSWORD : a7e7ace89d6c2c49417418a04cdd08ce
INFO: Jar file Creation Successful. Good to Go
Password Encryption Begins
=> ENCRYPTED PASSWORD : a7e7ace89d6c2c49417418a04cdd08ce
Password Encryption Completed. Your Encrypted Password is displayed above Senha criptografada!!
Passo 1 finalizado, aqui já temos que ter a senha criptografada.
passo 2 - Configurar o Tomcat
Para realizar esta configuração será necessário adicionar o parâmetro Resource no contexto da aplicação. Nas instalações lumisportal o contexto é configurado no diretório $TOMCAT_HOME/conf/Catalina/localhost/ROOT.xml ou no arquivo correspondente ao seu contexto que pode ser portal.xml.
2.1 - Configuração do Contexto da aplicação
No seu arquivo ROOT.xml você deve ter algo como
<Context docBase="/usr/local/lumisportal/www" crossContext="true"/>
Será necessário adicionar a tag Resource na tag Context.
<Context docBase="/usr/local/lumisportal/www" crossContext="true">
<Resource name="jdbc/PortalDB"
factory="SecureTomcatDataSourceImpl"
auth="Container"
type="javax.sql.DataSource"
maxTotal="100"
minIdle="30"
maxWaitMillis="10000"
username="lumisportal"
password="a7e7ace89d6c2c49417418a04cdd08ce"
driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://localhost:1433;databaseName=lumisportal;instanceName=LUMIS;useLOBs=false;sendStringParametersAsUnicode=false"
validationQuery="select 1"
/>
Você tem que alterar os parâmetros username, maxTotal , minIdle e url conforme estão no seu lumishibernate.cfg.xml e adicionar a senha criptografa gerada no passo 1.
2.2 - Copiar o arquivo SecureTomcatJDBC.jar
Quando executamos .sh para criptografar a senha, o script também gerou um arquivo .jar, este arquivo tem que ser copiado para o diretório lib do tomcat.
cp ~/SecureTomcatJDBC/SecureTomcatJDBC.jar $TOMCAT_HOME/lib
Observação: o arquivo SecureTomcatJDBC.jar deve ser copiado para todos os tomcats do cluster do lumisportal.
Com o datasource configurado, vamos para o passo 2.3 que é a configuração do lumisportal.
Passo 2.3 - Configurar o lumisportal para utilizar o novo datasource.
Será necessário adicionar a tag resource-ref no arquivo $LUMIS_HOME/www/WEB-INF/web.xml, a nova tag pode fica no final do arquivo antes do fechamento da tag web-app.
<resource-ref>
<description>Portal DataSource</description>
<res-ref-name>jdbc/PortalDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
e para finalizar a configuração, vamos alterar o lumishibernate.cfg.xml, é neste arquivo que falaremos para o lumisportal que ele deverá utilizar o pool de conexão do datasource.
Você pode substituir todo o conteúdo do arquivo pelo conteúdo que está abaixo.
<!-- $Revision: 21582 $ $Date: 2018-07-27 19:25:37 +0000 (Fri, 27 Jul 2018) $ -->
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3..dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/PortalDB</property>
<property name="jdbc.batch_size">0</property>
<property name="max_fetch_depth">3</property>
<property name="cache.use_query_cache">true</property>
<!-- second-level cache -->
<property name="cache.provider_class">lumis.portal.dao.hibernate.PortalCacheProvider</property>
</session-factory>
</hibernate-configuration>