Histórico da Página
Introdução
O TOTVS Intellector é uma solução para a gestão de processos decisórios, fornecendo uma interação fácil através de uma linguagem simples e prática. Este manual descreve passo-a-passo o processo de instalação do editor e servidor TOTVS Intellector para o WildFly Server versão 11.0.0.
Para quem se destina o manual
O público alvo para este manual são administradores de sistemas e application servers, e que tenha bom conhecimento de WildFly e JVM.
O que é necessário para entender esse manual
Este manual assume que os administradores tem familiaridade com os conceitos de administração e deployment do WildFly, Linux ou Windows e Sun JDK.
Pré-requisitos
Como um primeiro passo, verifique e tenha certeza de qual versão do TOTVS Intellector você deseja instalar ou atualizar. Baseado na versão, você pode determinar a compatibilidade apropriada das versões de WildFlys, Linux (veja as versões abaixo) ou Windows, e Java Oracle JDK.
- Red Hat Enterprise versões 5.x (Tikanga) e 6.x (Santiago) 64 bits;
- Cent OS versões 7.0 x 64 bits;
- Ubuntu Server versão 14.04 LTS 64 bits.
Informações adicionais:
- Configurar o encode do servidor para o formato pt_BR.iso88591 caso esteja utilizando linux.
- Permitir as conexões as portas do WildFly dentro do firewall
- Caso esteja utilizando RedHat ou Centos desabilitar o selinux.
JDK 8.0
Instale a Sun JDK 1.8 64 bits apropriada para sua plataforma. As bibliotecas JDK estão disponíveis no seguinte site: http://java.sun.com/javase/downloads/index.jsp. Recomendamos usar versão Update 202. O TOTVS Intellector NÃO FUNCIONA com JDK inferior ao Update 07 devido à API do JAXB.
...
Não se esqueça de configurar JAVA_HOME no seu ambiente, mas, forneceremos um bootstrap para o TOTVS Intellector onde essa variável é configurada. É necessário realizar essa configuração, caso necessite poderá ser colocada em outro lugar. Embora a localização da instalação da JDK seja livre, sugerimos criar uma pasta "<drive>:\opt" no Windows ou usar o "/opt" no Unix, isso ajuda para propósitos de suporte. Instalando em sistemas Unix, tenha bastante cuidado com as permissões de escrita para owner/group para o diretório do WildFly, pois o TOTVS Intellector irá precisar "escrever" nesse diretório.
WildFly
O TOTVS Intellector 9 foi homologado na versão WildFly 11.0.0. Você pode fazer o download do WildFly, para qualquer plataforma do seguinte site: https://wildfly.org/downloads/ .
Este é um bom lugar para tirar dúvidas e procurar dicas sobre o WildFly: https://wildfly.org/gethelp/ .
Instalando...
Após instalar o Java JDK e o WildFly nos locais apropriados, é necessário realizar um teste de verificação da instalação, subindo o WildFly ($JBOSS_HOME/bin/standalone.sh ou standalone.bat no Windows). Para verificar a instalação, deverá clicar na url http://localhost:9990/console de administração do application server. Se a console pedir autenticação, siga esse artigo para criar usuários que podem ter acesso ao container.
Evite instalar JDK e WildFly em diretórios que contenham espaços no nome, como "C:\Arquivo de Programas" do Windows Conheça mais sobre WildFly.
Bootstrap para WildFly e TOTVS Intellector
Os scripts de bootstrap para o TOTVS Intellector são simples, precisando apenas de pequenas modificações no que concerne a utilização de memória e variáveis de ambientes. Usar o nome run-intellector.sh no Linux/Unix e run-intellector.bat no Windows e, deve ficar em $JBOSS_HOME/bin com permissão explícita de execução (básico para os linuxers).
...
Considerando intellector.datadir=/home/intellector como diretório raiz:/home/intellector/acessos - diretório de instalação dos plugins de acesso; o TOTVS Intellector cria uma pasta para cada acesso;/home/intellector/key - diretório para as licenças do TOTVS Intellector;/home/intellector/dados - diretório raiz para persistência de cadastros (usuários, perfis, plugins, auditorias, etc.)/home/intellector/dados/person - persistência de usuários cadastrados/home/intellector/dados/audit - persistência de auditoria de execução de políticas (intellector.auditpolicy=true/false)/home/intellector/dados/plugin - persistências dos dados dos plugins instalados/home/intellector/dados/layouts - persistências de todos os layouts das políticas/home/intellector/dados/policy - persistências de todos as políticas enviadas do servidor/home/intellector/politicas - onde serão mantidas as classes das políticas compiladas/home/intellector/politicas/classes/home/intellector/politicas/classes/br/home/intellector/politicas/classes/br/com/home/intellector/politicas/classes/br/com/tools/home/intellector/politicas/classes/br/com/tools/politicas/home/intellector/tarifacao - pasta para os arquivos de Tarifação
Configurações do Application Server para o TOTVS Intellector
As seguintes configurações devem ser efetuadas no Appllication Server para que o TOTVS Intellector funcione corretamente.
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
<jms-destinations> <jms-queue name="intellectorQueue"> <entry name="queue/intellector"/> <entry name="java:jboss/exported/jms/queue/intellector"/> </jms-queue> <jms-topic name="intellectorTopic"> <entry name="topic/intellector"/> <entry name="java:jboss/exported/jms/topic/intellector"/> </jms-topic> </jms-destinations> |
Módulos a serem alterados e criados
Criar módulo e registrar os drivers de banco. Como exemplo usaremos a criação de um módulo com o driver para Postgres.
- Definições:
- Assumimos que o driver usado é a versão 9.3: postgresql-9.3-1103.jdbc4.jar.
- Será usado o método de deploy do driver diretamente no diretório de módulos do WildFly.
- Definições:
- Passos:
- Crie o caminho $JBOSS_HOME\modules\org\postgresql\main. Parte do caminho já deve existir, portanto basta criar o restante.
- Crie um arquivo com o nome $JBOSS_HOME\modules\org\postgresql\main\module.xml com o conteúdo abaixo. Repare que o conteúdo do atributo "path" refere-se ao nome do jar do driver que será usado.
- Passos:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="org.postgresql"> <resources> <resource-root path="postgresql-9.3-1103.jdbc4.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> <module name="javax.servlet.api" optional="true"/> </dependencies> </module> |
- Coloque o arquivo postgresql-9.3-1103.jdbc4.jar no mesmo diretório que o arquivo module.xml. Após esse procedimento o driver já pode ser utilizado para configurar uma conexão JNDI no arquivo standalone-full.xml ou no arquivo de configuração usado pela instância.
Criar módulo e registrar os drivers de banco. Como exemplo usaremos a criação de um módulo com o driver para Oracle.
- Criar módulo $JBOSS_HOME\modules\com\oracle\ojdbc6\main
- Baixar o jar ojdbc6-11.2.0.3.0.jar e colocar no diretório criado no item anterior.
- Criar o arquivo module.xml no diretório main e inserir o conteúdo abaixo: $JBOSS_HOME\\modules\com\oracle\ojdbc6\main\module.xml
Bloco de código | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="com.oracle.ojdbc6"> <resources> <resource-root path="ojdbc6-11.2.0.3.0.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module> |
Criar módulo e registrar os drivers de banco. Como exemplo usaremos a criação de um módulo com o driver para MSSQLSever.
- Criar módulo $JBOSS_HOME\modules\net\sourceforge\jtds\main
- Baixar o jar jtds-1.2.7jar e colocar no diretório criado no item anterior.
- Criar o arquivo module.xml no diretório main e inserir o conteúdo abaixo: $JBOSS_HOME\\modules\com\oracle\ojdbc6\main\module.xml
Bloco de código | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="net.sourceforge.jtds"> <resources> <resource-root path="jtds-1.2.7.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module> |
Spring Framework
Criar módulo para o org.springframework.spring (usar instalador do JBossWS CXF). E, depois adicionar a biblioteca spring-web (http://mvnrepository.com/artifact/org.springframework/spring-web manualmente, ele não vem com o instalador) e atualizar o arquivo $JBOSS_HOME/modules/org/springframework/spring/main/module.xml como abaixo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<resources> <resource-root path="spring-asm.jar"/> <resource-root path="spring-aop.jar"/> <resource-root path="spring-context.jar"/> <resource-root path="spring-core.jar"/> <resource-root path="spring-beans.jar"/> <resource-root path="spring-tx.jar"/> <resource-root path="spring-jms.jar"/> <resource-root path="spring-expression.jar"/> <resource-root path="spring-web.jar"/> </resources> |
CXF 2.6.4
Remover o conteúdo do diretório $JBOSS_HOME\modules\org\apache\cxf\impl\main.Baixar os jars da lista a seguir e colocar no diretório criado no item anteriorCriar o arquivo module.xml no diretório main e inserir o conteúdo abaixo:Bloco de código language xml title $JBOSS_HOME\\modules\\org\\apache\\cxf\\impl\\main\\module.xml <?xml version="1.0" encoding="UTF-8"?> <!-- ~ JBoss, Home of Professional Open Source. ~ Copyright 2012, Red Hat, Inc., and individual contributors ~ as indicated by the @author tags. See the copyright.txt file in the ~ distribution for a full listing of individual contributors. ~ ~ This is free software; you can redistribute it and/or modify it ~ under the terms of the GNU Lesser General Public License as ~ published by the Free Software Foundation; either version 2.1 of ~ the License, or (at your option) any later version. ~ ~ This software is distributed in the hope that it will be useful, ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~ Lesser General Public License for more details. ~ ~ You should have received a copy of the GNU Lesser General Public ~ License along with this software; if not, write to the Free ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. --> <module xmlns="urn:jboss:module:1.1" name="org.apache.cxf.impl"> <properties> <property name="jboss.api" value="private"/> </properties> <resources> <resource-root path="cxf-rt-bindings-coloc-2.6.4.jar"/> <resource-root path="cxf-rt-bindings-object-2.6.4.jar"/> <resource-root path="cxf-rt-bindings-soap-2.6.4.jar"/> <resource-root path="cxf-rt-bindings-xml-2.6.4.jar"/> <resource-root path="cxf-rt-core-2.6.4.jar"/> <resource-root path="cxf-rt-databinding-aegis-2.6.4.jar"/> <resource-root path="cxf-rt-databinding-jaxb-2.6.4.jar"/> <resource-root path="cxf-rt-frontend-jaxws-2.6.4.jar"/> <resource-root path="cxf-rt-frontend-simple-2.6.4.jar"/> <resource-root path="cxf-rt-management-2.6.4.jar"/> <resource-root path="cxf-rt-transports-http-2.6.4.jar"/> <resource-root path="cxf-rt-transports-jms-2.6.4.jar"/> <resource-root path="cxf-rt-transports-local-2.6.4.jar"/> <resource-root path="cxf-rt-ws-addr-2.6.4.jar"/> <resource-root path="cxf-rt-ws-mex-2.6.4.jar"/> <resource-root path="cxf-rt-ws-policy-2.6.4.jar"/> <resource-root path="cxf-rt-ws-rm-2.6.4.jar"/> <resource-root path="cxf-rt-ws-security-2.6.4.jar"/> <resource-root path="cxf-services-sts-core-2.6.4.jar"/> <resource-root path="cxf-tools-common-2.6.4.jar"/> <resource-root path="cxf-tools-java2ws-2.6.4.jar"/> <resource-root path="cxf-tools-validator-2.6.4.jar"/> <resource-root path="cxf-tools-wsdlto-core-2.6.4.jar"/> <resource-root path="cxf-tools-wsdlto-databinding-jaxb-2.6.4.jar"/> <resource-root path="cxf-tools-wsdlto-frontend-jaxws-2.6.4.jar"/> <resource-root path="cxf-xjc-boolean-2.6.1.jar"/> <resource-root path="cxf-xjc-dv-2.6.1.jar"/> <resource-root path="cxf-xjc-ts-2.6.1.jar"/> </resources> <dependencies> <module name="asm.asm" /> <module name="javax.api" /> <module name="javax.annotation.api" /> <module name="javax.jms.api" /> <module name="javax.jws.api" /> <module name="javax.mail.api" /> <module name="javax.resource.api" /> <module name="javax.servlet.api" /> <module name="javax.wsdl4j.api" /> <module name="javax.xml.bind.api" services="import"/> <module name="com.sun.xml.bind" services="import"/> <module name="javax.xml.soap.api" /> <module name="javax.xml.stream.api" /> <module name="javax.xml.ws.api" /> <module name="org.apache.commons.lang" /> <module name="org.apache.neethi" /> <module name="org.apache.velocity" /> <module name="org.apache.xml-resolver" /> <module name="org.apache.ws.xmlschema" /> <module name="org.apache.ws.security" /> <module name="org.apache.santuario.xmlsec" /> <module name="org.joda.time" /> <module name="org.opensaml" /> <module name="org.springframework.spring" optional="true"/> <module name="org.apache.cxf" export="true"/> </dependencies> </module>
Instalando uma Licença para o TOTVS Intellector
O TOTVS Intellector trabalha com 3 (três) modelos de licenciamento, Enterprise, Limited e Trial. Essas licenças estarão contidas em um único arquivo nomeado intellector.key (outro nome não será reconhecido) que deverá ser colocado no diretório ${intellector.datadir}/key. Ele poderá ser copiado para esse local a qualquer momento, não necessitando de qualquer intervenção no servidor.
...
Enterprise - totalmente livre para execução de qualquer política sem data de expiração;Limited - determinada por um tipo específico e uma data de expiração ou não;Trial - tipos de políticas livres e com uma data de expiração.
Deployment do TOTVS Intellector no WildFly
Considerando que o item instalando o WildFly foi seguido, o próximo passo será o deployment (instalação) do pacote iw-editor-*.ear em uma instância do WildFly.
...
- Copiar intellector-ear.ear dentro do diretório $JBOSS_HOME/standalone/deployments;
- Se for uma atualização de versão, simplesmente remova o iw-editor-*.ear, ANTES de extrair a nova versão. As pastas log, tmp e work situadas abaixo da instância, neste caso: $JBOSS_HOME/standalone/log, tmp, etc, poderão ser guardadas, mas é uma boa prática excluí-las.
Iniciando o WildFly
Se os passos foram seguidos e tudo correu bem, então é hora de iniciar o WildFly. No diretório $JBOSS_HOME/bin, inicie o batch simplesmente digitando ./run-intellector.sh (linux/unix) ou run-intellector.bat no Windows. Segue abaixo o início e o fim do bootstrap do WildFly:
...
Normalmente, ajustes adicionais, ou tuning, dependem de plataforma, número de requisições, escalabilidade, multi-ip, dentre outras, a mais comum é alterar a porta onde o container irá atender default é a 8080. Outros casos, como HTTPS ou load balancer, envolvendo o Apache, devem ser analisadas e não fazem parte do escopo desse manual.
Arquivo persistence.properties
Para utilização da persistência de acessos no TOTVS Intellector Server, na primeira execução antes da utilização do cache, deverá ser copiado o arquivo de configuração hibernate.cfg.xml para o diretório $JBOSS_HOME/bin, como descrito abaixo.
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
============================================================== <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory name="iw-Editor"> <!-- conexao via JNDI --> <property name="hibernate.connection.datasource">java:/intellector/totvs</property> <!-- ORACLE --> <property name="hibernate.dialect">br.com.totvs.oracle.Oracle10gDialectFix</property> <!-- MSSQL SERVER --> <!--<property name="hibernate.dialect">org.hibernate.dialect.SQLServer2012Dialect</property>--> <!-- POSTGRESQL --> <!--<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</property>--> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.enable_lazy_load_no_trans">true</property> <!-- PARA ORACLE DESCOMENTAR E DEFINIR O NOME DO SCHEMA --> <!--<property name="hibernate.default_schema">NOME_DO_SCHEMA</property>--> TODO: <!-- popula inicial da base de dados --> <!--<property name="hibernate.hbm2ddl.import_files">/import.sql</property>--> <!-- cache --> <property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.max_fetch_depth">1</property> <property name="hibernate.cache.use_minimal_puts">true</property> <property name="hibernate.use_second_level_cache">false</property> <!-- class mapping --> <mapping class="br.com.totvs.policy.IwPolitica" /> <mapping class="br.com.totvs.action.IwAcao" /> <mapping class="br.com.totvs.action.IwAcaoTipoPolitica" /> <mapping class="br.com.totvs.var.IwVariavel" /> <mapping class="br.com.totvs.var.IwVariavelPolitica" /> <mapping class="br.com.totvs.parameter.IwParameter" /> <mapping class="br.com.totvs.policy.IwCtrlEdicaoPolitica" /> <mapping class="br.com.totvs.user.IwUsuarios" /> <mapping class="br.com.totvs.profile.IwPerfil" /> <mapping class="br.com.totvs.functionality.IwFuncionalidade" /> <mapping class="br.com.totvs.policytype.IwTipoPolitica" /> <mapping class="br.com.totvs.policy.IwPoliticaObjeto" /> <mapping class="br.com.totvs.plugin.IwPlugin" /> <mapping class="br.com.totvs.trace.IntTracePolitica" /> <mapping class="br.com.totvs.policy.IntExecucaoPolitica" /> <mapping class="br.com.totvs.fare.TarExecucaoAnalitica" /> <mapping class="br.com.totvs.access.IntPersistenciaAcesso" /> <mapping class="br.com.totvs.fare.TarParametros" /> <mapping class="br.com.totvs.fare.TarLogArquivosTarifacao" /> <mapping class="br.com.totvs.fare.TarExecucaoTotalHist" /> <mapping class="br.com.totvs.fare.TarExecucaoTotal" /> <mapping class="br.com.totvs.fare.TarExecucaoDiariaHist" /> <mapping class="br.com.totvs.fare.TarExecucaoDiaria" /> <mapping class="br.com.totvs.fare.TarExecucaoAnaliticaHist" /> <mapping class="br.com.totvs.access.IntPersistenciaAcessoHist" /> <mapping class="br.com.totvs.access.IntPersistenciaAcesso" /> <mapping class="br.com.totvs.audit.IntAuditaAcesso" /> </session-factory> </hibernate-configuration> |
Configurando Pool de Conexões - JNDI - TODO: REVER AS BASES DE DADOS, NOTADAMENTE POSTGRES E MSSQL SERVER
O pool de conexão deve ser habilitado usando a console.
- Deve-se definir um banco de dados para o Intellector persistir suas informações. A definição do banco de dados é efetuada no arquivo standalone.xml na tag <datasources>. O nome do JNDI não pode ser alterado (jndi-name="java:/intellector/totvs).
.- Exemplo datasource Postgres
Formato da conexão: <IP_SERVIDOR_BANCO_DE_DADOS>:<PORTA>/<BASE>
Bloco de código language xml title Exemplo datasource Postgres <datasource jta="false" jndi-name="java:/intellector/totvs" pool-name="intellector/totvs" enabled="true" use-ccm="false"> <connection-url>jdbc:postgresql://127.0.0.1:5432/postgres</connection-url> <driver-class>org.postgresql.Driver</driver-class> <driver>postgresql-driver</driver> <pool> <min-pool-size>1</min-pool-size> <max-pool-size>30</max-pool-size> </pool> <security> <user-name>postgres</user-name> <password>01totvs02tools03</password> </security> <validation> <validate-on-match>false</validate-on-match> <background-validation>false</background-validation> </validation> <statement> <share-prepared-statements>false</share-prepared-statements> </statement> </datasource>
Exemplo datasource Oracle
Bloco de código language xml title Exemplo datasource Oracle <datasource jta="false" jndi-name="java:/intellector/totvs" pool-name="intellector/totvs" enabled="true" use-ccm="false"> <connection-url>jdbc:oracle:thin:@10.5.1.1:1521:Oralin</connection-url> <driver-class>oracle.jdbc.OracleDriver</driver-class> <driver>oracle-driver</driver> <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> <pool> <min-pool-size>5</min-pool-size> <max-pool-size>20</max-pool-size> </pool> <security> <user-name>Protheus12_teste</user-name> <password>totvs@1</password> </security> <validation> <validate-on-match>false</validate-on-match> <background-validation>false</background-validation> </validation> <statement> <share-prepared-statements>false</share-prepared-statements> </statement> </datasource>
- Exemplo datasource Postgres
Apontamento dos drivers de conexão.
Informar todos os drivers/modules que foram utilizados dentro do arquivo standalone-full.xml
Bloco de código | ||||
---|---|---|---|---|
| ||||
<drivers> <driver name="postgresql-driver" module="org.postgresql"> <driver-class>org.postgresql.Driver</driver-class> </driver> <driver name="oracle-driver" module="com.oracle.ojdbc6"> <driver-class>oracle.jdbc.OracleDriver</driver-class> </driver> <driver name="jtds-driver" module="net.sourceforge.jtds"> <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class> </driver> </drivers> |
Informações |
---|
Se referem ao banco de dados onde serão armazenadas as informações de cache e auditoria. Os bancos homologados para essas funcionalidades foram Oracle 10g e 11, SQL Server 2008 e PostgreSQL 9.x. |