Múltiplas instâncias do Pentaho (BI) em base dados hsql no mesmo computador
Dica publicada em Linux / Introdução
Múltiplas instâncias do Pentaho (BI) em base dados hsql no mesmo computador
Pode parecer algo muito simples, mas já vi em muitos lugares o uso de várias máquinas para o software em questão e a
justificativa de não ser possível executar mais de uma instância ao mesmo tempo.
Me deparei com este problema recentemente, depois de muita busca no nosso amigo Google e consulta a pessoas que trabalham com as ferramentas, consegui solucionar este 'problemão', que não passa de conflito de portas entre o Tomcat e o hsql, utilizados pelo Pentaho.
Como tive dificuldade em encontrar informações específicas sobre este problema na rede, resolvi compartilhar a solução, espero que seja útil! ;)
Obs.: Na alteração das portas do Tomcat, adotamos o padrão de adicionar uma unidade a cada centena da porta. Por exemplo, a porta padrão do Tomcat 8080 é alterada para 8180.
Padrão de portas:
Tomcat:
HSQL: 9001
Nos exemplos a tag indica o caminho de instalação da aplicação.
Bom, vamos ao trabalho:
1. Alterar no arquivo\biserver-ce\tomcat\conf\server.xml , as portas:
maxThreads="150"
minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8543" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
enableLookups="false"
redirectPort="8543" protocol="AJP/1.3" />
2. No arquivo\biserver-ce\tomcat\conf\server-minimal.xml configurar as
portas seguintes de acordo com as alterações feitas no Tomcat.
3. No arquivo\biserver-ce\tomcat\webapps\pentaho\WEB-
INF\web.xml , adicionar a porta do Tomcat ao parâmetro:
http://localhost:8180/pentaho/
Obs.: A porta informada deve ser a mesma configurada anteriormente no Tomcat.
4. Criar o arquivo\biserver-ce\data\servers.properties com o seguinte conteúdo:
Obs.: Este arquivo precisa ser criado em todas as instâncias do Pentaho configuradas na máquina, inclusive na instância que utiliza as portas padrão. O parâmetro server.port determina a porta usada pelo HSQL.
5. No arquivo\biserver-ce\data\stop_hypersonic.bat adicionar a porta do HSQL,
configurada no servers.properties, na linha:
6. No arquivo\biserver-ce\pentaho-solutions\system\hibernate\hibernate-
settings.xml altere o parâmetro config-file conforme exemplo:
system/hibernate/hsql.hibernate.cfg.xml
7. No arquivo\biserver-ce\pentaho-
solutions\system\hibernate\hsql.hibernate.cfg.xml altere as seguintes propriedades:
org.hsqldb.jdbcDriver
jdbc:hsqldb:hsql://localhost:9998/hibernate
org.hibernate.dialect.HSQLDialect
8. No arquivo\biserver-ce\tomcat\webapps\pentaho\META-
INF\context.xml adicionar a porta de conexão do banco nas seguintes urls de conexão:
9. Deixar o arquivo\biserver-ce\pentaho-solutions\system\applicationContext-
spring-security-hibernate.properties com o seguinte conteúdo:
10. No arquivo\biserver-ce\pentaho-solutions\system\applicationContext-spring-
security-jdbc.xml adicionar a porta da base de dados à url de conexão:
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
11. No arquivo\biserver-ce\pentaho-solutions\system\simple-
jndi\jdbc.properties , alterar a porta da base de dados nas seguintes urls de conexão:
Me deparei com este problema recentemente, depois de muita busca no nosso amigo Google e consulta a pessoas que trabalham com as ferramentas, consegui solucionar este 'problemão', que não passa de conflito de portas entre o Tomcat e o hsql, utilizados pelo Pentaho.
Como tive dificuldade em encontrar informações específicas sobre este problema na rede, resolvi compartilhar a solução, espero que seja útil! ;)
Configuração das aplicações
Como a incompatibilidade é gerada pelas uso das mesmas portas, a solução encontrada foi alterar todas as portas comuns aos serviços.Obs.: Na alteração das portas do Tomcat, adotamos o padrão de adicionar uma unidade a cada centena da porta. Por exemplo, a porta padrão do Tomcat 8080 é alterada para 8180.
Padrão de portas:
Tomcat:
- Server port: 8005
- Connector port (HTTP): 8080
- Redirector port: 8443
- Connector port (AJP): 8009
HSQL: 9001
Nos exemplos a tag
Bom, vamos ao trabalho:
1. Alterar no arquivo
enableLookups="false" redirectPort="8543" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
2. No arquivo
3. No arquivo
Obs.: A porta informada deve ser a mesma configurada anteriormente no Tomcat.
4. Criar o arquivo
server.port=9998
server.database.0=file:/biserver-ce/data/hsqldb
server.dbname.0=sampledata
server.database.1=file:/biserver-ce/data/hsqldb
server.dbname.1=hibernate
server.database.2=file:/biserver-ce/data/hsqldb
server.dbname.2=quartz
server.database.0=file:
server.dbname.0=sampledata
server.database.1=file:
server.dbname.1=hibernate
server.database.2=file:
server.dbname.2=quartz
Obs.: Este arquivo precisa ser criado em todas as instâncias do Pentaho configuradas na máquina, inclusive na instância que utiliza as portas padrão. O parâmetro server.port determina a porta usada pelo HSQL.
5. No arquivo
"%_PENTAHO_JAVA%" -cp %tempclasspath% org.hsqldb.util.ShutdownServer -url "jdbc:hsqldb:hsql://localhost:9998/%1" -user
"SA" -password ""
6. No arquivo
7. No arquivo
8. No arquivo
Resource Name: jdbc Hibernate
driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:hsql://localhost:9998/hibernate"
Resource Name: jdbc Quartz
driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:hsql://localhost:9998/quartz
driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:hsql://localhost:9998/hibernate"
Resource Name: jdbc Quartz
driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:hsql://localhost:9998/quartz
9. Deixar o arquivo
jdbc.driver=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://localhost:9998/hibernate
jdbc.username=hibuser
jdbc.password=password
hibernate.dialect=org.hibernate.dialect.HSQLDialect
jdbc.url=jdbc:hsqldb:hsql://localhost:9998/hibernate
jdbc.username=hibuser
jdbc.password=password
hibernate.dialect=org.hibernate.dialect.HSQLDialect
10. No arquivo
11. No arquivo
SampleData/url=jdbc:hsqldb:hsql://localhost:9998/sampledata
Hibernate/url=jdbc:hsqldb:hsql://localhost:9998/hibernate
Quartz/url=jdbc:hsqldb:hsql://localhost:9998/quartz
Shark/url=jdbc:hsqldb:hsql://localhost:9998/shark
SampleDataAdmin/url=jdbc:hsqldb:hsql://localhost:9998/sampledata
Hibernate/url=jdbc:hsqldb:hsql://localhost:9998/hibernate
Quartz/url=jdbc:hsqldb:hsql://localhost:9998/quartz
Shark/url=jdbc:hsqldb:hsql://localhost:9998/shark
SampleDataAdmin/url=jdbc:hsqldb:hsql://localhost:9998/sampledata