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 servidor TOTVS Intellector para o WildFly 9 .

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   ====== PAREI AQUI EM 07/12/2016

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 JBoss, Linux (veja as versões abaixo) ou Windows, e Java Oracle JDK.

JDK 1.7

Instale a Sun JDK 1.7 64bits apropriada para sua plataforma. As bibliotecas JDK estão disponíveis no seguinte site: http://java.sun.com/javase/downloads/index.jsp

A versão atual do TOTVS Intellector para o JBoss EAP 6.3 funciona com Java SE Development Kit (JDK) 1.7.

Não é suficiente ter somente o Java Runtime Environment (JRE), é imprescindível ter a versão full-blown JDK.

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 e 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 JBoss, pois o TOTVS Intellector irá precisar "escrever" nesse diretório.

 

 JBoss

O TOTVS Intellector foi homologado nas versões JBoss 4.2.3-GA, JBoss 7.1.1 e JBoss EAP 6.3.0.GA. Você pode fazer o download do JBoss para qualquer plataforma nos seguintes sites:

 

Este é um bom lugar para tirar dúvidas e procurar dicas sobre o JBoss: http://wiki.jboss.org/ .

 

Instalando a versão EAP 6.3.0.GA

Após instalar o Java JDK e o JBoss nos locais apropriados, é necessário realizar um teste de verificação da instalação, subindo o JBoss ($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 JBoss em diretórios que contenham espaços no nome, como "C:\Arquivo de Programas" do Windows.

Conheça mais sobre JBoss Enterprise Application Platform.

 

Bootstrap para JBoss 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).

 

Linux

#!/bin/bash
# exporta variaveis de ambiente necessarias
export JAVA_OPTS="-XX:+TieredCompilation -Dprogram.name=standalone.sh -Xms512M -Xmx512M -XX:MaxPermSize=256M -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Duser.server.node=mynode -Djboss.modules.system.pkgs=org.jboss.byteman -Djboss.server.default.config=standalone-full.xml -Dfile.encoding=ISO-8859-1 -Dpersistence.configuration=$JBOSS_HOME/bin/persistence.properties"

# remove indicativo de erros no deployment
rm -fv /opt/jboss-eap6/standalone/deployments/*.failed
# atualize com seu IP
./standalone.sh -Djboss.bind.address.management=<IP_MAQUINA> -b <IP_MAQUINA>

 

Windows

rem Limpeza dos diretórios temporários
rem =============ATENÇÃO==================
rem Se você deseja manter os arquivos de log remova as linhas rmdir .\standalone\log /S /Q e mkdir .\standalone\log
 
pushd "%CD%\.."

rmdir .\standalone\tmp /S /Q
rmdir .\standalone\log /S /Q
rmdir .\standalone\data /S /Q

mkdir .\standalone\tmp
mkdir .\standalone\log
mkdir .\standalone\data

popd
 
rem alguns snipets para o bootstrap do Intellector
set JAVA_OPTS=-XX:+TieredCompilation -Dprogram.name=standalone.bat -Xms512M -Xmx536M -XX:MaxPermSize=256M -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Duser.server.node=mynode -Djboss.modules.system.pkgs=org.jboss.byteman -Djboss.bind.address.management=<IP_MAQUINA> -Djboss.server.default.config=standalone-full.xml -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n  -Dfile.encoding=ISO-8859-1

rem inicia o JBoss numa instancia e IP especificos
standalone.bat -c standalone-full.xml -b <IP_MAQUINA>

 

Área de dados para o TOTVS Intellector

O TOTVS Intellector tem uma característica de persistir alguns dados no File System da plataforma, seja persistência em XML (JAXB), seja dos plugins de acessos, políticas e layouts de políticas. Esse local de persistência, é um diretório ou uma árvore de diretórios. Você pode verificar, que no arquivo de bootstrap, existe uma variável intellector.datadir que deve apontar para um diretório válido, onde ocorrerá a persistência e o site criará o restante dos diretórios. Veja baixo uma árvore de diretórios criada pelo site:

NUNCA MODIFIQUE NADA nos diretórios abaixo de intellector.datadir.

 
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.

ATENÇÃO: Lembrar de colocar o caminho onde deseja criar o datadir na propriedade "value".

<system-properties> 
    <property name="intellector.datadir" value="<CAMINHO_DO_DATADIR>"/> 
</system-properties>
O arquivo de configuração de persistência (persistence.properties) fica armazenado no diretório $JBOSS_HOME/bin. 
Opcionalmente pode-se configurar o caminho do arquivo :
<system-properties> 
    <property name="persistence.configuration" value="<MEU_CAMINHO>/persistence.properties" />
</system-properties>

OPCIONAL: Na tag de logging (<subsystem xmlns="urn:jboss:domain:logging:1.1">) adicionar o item abaixo para que warnings sobre utilização de classes privadas da API (as commons-*, por exemplo) sejam suprimidos.

 

 

<logger category="org.jboss.as.dependency.private"> 
    <level name="ERROR"/> 
</logger>

  

 

<jms-destinations> 
 
      ....... 
 
      <!-- Acrescentar à lista de filas que já existam as filas do Intellector -->
    <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 Globais - EE Subsystem - Global Modules

Adicionar módulos globais

 

...
        <subsystem xmlns="urn:jboss:domain:ee:1.2">
            <global-modules>
                <module name="org.apache.commons.collections" slot="main"/>
				<module name="org.apache.commons.codec" slot="main"/>
                <module name="org.apache.commons.io" slot="main"/>
                <module name="org.apache.commons.beanutils" slot="main"/>
                <module name="org.apache.xerces" slot="main"/>
                <module name="org.apache.santuario.xmlsec" slot="main"/>
                <module name="org.apache.commons.lang" slot="main"/>
            </global-modules>
			...
        </subsystem>
...

 

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.

 

<?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>

 


Spring Framework - versão 4.0.5.RELEASE

 

<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ JBoss, Home of Professional Open Source.
  ~ Copyright 2011, 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.springframework.spring">
    <resources>
    <resource-root path="spring-jms-4.0.5.RELEASE.jar"/>
    <resource-root path="spring-web-4.0.5.RELEASE.jar"/>
    <resource-root path="spring-tx-4.0.5.RELEASE.jar"/>
    <resource-root path="spring-context-4.0.5.RELEASE.jar"/>
    <resource-root path="spring-aop-4.0.5.RELEASE.jar"/>
    <resource-root path="spring-expression-4.0.5.RELEASE.jar"/>
    <resource-root path="spring-beans-4.0.5.RELEASE.jar"/>
    <resource-root path="spring-core-4.0.5.RELEASE.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api" />
        <module name="javax.jms.api" />
        <module name="javax.annotation.api" />
        <module name="org.apache.commons.logging" />
        <module name="org.jboss.vfs" />
    </dependencies>
</module>

 

jTDS JDBC Driver -  MSSQL Server

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="net.sourceforge.jtds">
  <resources>
    <resource-root path="jtds-1.2.7.jar"/>
        <!-- Insert resources here -->
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>

 

Simple API For CSS

CXF 2.6.4

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.

  1. Enterprise -  totalmente livre para execução de qualquer política sem data de expiração;
  2. Limited -      determinada por um tipo específico e uma data de expiração ou não;
  3. Trial -          tipos de políticas livres e com uma data de expiração.
 
Configurando Pool de Conexões - JNDI

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 persistence.properties para o diretório $JBOSS_HOME/bin, como descrito abaixo.

TOTVS Intellector utiliza a API de persistência Hibernate de forma que este arquivo também serve para mapear as configurações mais eficazes para utilização da API.

 

#persistence.properties 
#Fri Feb 03 13:52:26 BRST 2012 
  
### Define se o intellector utilizará banco de dados para persistência dos dados de acessos e políticas 
intellector.usesdatabase=true
  
### Nome da fila utilizada pelo MDB (Não pode ser alterado) 
persistence.queue.name=queue/intellector
  
### Connection Factory 
persistence.queue.connection.factory=/ConnectionFactory
  
### Endereço da fila JMS 
persistence.jndi.address=jnp://127.0.0.1:1099 
  
### Emails de aviso de erro na fila de tarifação, separados por virgula, de preferência sem espaço 
user.emailsWarning= 
#user.emailsWarning=<e-mail>@totvs.com.br, <e-mail>@totvs.com.br 
  
### Credenciais de conexão na fila Usuário/Senha 
persistence.jndi.security.principal= 
persistence.jndi.security.credentials= 
  
### Parâmetros do Hibernate do Cache ### 
######################################## 
## Endereço JNDI da conexão 
hibernate.connection.datasource=java:/intellector/totvs
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect 
#hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect 
#hibernate.dialect=br.com.totvs.persistence.dialectfix.Oracle9iDialectFix 
#hibernate.dialect=br.com.totvs.persistence.dialectfix.Oracle10gDialectFix 
  
## auto schema export 
hibernate.hbm2ddl.auto=update 
  
# cache 
#hibernate.cache.provider_class=org.hibernate.hibernate.NoCacheProvider 
hibernate.cache.use_second_level_cache=true
hibernate.max_fetch_depth=1 
hibernate.cache.use_minimal_puts=true
  
## Delimitador de comandos específico do Banco de dados utilizado 
hibernate.hbm2ddl.delimiter=; 
  
#hibernate.session_factory_name=TSessionFactory 
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.use_sql_comments=true
hibernate.generate_statistics=true
hibernate.jdbc.batch_versioned_data=true
hibernate.use_second_level_cache=false
hibernate.use_query_cache=false
hibernate.connection.release_mode=after_transaction 
hibernate.connection.autocommit=false
hibernate.session_factory_name=sessionFactory 
hibernate.current_session_context_class=thread 
  
# transaction controll 
hibernate.transaction.flush_before_completion=false
hibernate.transaction.auto_close_session=false 
 
# Informar o schema default quando for Oracle
#hibernate.default_schema=<NOME_DO_SCHEMA>

Após criar o arquivo persistense.properties ajustar as seguines variáveis de acordo com a instalação:

  • persistence.jndi.address=jnp://<IP_MAQUINA>:1099

 

Informar o dialeto de acordo com o DMBS utilizado:

### Parâmetros do Hibernate do Cache ###
########################################
## Endereço JNDI da conexão
hibernate.connection.datasource=java:/intellector/totvs
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
#hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect
#hibernate.dialect=br.com.totvs.persistence.dialectfix.Oracle9iDialectFix
#hibernate.dialect=br.com.totvs.persistence.dialectfix.Oracle10gDialectFix

 

 

Importante ressaltar que as variáveis:

      hibernate.connection.datasource
      hibernate.dialect

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.

 

Deployment do TOTVS Intellector no JBoss

Considerando que o item instalando o JBoss foi seguido, o próximo passo será o deployment (instalação) do pacote intellector-ear.ear em uma instância do JBoss.

  1. Copiar intellector-ear.ear dentro do diretório $JBOSS_HOME/standalone/deployments;
  2. Se for uma atualização de versão, simplesmente remova o intellector-ear.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, $JBOSS_HOME/standalone/tmp e $JBOSS_HOME/standalone/work poderão ser guardadas, mas é uma boa prática excluí-las.
 
Iniciando o JBoss

Se os passos foram seguidos e tudo correu bem, então é hora de iniciar o JBoss. No diretório $JBOSS_HOME/bin, inicie o batch simplesmente digitando ./run-intellector.sh (linux/unix) ou run.bat (Windows). Segue abaixo o início e o fim do bootstrap do JBoss:

========================================================================= 
  
  JBoss Bootstrap Environment 
  
  JBOSS_HOME: /opt/jboss7
  
  JAVA: java 
  
  JAVA_OPTS: -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -client -Dprogram.name=standalone.bat -XX:+TieredCompilation -Dprogram.name=standalone.bat -Xms512M -Xmx536M -XX:MaxPermSize=256M -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djboss.bind.address.management=127.0.0.1 -Djboss.server.default.config=standalone-full.xml -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -Dfile.encoding=ISO-8859-1
  
========================================================================= 
....
09:54:44,876 DEBUG [org.jboss.logging] (main) Logging Provider: org.jboss.logging.JBossLogManagerProvider
09:54:44,891 INFO  [org.jboss.msc] (main) JBoss MSC version 1.1.5.Final-redhat-1
09:54:45,000 INFO  [org.jboss.as] (MSC service thread 1-7) JBAS015899: Iniciando JBoss EAP 6.3.0.GA (AS 7.4.0.Final-redhat-19)
09:54:56,177 DEBUG [org.jboss.as.config] (MSC service thread 1-7) Propriedades de sistema configurado:
...
  
09:56:38,051 INFO  [br.com.tools.intellector] (ServerService Thread Pool -- 72) -----------------------------------------------------------
09:56:38,051 INFO  [br.com.tools.intellector] (ServerService Thread Pool -- 72) --------- Intellector configurado com sucesso... ----------
09:56:38,051 INFO  [br.com.tools.intellector] (ServerService Thread Pool -- 72) -----------------------------------------------------------
...
09:56:38,191 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 32) JBAS018559: Implantado "intellector-ear-06.1137.001.22967.ear" (runtime-name: "intellector-ear-06.1137.001.22967.ear")
...
09:56:38,426 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015961: A interface do gerenciamento ouvindo no http://127.0.0.1:9990/management
09:56:38,426 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: O console de administração ouvindo no http://127.0.0.1:9990
09:56:38,442 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.3.0.GA (AS 7.4.0.Final-redhat-19) iniciado em 114205ms - Iniciado 661 de serviços 697 (os serviços 75 são lazy, passivos ou em demanda)

 

Configurações adicionais

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.