Ambiente Desenvolvimento e Produção: mudanças entre as edições
(19 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 11: | Linha 11: | ||
* '''Eclipse IDE''' | * '''Eclipse IDE''' | ||
** Versão: Eclipse IDE 2023-06 R [https://www.eclipse.org/downloads/packages/release/2023-06/r site da versão] ou download direto do [https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2023-06/R/eclipse-jee-2023-06-R-win32-x86_64.zip arquivo zip]. | ** Versão: Eclipse IDE 2023-06 R (4.28.0 / Build id: 20230608-1333) [https://www.eclipse.org/downloads/packages/release/2023-06/r site da versão] ou download direto do [https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2023-06/R/eclipse-jee-2023-06-R-win32-x86_64.zip arquivo zip]. | ||
* '''Android Studio''' | |||
** Versão: Android Studio Koala | 2024.1.1 | |||
* '''MySQL Workbench''' | * '''MySQL Workbench''' | ||
Linha 173: | Linha 176: | ||
<pre>FLUSH PRIVILEGES;</pre>}} | <pre>FLUSH PRIVILEGES;</pre>}} | ||
= Instalação do Android Studio = | |||
Após baixar a versão homologada, siga os passos e faça a instalação 'padrão' oferecida pelo Android Studio. | |||
= Instalação do WildFly = | = Instalação do WildFly = | ||
Linha 192: | Linha 199: | ||
** Procure a linha ''''#JAVA_HOME="/opt/java/jdk"'''', remova o '#' e a corrija para que aponte para o JDK homologado | ** Procure a linha ''''#JAVA_HOME="/opt/java/jdk"'''', remova o '#' e a corrija para que aponte para o JDK homologado | ||
=== Adicionando Usuário Administrador | == Módulo sunPKCS11 == | ||
O BIS depende do módulo externo sunpkcs11.jar que é fornecido pela SUN dentro do java. No entanto, por padrão essa biblioteca fica inacessível por não ter suporte direto nem garantia de manutenção em versões futuras (como todos os pacotes sun.*). Para que o WildFly carregue esse pacote e disponibilize para as aplicações precisamos configurá-lo como um módulo adicional. Para isso é necessário criar o arquivo ''''WILDFLY_HOME\modules\system\layers\base\sun\security\pkcs11\main\module.xml'''', com o seguinte conteúdo: | |||
<pre> | |||
<module xmlns="urn:jboss:module:1.0" name="sun.security.pkcs11"> | |||
<resources> | |||
<resource-root path="c:/Program Files/java/jdk1.8.0_301/jre/lib/ext/sunpkcs11.jar"/> | |||
</resources> | |||
<dependencies> | |||
<module name="javax.api"/> | |||
<module name="javax.xml.bind.api"/> | |||
</dependencies> | |||
</module> | |||
</pre> | |||
{{nota|Caminho fixo da versão do Java|Note que o caminho acima está fixado para o home do Java, e precisa ser corrigido conforme a necessidade.}} | |||
Uma vez disponibilizado, é necessário garantir que o EAR contenha o arquivo solicitando esse módulo. Para isso o pacote EAR deve conter o arquivo ''''META-INF\jboss-deployment-structure.xml'''', com o seguinte conteúdo: | |||
<pre> | |||
<jboss-deployment-structure> | |||
<deployment> | |||
<dependencies> | |||
<module name="sun.security.pkcs11" export="true"/> | |||
</dependencies> | |||
</deployment> | |||
</jboss-deployment-structure> | |||
</pre> | |||
== Adicionando Usuário Administrador == | |||
# Execute o comando '''WILDFLY_HOME\bin\add-user'''' | # Execute o comando '''WILDFLY_HOME\bin\add-user'''' | ||
Linha 212: | Linha 256: | ||
[[Imagem:wildflyadduser.png|link=|center]] | [[Imagem:wildflyadduser.png|link=|center]] | ||
== Incluindo o Driver JDBC do MySQL == | == Incluindo o Driver JDBC do MySQL == | ||
Linha 237: | Linha 280: | ||
== Liberando Conexões Remotas == | |||
=== Para acesso HTTP === | |||
Por padrão o WildFly, dentro do seu arquivo de configurações '''standalone.xml''' confém a seguinte configuração: | |||
<pre> | |||
<interface name="public"> | |||
<inet-address value="${jboss.bind.address:127.0.0.1}"/> | |||
</interface> | |||
</pre> | |||
Para permitir conexões remotas, altere para: | |||
<pre> | |||
<interface name="public"> | |||
<any-address/> | |||
</interface> | |||
</pre> | |||
Alternativamente, você pode especificar um endereço IP específico ou usar "0.0.0.0" para aceitar conexões de qualquer IP, ou definir os IPs que que serão aceitas as conexões: | |||
<pre> | |||
<interface name="public"> | |||
<inet-address value="0.0.0.0"/> | |||
</interface> | |||
</pre> | |||
=== Para acesso Remoto (JNDI) aos EJBs === | |||
As configurações descritas aqui consideram que o servidor será levantado na função '''standalone''', logo, as configurações a seguir devem ser feitas no arquivo '''standalone.xml'''. | |||
* No WildFly o acesso JNDI é realizado por padrão na porta HTTP, assim, a liberação da porta HTTP no passo anterior precisa ser realizada para que a conexão de acesso seja permitida. | |||
* Garanta que os blocos a seguir estão presentes e configurados como segue: | |||
{{nota|Configurações Adicionais e Versões dos Componentes|Note que as ocnfigurações a seguir são apenas para referência, ao examinar o arquivo você poderá encontrar versões dos componentes diferentes, como '''urn:jboss:domain:undertow:12.0''' ao invés de '''urn:jboss:domain:undertow:4.0'''. | |||
Além disso, dentro de cada bloco podem haver outras configurações (outras tags) para configurações de outros componentes, por exemplo, dentro da tag <code><socket-binding-group></code> podem haver vósrios sockets para diversos serviços além dos mencionados. Nenhuma outra configuração deve ser removida das tags mencionadas, apenas as mencionadas acrescentadas ou ajustadas conforme necessário.}} | |||
<pre> | |||
<subsystem xmlns="urn:jboss:domain:undertow:4.0"> | |||
<server name="default-server"> | |||
<http-listener name="default" socket-binding="http" redirect-socket="https"/> | |||
</server> | |||
</subsystem> | |||
</pre> | |||
<pre> | |||
<socket-binding-group name="standard-sockets" default-interface="public"> | |||
<socket-binding name="http" port="8080"/> | |||
<socket-binding name="https" port="8443"/> | |||
</socket-binding-group> | |||
</pre> | |||
<pre> | |||
<subsystem xmlns="urn:jboss:domain:remoting:4.0"> | |||
<http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/> | |||
</subsystem> | |||
</pre> | |||
Para permitir a autenticação de um usuário remoto, é preciso desativar a autenticação como Local, ou ela criará conflito. Para isso, no bloco exibido abaixo desative a autenticação ''''JBOSS-LOCAL-USER''''. | |||
<pre> | |||
<sasl-authentication-factory name="application-sasl-authentication" sasl-server-factory="configured" security-domain="ApplicationDomain"> | |||
<mechanism-configuration> | |||
<!-- Remova ou comente a linha abaixo --> | |||
<!-- <mechanism mechanism-name="JBOSS-LOCAL-USER" realm-mapper="local"/> --> | |||
<mechanism mechanism-name="DIGEST-MD5"> | |||
<mechanism-realm realm-name="ApplicationRealm"/> | |||
</mechanism> | |||
</mechanism-configuration> | |||
</sasl-authentication-factory> | |||
</pre> | |||
==== Adicionar um usuário para acesso JNDI ==== | |||
No WildFly, o usuário de aplicação (utilizado para a conexão JNDI remota) é adicionado usando o script add-user.sh (para Linux/macOS) ou add-user.bat (para Windows). Navegue até o diretório bin do WildFly: | |||
<pre> | |||
cd /caminho/para/wildfly/bin | |||
</pre> | |||
Execute o script de adição de usuário: | |||
<pre> | |||
./add-user.sh | |||
ou | |||
add-user.bat | |||
</pre> | |||
'''Selecione o tipo de usuário:''' | |||
O script solicitará que você escolha o tipo de usuário. Escolha a opção '''Application User''' (usuário de aplicação): | |||
<pre> | |||
What type of user do you wish to add? | |||
a) Management User (mgmt-users.properties) | |||
b) Application User (application-users.properties) | |||
</pre> | |||
Escolha b para Application User. | |||
Defina o nome de usuário e a senha: | |||
<pre> | |||
Nome de usuário: bisremoto (ou o nome que preferir). | |||
Senha: Defina uma senha segura. | |||
</pre> | |||
'''Atribua um papel ao usuário:''' | |||
O script solicitará que você informe os grupos (papéis) aos quais o usuário pertence. Para a conexão JNDI, você pode atribuir um papel genérico como user: | |||
<pre> | |||
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]: user | |||
Confirmação: O script irá confirmar a adição do usuário. Após a confirmação, o usuário será registrado nos arquivos application-users.properties e application-roles.properties. | |||
</pre> | |||
Ao final, quando perguntar: | |||
<pre> | |||
Is this new user going to be used for one AS process to connect to another AS process? | |||
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server Jakarta Enterprise Beans calls. | |||
yes/no? yes | |||
</pre> | |||
Responda '''yes'''. | |||
=== Forçando Autenticação de Aplicações Locais (em Loopback) === | |||
Por padrão, o Wildfly permite qualquer usuário/senha quando a chamada JNDI é realizada a partir da mesma máquina. Porém, para impedir esse comportamento você pode comentar a linha com a tag '''<local>''' como mostrado no bloco a seguir: | |||
<pre> | |||
<security-realm name="ApplicationRealm"> | |||
<server-identities> | |||
<ssl> | |||
<keystore path="application.keystore" relative-to="jboss.server.config.dir" keystore-password="password" alias="server" key-password="password" generate-self-signed-certificate-host="localhost"/> | |||
</ssl> | |||
</server-identities> | |||
<authentication> | |||
<!-- <local default-user="$local" allowed-users="*" skip-group-loading="true"/> --> | |||
<properties path="application-users.properties" relative-to="jboss.server.config.dir"/> | |||
</authentication> | |||
<authorization> | |||
<properties path="application-roles.properties" relative-to="jboss.server.config.dir"/> | |||
</authorization> | |||
</security-realm> | |||
</pre> | |||
==== Exemplo Acesso Remoto ==== | |||
O RFW disponibiliza a classe '''[[RUJNDI]]''' com métodos utilitários para facilitar a conexão JNDI, tanto local quanto remotamente. Um desses métodos é o '''lookupRemoteContextWildFly24''', que permite recuperar instâncias de EJB utilizando host, porta e credenciais de autenticação JNDI, além do nome completo JNDI. O exemplo abaixo mostra como utilizá-lo: | |||
<syntaxhighlight lang="java"> | |||
String host = "localhost"; | |||
int port = 8080; | |||
String user = "user"; | |||
String password = "senha"; | |||
String jndiName = "ejb:/MyApp/MyEJBModule/MyFacade!com.example.MyFacadeRemote"; | |||
try { | |||
Object myFacade = RUJNDI.lookupRemoteContextWildFly24( host, port, user, password, jndiName ); | |||
// Cast para a interface remota esperada | |||
MyFacadeRemote facade = (MyFacadeRemote) myFacade; | |||
} catch (RFWException e) { | |||
e.printStackTrace(); | |||
} | |||
</syntaxhighlight> | |||
Esse código realiza uma conexão JNDI remota passando os argumentos de host, porta, usuário, senha e nome JNDI completo, para buscar uma instância remota de EJB. | |||
===== BIS 2 ===== | |||
No BIS2 o processo de conexão JNDI pode ser simplificado utilizando as classes '''[[BISKernel]]''' e '''[[BISModules]]''', que abstraem o nome completo do módulo. Isso permite que o desenvolvedor forneça apenas os parâmetros necessários de acordo com o tipo de conexão. No caso local, nenhum argumento é necessário, e mesmo no caso remoto é possível abstrair o nome do EJB, como mostrado a seguir: | |||
<syntaxhighlight lang="java"> | |||
String host = "localhost"; | |||
int port = 8080; | |||
String user = "bisremoto"; | |||
String password = "bisremoto"; | |||
// Obtém a fachada de BISModules | |||
BISModulesFacadeRemote facadeModules = BISModules.getBISModulesFacade( host, port, user, password ); | |||
// Obtém a fachada do kernel | |||
BISKernelFacadeRemote facadeKernel = BISKernel.getBISKernelFacade( host, port, user, password ); | |||
</syntaxhighlight> | |||
=== Timeout Operações EJB === | |||
Caso a aplicação esteja lenta, ou algumas operações estejam resultando em Timeout do EJB (forçando um Rollback e fechando a conexão com o banco). Um timeout pode ser definido como o exemplo a seguir: | |||
<pre> | |||
<subsystem xmlns="urn:jboss:domain:transactions:5.0"> | |||
<core-environment> | |||
<process-id> | |||
<uuid/> | |||
</process-id> | |||
</core-environment> | |||
<recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> | |||
<coordinator-environment default-timeout="300" enable-statistics="false"/> | |||
<!-- Outros elementos --> | |||
</subsystem> | |||
</pre> | |||
Repare o atributo <code>default-timeout="300"</code> na tag <code>coordinator-environment</code>. O valor é definido em segundos, e no exemplo está definindo em 5 minutos. A ausência desta definição "normalmente" utiliza o valor padrão de 5 minutos (300 segungos). | |||
== Iniciando o Servidor == | == Iniciando o Servidor == | ||
Linha 246: | Linha 504: | ||
O BIS por enquanto não tem necessidade de rodar em um ambiente dividido em múltiplos servidores e domínios, por isso é executando no modo standalone tanto no ambiente de Homologação quanto de Produção.}} | O BIS por enquanto não tem necessidade de rodar em um ambiente dividido em múltiplos servidores e domínios, por isso é executando no modo standalone tanto no ambiente de Homologação quanto de Produção.}} | ||
== Configuração do Datasource == | == Configuração do Datasource == | ||
Linha 278: | Linha 535: | ||
## Security Domain - deixar em branco | ## Security Domain - deixar em branco | ||
# Teste a conexão e finalize a criação do DS | # Teste a conexão e finalize a criação do DS | ||
=== Configuração do DataSource BIS2 === | |||
# Acesse ''''Configuratoin -> Subsystem -> Datasources & Drivers -> Datasources''''. | |||
# Clique no Botão ''''+'''' e escolha a opção ''''Add Datasoruce''' para adicionar um novo DataSource. (Não seleciona a opção XA!) | |||
# Escolha a opção ''''Custom''''. Apesar de existir uma opção do MySQL, ela não permite as configurações necessárias. | |||
# Em '''Atributes''' preencha com: | |||
## Name - '''BISERPDS''' | |||
## JNDI Name - '''java:/jdbc/BISERPDS''' | |||
# Em '''JDBC Driver''' apenas escolha o driver que configuramos anteriormente '''MySQL''' | |||
# Em '''Connection''' complete com: | |||
## Connectino URL - '''jdbc:mysql://localhost:3306/biserp?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=America%2FSao_Paulo''' | |||
## User Name - '''Usuário do MySQL''' | |||
## Password - '''Senha do MySQL''' | |||
## Security Domain - deixar em branco | |||
# Teste a conexão e finalize a criação do DS | |||
Linha 327: | Linha 602: | ||
{{nota|Versão Java Eclipse|Apesar do BIS2 e BIS10 utilizarem a versão 1.8, a versão homologada do Eclipse já utiliza a versão 17 ou superior. No entanto o eclipse utiliza um java 'embedded' para executar, não é necessário instalar um java adicional na máquina só para a execução do Eclipse.}} | {{nota|Versão Java Eclipse|Apesar do BIS2 e BIS10 utilizarem a versão 1.8, a versão homologada do Eclipse já utiliza a versão 17 ou superior. No entanto o eclipse utiliza um java 'embedded' para executar, não é necessário instalar um java adicional na máquina só para a execução do Eclipse.}} | ||
Linha 353: | Linha 615: | ||
'''Configuração do Módulo''' | '''Configuração do Módulo''' | ||
# Após a instalação vá no menu ''''Windows > Preferences'''', no caminho ''''Java > JAutoDoc'''' e clique no botão ''''Import All...'''' para importar as configurações usadas no projeto BIS. | # Após a instalação vá no menu ''''Windows > Preferences'''', no caminho ''''Java > JAutoDoc'''' e clique no botão ''''Import All...'''' para importar as configurações usadas no projeto BIS. | ||
# O arquivo com as opções salvas ficam no projeto '''' | # O arquivo com as opções salvas ficam no projeto ''''RFW.Kernel'''' em ''''etc\Eclipse Setup\Eclipse JAutoDoc.xml''''. | ||
== Configurando o JDK e Bibliotecas no Eclipse == | == Configurando o JDK e Bibliotecas no Eclipse == | ||
Linha 383: | Linha 643: | ||
# Termine os passos do Wizard até finalizar. Aguarde o fim da instalação e reinicie se for solicitado. | # Termine os passos do Wizard até finalizar. Aguarde o fim da instalação e reinicie se for solicitado. | ||
# Após o término e reinicio do Eclipse, volte à aba ''''Servers'''' e clique em adicionar um novo servidor novamente. | # Após o término e reinicio do Eclipse, volte à aba ''''Servers'''' e clique em adicionar um novo servidor novamente. | ||
# Desta vez escolha a opção '''' | # Desta vez escolha a opção ''''WildFly24+'''', e deixe o Server Name como ''''WildFly''''. | ||
# Clique em ''''Next'''. | # Clique em ''''Next'''. | ||
# Na próxima imagem escolha a opção 'Filesystem and shell pperations' para que o Eclipse controle o WildFly corretamente. | # Na próxima imagem escolha a opção 'Filesystem and shell pperations' para que o Eclipse controle o WildFly corretamente. | ||
Linha 390: | Linha 649: | ||
#:[[Imagem:wildfly29-3.png|link=|center]] | #:[[Imagem:wildfly29-3.png|link=|center]] | ||
# Na definição de RunTime, selecione o ambiente conforme homologado. | # Na definição de RunTime, selecione o ambiente conforme homologado. | ||
# Clique em Finish | # Clique em Finish | ||
Linha 397: | Linha 655: | ||
Para configurar essas e outras definições de preferências do Eclipse é recomendado importar as preferências do Eclipse a partir do arquivo salvo no projeto '''RFW.Kernel''' na pasta '''etc\Eclipse Setup\Eclipse v2023_06 Preferences - Rodrigo.epf''' | |||
# Vá em ''''Window -> Preferences'''' | |||
# Na parte inferior clique em importar preferência | |||
# Navegue até o arquivo e importe as configurações disponíveis. | |||
'''''Em caso de falha será necessário configurar o Eclipse manualmente conforme definições a seguir:''''' | |||
=== Organização dos Imports === | === Organização dos Imports === | ||
Linha 440: | Linha 700: | ||
* | * | ||
* @author Nome do Author | * @author Nome do Author | ||
* @since | * @since (${date}) | ||
*/ | */ | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
Linha 511: | Linha 771: | ||
=== Instalação no BIS10 === | |||
O BIS10 utiliza o plugin '''MetaObjectGenerator_3.0.0.jar''', que já é a versão atualizada e migrada para o RFW. | |||
Para o | Para habilitar o plugin, clique com o botão direito do mouse no projeto em que o plugin precisa ser habilitado (projeto em que estão os VOs), e siga o menu: '''Configurações > Enable RFW VO_ Generator''' | ||
=== Instalação no BIS2 === | |||
O BIS2 utiliza o plugin mais antigo: '''BISMetaObjectGenerator_2.0.2.zip'''. E o nome do plugin no meu '''Configurações''' é '''Enable BIS MetaObject Generator''' | |||
}} | {{nota|Ambos os Plugins Podem ser Instalados no Eclipse Simultaneamente|Ambos os plugins podem estar instalados no Eclipse ao mesmo tempo, mas '''jamais não devem ser habilitados ao mesmo tempo no mesmo projeto'''.}} | ||
= MySQL Workbench = | = MySQL Workbench = |
Edição atual tal como às 15h10min de 8 de outubro de 2024
Ambiente e Versões Homologados
![]() |
|
As versões dos sistemas utilizados são:
- Eclipse IDE
- Versão: Eclipse IDE 2023-06 R (4.28.0 / Build id: 20230608-1333) site da versão ou download direto do arquivo zip.
- Android Studio
- Versão: Android Studio Koala | 2024.1.1
- MySQL Workbench
- Versão: 8.0.18
- Versionamento do Código
- Passamos a utilizar o Git, e hospedando o código em sua maioria em repositórios privados no GitHUb.
- Java
- jdk-8u301 x64 - Por padrão para os módulos e aplicações WEB
- jdk-8u301 x32 - Para alguns módulos e aplicações que exigem a versão 32 (como por exemplo o BISPDV que precisa acessar as bibliotecas DLL do SAT).
- Página de Download do Java 1.8 (versões legadas):
- Servidor de Aplicações WildFly
- Versão: wildfly-24.0.1.Final
Instalação do JDK
- Baixe a versão do JDK homologada;
- Execute e siga os passos do Wizard para completar a instalação. (Preferencialmente aceite as opções padrão de instalação)
Desabilitar Auto Update
Para evitar problemas de atualização automática, ou mesmo consumo de banda, vamos desligar a atualização automática do java no servidor. A atualização automática pode trocar a versão do Java por uma não homologada pelo BIS, fazendo com que funções importantes deixem de funcionar adequadamente. Por isso a atualização do JDK só é feita manualmente e na versão homologada.
Para desabilitar a atualização automática proceda da seguinte forma:
- Abra o Painel de Controles > Java
- Na Aba Atualizar, desmarque a caixa Verificar se Há Atualizações Automaticamente.
- Ao desmarcar aparece um diálogo de confirmação, clique em Não Marcar
- Confirme clicando em OK
Instalação do MySQL
Utilizando o Instalador para Windows
- Execute o Instalador e escolha a opção de instalação apenas do Servidor.
![]() |
|
- Ao fim da instalação o será iniciado o processo de configuração do Servidor, escolhas as seguintes opções:
- Standalone MySQL Server / Classic MySQL Replication, next;
- Config Type: Server Machine, next;
- Configure a senha do banco como biserp2003, não adicione nenhuma outra conta, next;
- Configure o serviço com o nome mysql, e deixe rodar como Standard Service Account, next;
- Em Plugins e Exceptions não há nada para alterar, next;
- Clique em Execute para configurar o servidor.
- Finalize o Wizard principal de instalação.
![]() |
|
Utilizando o ZIP - Sem instalador
- Descompacte o conteúdo na pasta desejada. No windows, recomendável o próprio C:
- (Opcional) Renomeie a pasta para "MySQL", removendo a definição da versão da pasta. Caso necessário a versão pode ser obtida pelo comando:
mysql --version
- Crie um arquivo my.ini na pasta do mysql e cole o seguinte conteúdo corrigindo os caminhos:
[mysqld] # set basedir to your installation path basedir=c:\\mysql # set datadir to the location of your data directory datadir=c:\\mysql\\data # set directory to export files on dump #secure-file-priv=c:/Dumps # Troca o padrão do SQL_MODE para que seja possível usar select com groupBy e colunas que não estejam agregadas, sem ter que usar a função any_value() em casa coluna do select. # O valor definido aqui é o valor padrão do próprio MySQL removendo apenas o ONLY_FULL_GROUP_BY, acrescentado a partir da versão 5.7.x como padrão. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION # Força que cada tabela do InnoDB tenha seu próprio arquivo, evitando que o mysql cresça sem limites os arquivos 'ibdata1' e 'ibdata?' innodb_file_per_table=1
![]() |
|
- O MySQL do ZIP não contem a pasta "data" criada com as tabelas iniciais do banco "mysql". Para cria-la utilize o comando:
mysqld --initialize-insecure
- Note que este comando inicializará o banco com um usuário root sem senha, mas vamos configura-la na sessão seguinte.
- Para inicializar o servidor e verificar se tudo corre bem, utilize o seguinte comando:
mysqld --console
- Para instalar o MySQL como um serviço do windows utilize:
mysqld --install <servicename>
![]() |
|
- Para inicializar o MySQL como um serviço utilize:
net start mysql
Configurar o MySQL
- Acesse o MySQL executando o comando abaixo:
c:\mysql\bin\mysql -uroot -p
![]() |
|
- Caso não tenha definido uma senha para o root, é bom defini-la. Para definir a senha de um usuário utilize a sintaxe:
SET PASSWORD FOR 'root'@'localhost' = 'biserp2003';
- Cria uma nova base de dados com o nome "bis_kernel" para as tabelas compartilhadas do sistema e a "bis_bis" para base da primeira empresa (a própria BIS):
CREATE DATABASE bis_kernel; CREATE DATABASE bis_bis;
- Muda para entre as bases de dados criadas com o comando:
USE bis_kernel;
ou
USE bis_bis;
- Importe o(s) script(s) base nesta base de dados com o comando abaixo. Comece pelo script do kernel, já que as tabelas das empresas tem FKs que dependem da base do kernel.
mysql -uroot -p bis_kernel <filename_path>\bis_kernel_10.0.0.sql;
e
mysql -uroot -p bis_bis <filename_path>\bis_bis_10.0.0.sql;
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
Instalação do Android Studio
Após baixar a versão homologada, siga os passos e faça a instalação 'padrão' oferecida pelo Android Studio.
Instalação do WildFly
- Faça o 'download' da versão homologada pelo BIS.
- Descompacte o conteúdo em 'C:\'
Definindo o caminho do Java
Para garantir que o WildFly utilizará o Java homologado, e não o java padrão disponível no sistema, é preciso forçar o caminho do JAVA_HOME em suas configurações.
- No Windows
- Edite o arquivo 'WILDFLY_HOME\bin\standalone.conf.bat'
- Procure a linha 'rem set "JAVA_HOME=C:\opt\jdk1.6.0_23"', remova o 'rem' e a corrija para que aponte para o JDK homologado
- No Linux
- Edite o arquivo 'WILDFLY_HOME\bin\standalone.conf'
- Procure a linha '#JAVA_HOME="/opt/java/jdk"', remova o '#' e a corrija para que aponte para o JDK homologado
Módulo sunPKCS11
O BIS depende do módulo externo sunpkcs11.jar que é fornecido pela SUN dentro do java. No entanto, por padrão essa biblioteca fica inacessível por não ter suporte direto nem garantia de manutenção em versões futuras (como todos os pacotes sun.*). Para que o WildFly carregue esse pacote e disponibilize para as aplicações precisamos configurá-lo como um módulo adicional. Para isso é necessário criar o arquivo 'WILDFLY_HOME\modules\system\layers\base\sun\security\pkcs11\main\module.xml', com o seguinte conteúdo:
<module xmlns="urn:jboss:module:1.0" name="sun.security.pkcs11"> <resources> <resource-root path="c:/Program Files/java/jdk1.8.0_301/jre/lib/ext/sunpkcs11.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.xml.bind.api"/> </dependencies> </module>
![]() |
|
Uma vez disponibilizado, é necessário garantir que o EAR contenha o arquivo solicitando esse módulo. Para isso o pacote EAR deve conter o arquivo 'META-INF\jboss-deployment-structure.xml', com o seguinte conteúdo:
<jboss-deployment-structure> <deployment> <dependencies> <module name="sun.security.pkcs11" export="true"/> </dependencies> </deployment> </jboss-deployment-structure>
Adicionando Usuário Administrador
- Execute o comando WILDFLY_HOME\bin\add-user'
- Escolha a opção 'Management User'
- Crie o usuário 'bis'
- Senha 'biserp2003'
- Deixe em branco os grupos adicionais do usuário (apenas pressione ENTER)
- Confirme com 'Yes' as próximas perguntas
![]() |
|

Incluindo o Driver JDBC do MySQL
- Baixe o JDBC homologado pelo BIS
- Para a versão 8.0.11: baixe com
wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-8.0.11.tar.gz
- Descompacte com
sudo tar -xvf mysql-connector-java-8.0.11.tar.gz
- Para a versão 8.0.11: baixe com
- Cria a pasta 'WILDFLY_HOME\modules\system\layers\base\com\mysql\main'
- Copie o JAR do JDBC para esta pasta
- Crie um arquivo 'module.xml' dentro da pasta com o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?> <module name="com.mysql" xmlns="urn:jboss:module:1.9"> <resources> <resource-root path="mysql-connector-java-8.0.11.jar" /> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
Liberando Conexões Remotas
Para acesso HTTP
Por padrão o WildFly, dentro do seu arquivo de configurações standalone.xml confém a seguinte configuração:
<interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </interface>
Para permitir conexões remotas, altere para:
<interface name="public"> <any-address/> </interface>
Alternativamente, você pode especificar um endereço IP específico ou usar "0.0.0.0" para aceitar conexões de qualquer IP, ou definir os IPs que que serão aceitas as conexões:
<interface name="public"> <inet-address value="0.0.0.0"/> </interface>
Para acesso Remoto (JNDI) aos EJBs
As configurações descritas aqui consideram que o servidor será levantado na função standalone, logo, as configurações a seguir devem ser feitas no arquivo standalone.xml.
- No WildFly o acesso JNDI é realizado por padrão na porta HTTP, assim, a liberação da porta HTTP no passo anterior precisa ser realizada para que a conexão de acesso seja permitida.
- Garanta que os blocos a seguir estão presentes e configurados como segue:
![]() |
|
<subsystem xmlns="urn:jboss:domain:undertow:4.0"> <server name="default-server"> <http-listener name="default" socket-binding="http" redirect-socket="https"/> </server> </subsystem>
<socket-binding-group name="standard-sockets" default-interface="public"> <socket-binding name="http" port="8080"/> <socket-binding name="https" port="8443"/> </socket-binding-group>
<subsystem xmlns="urn:jboss:domain:remoting:4.0"> <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/> </subsystem>
Para permitir a autenticação de um usuário remoto, é preciso desativar a autenticação como Local, ou ela criará conflito. Para isso, no bloco exibido abaixo desative a autenticação 'JBOSS-LOCAL-USER'.
<sasl-authentication-factory name="application-sasl-authentication" sasl-server-factory="configured" security-domain="ApplicationDomain"> <mechanism-configuration> <!-- Remova ou comente a linha abaixo --> <!-- <mechanism mechanism-name="JBOSS-LOCAL-USER" realm-mapper="local"/> --> <mechanism mechanism-name="DIGEST-MD5"> <mechanism-realm realm-name="ApplicationRealm"/> </mechanism> </mechanism-configuration> </sasl-authentication-factory>
Adicionar um usuário para acesso JNDI
No WildFly, o usuário de aplicação (utilizado para a conexão JNDI remota) é adicionado usando o script add-user.sh (para Linux/macOS) ou add-user.bat (para Windows). Navegue até o diretório bin do WildFly:
cd /caminho/para/wildfly/bin
Execute o script de adição de usuário:
./add-user.sh ou add-user.bat
Selecione o tipo de usuário:
O script solicitará que você escolha o tipo de usuário. Escolha a opção Application User (usuário de aplicação):
What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties)
Escolha b para Application User.
Defina o nome de usuário e a senha:
Nome de usuário: bisremoto (ou o nome que preferir). Senha: Defina uma senha segura.
Atribua um papel ao usuário:
O script solicitará que você informe os grupos (papéis) aos quais o usuário pertence. Para a conexão JNDI, você pode atribuir um papel genérico como user:
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]: user Confirmação: O script irá confirmar a adição do usuário. Após a confirmação, o usuário será registrado nos arquivos application-users.properties e application-roles.properties.
Ao final, quando perguntar:
Is this new user going to be used for one AS process to connect to another AS process? e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server Jakarta Enterprise Beans calls. yes/no? yes
Responda yes.
Forçando Autenticação de Aplicações Locais (em Loopback)
Por padrão, o Wildfly permite qualquer usuário/senha quando a chamada JNDI é realizada a partir da mesma máquina. Porém, para impedir esse comportamento você pode comentar a linha com a tag <local> como mostrado no bloco a seguir:
<security-realm name="ApplicationRealm"> <server-identities> <ssl> <keystore path="application.keystore" relative-to="jboss.server.config.dir" keystore-password="password" alias="server" key-password="password" generate-self-signed-certificate-host="localhost"/> </ssl> </server-identities> <authentication> <!-- <local default-user="$local" allowed-users="*" skip-group-loading="true"/> --> <properties path="application-users.properties" relative-to="jboss.server.config.dir"/> </authentication> <authorization> <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/> </authorization> </security-realm>
Exemplo Acesso Remoto
O RFW disponibiliza a classe RUJNDI com métodos utilitários para facilitar a conexão JNDI, tanto local quanto remotamente. Um desses métodos é o lookupRemoteContextWildFly24, que permite recuperar instâncias de EJB utilizando host, porta e credenciais de autenticação JNDI, além do nome completo JNDI. O exemplo abaixo mostra como utilizá-lo:
String host = "localhost";
int port = 8080;
String user = "user";
String password = "senha";
String jndiName = "ejb:/MyApp/MyEJBModule/MyFacade!com.example.MyFacadeRemote";
try {
Object myFacade = RUJNDI.lookupRemoteContextWildFly24( host, port, user, password, jndiName );
// Cast para a interface remota esperada
MyFacadeRemote facade = (MyFacadeRemote) myFacade;
} catch (RFWException e) {
e.printStackTrace();
}
Esse código realiza uma conexão JNDI remota passando os argumentos de host, porta, usuário, senha e nome JNDI completo, para buscar uma instância remota de EJB.
BIS 2
No BIS2 o processo de conexão JNDI pode ser simplificado utilizando as classes BISKernel e BISModules, que abstraem o nome completo do módulo. Isso permite que o desenvolvedor forneça apenas os parâmetros necessários de acordo com o tipo de conexão. No caso local, nenhum argumento é necessário, e mesmo no caso remoto é possível abstrair o nome do EJB, como mostrado a seguir:
String host = "localhost";
int port = 8080;
String user = "bisremoto";
String password = "bisremoto";
// Obtém a fachada de BISModules
BISModulesFacadeRemote facadeModules = BISModules.getBISModulesFacade( host, port, user, password );
// Obtém a fachada do kernel
BISKernelFacadeRemote facadeKernel = BISKernel.getBISKernelFacade( host, port, user, password );
Timeout Operações EJB
Caso a aplicação esteja lenta, ou algumas operações estejam resultando em Timeout do EJB (forçando um Rollback e fechando a conexão com o banco). Um timeout pode ser definido como o exemplo a seguir:
<subsystem xmlns="urn:jboss:domain:transactions:5.0"> <core-environment> <process-id> <uuid/> </process-id> </core-environment> <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> <coordinator-environment default-timeout="300" enable-statistics="false"/> <!-- Outros elementos --> </subsystem>
Repare o atributo default-timeout="300"
na tag coordinator-environment
. O valor é definido em segundos, e no exemplo está definindo em 5 minutos. A ausência desta definição "normalmente" utiliza o valor padrão de 5 minutos (300 segungos).
Iniciando o Servidor
Para iniciar o servidor execute o comando 'WILDFLY_HOME\bin\standalone'.
![]() |
|
Configuração do Datasource
Configuração do Driver JDBC
- Com o servidor já em execução, acesse o 'Painel de Administração'.
- Acesse 'Configuratoin -> Subsystem -> Datasources & Drivers -> JDBC Drivers'.
- Clique no botão de '+' para adicionar uma nova configuração do Driver do MySQL
- Complete os campos com as seguintes informações:
- Driver Name - MySQL
- Driver Module Name - com.mysql
- Driver Class Name - com.mysql.cj.jdbc.Driver
- Driver XA Datasource Class - com.mysql.cj.jdbc.MysqlXADataSource
Configuração do DataSource BIS10
- Acesse 'Configuratoin -> Subsystem -> Datasources & Drivers -> Datasources'.
- Clique no Botão '+' e escolha a opção 'Add Datasoruce para adicionar um novo DataSource. (Não seleciona a opção XA!)
- Escolha a opção 'Custom'. Apesar de existir uma opção do MySQL, ela não permite as configurações necessárias.
- Em Atributes preencha com:
- Name - BISDS
- JNDI Name - java:/jdbc/BISDS
- Em JDBC Driver apenas escolha o driver que configuramos anteriormente MySQL
- Em Connection complete com:
- Connectino URL - jdbc:mysql://localhost:3306?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=America%2FSao_Paulo
- User Name - Usuário do MySQL
- Password - Senha do MySQL
- Security Domain - deixar em branco
- Teste a conexão e finalize a criação do DS
Configuração do DataSource BIS2
- Acesse 'Configuratoin -> Subsystem -> Datasources & Drivers -> Datasources'.
- Clique no Botão '+' e escolha a opção 'Add Datasoruce para adicionar um novo DataSource. (Não seleciona a opção XA!)
- Escolha a opção 'Custom'. Apesar de existir uma opção do MySQL, ela não permite as configurações necessárias.
- Em Atributes preencha com:
- Name - BISERPDS
- JNDI Name - java:/jdbc/BISERPDS
- Em JDBC Driver apenas escolha o driver que configuramos anteriormente MySQL
- Em Connection complete com:
- Connectino URL - jdbc:mysql://localhost:3306/biserp?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=America%2FSao_Paulo
- User Name - Usuário do MySQL
- Password - Senha do MySQL
- Security Domain - deixar em branco
- Teste a conexão e finalize a criação do DS
![]() |
|
Configurações Adicionais Servidor Linux (Produção)
TimeZone
Embora a partir da versão 10 o BIS utilize o LocalDate, o sistema ainda apresenta alguns "pontos falhos" em que se utilizar do TimeZone do sistema. Por isso é necessário que o servidor esteja configurado para o TimeZone 'America/Sao_Paulo'.
Configurando o TimeSync Service no Amazon Linux
- Exclua o NTP atual:
sudo yum erase 'ntp*'
- Instale o Chrony:
sudo yum install chrony
- Configure o NTP da Amazon (Talvez o mais recomendado seja instalar o NTP brasileiro, mas confiando que o da amazon terá os horários de verão configurados corretamente, mantive). Edite o arquivo /etc/chrony.conf. Se a linha não existir crie-a depois das instruções server ou pool. Caso exista, recomendo que passe para baixo de todas.
sudo nano /etc/chrony.conf
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
- Reinicie o serviço:
sudo service chronyd restart
- Para visualizar se o server está sendo utilizado corretamente, utilize o comando:
chronyc sources -v
- Ou as métricas de sincronização com:
chronyc tracking
Configurando o TimeZone
Para ver os TimeZones disponíveis navegue dentro da pasta /usr/share/zoneinfo. Neste tutorial já vamos configurar para America/Sao_Paulo.
- Abra o arquivo /etc/sysconfig/clock
sudo nano /etc/sysconfig/clock
- Altere seu conteúdo conforme abaixo:
- ZONE="America/Sao_Paulo"
- UTC=true
- Crie um symLink para o arquivo de TimeZone correspondente, conforme exemplo abaixo:
sudo ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
- Reinicie a instância
sudo reboot
- Verifique a data com
date
Eclipse
Instalação
- Descompacte o conteúdo de dentro do arquivo .zip
- Dentro do .zip há uma pasta chamada 'eclipse'. Se tiver mais versões do eclipse em sua máquina recomendo renomeá-la para 'eclipse-jee-2023-06-R', para ficar no mesmo padrão de nomes utilizado pelo instalador.
![]() |
|
JAutoDoc
Este plugin permite que todo o javaDoc criado para um "field" (atributo da classe) seja replicado automaticamente nos métodos Get e Set ao pressionar a tecla de atalho 'CTRL+ALT+J'.
Instalação pelo MarketPlace
- Vá em 'Help -> Eclipse Marketplace' e procure por 'JAutoDoc'.
- Clique em Instalar siga os passos e Reinicie quando solicitado
Configuração do Módulo
- Após a instalação vá no menu 'Windows > Preferences', no caminho 'Java > JAutoDoc' e clique no botão 'Import All...' para importar as configurações usadas no projeto BIS.
- O arquivo com as opções salvas ficam no projeto 'RFW.Kernel' em 'etc\Eclipse Setup\Eclipse JAutoDoc.xml'.
Configurando o JDK e Bibliotecas no Eclipse
Ao carregar o pom.xml do Maven, o Eclipse configurará o projeto para utilizar o Execution Environment de acordo com a versão do JDK definida no arquivo. Por isso, é importante que o Execution Environment do Eclipse esteja apontando para o JDK homologado. Atualmente o Execution Environment é o JavaSE-1.8.
![]() |
|
- Vá em 'Windows -> Preferences -> Java -> Installed JREs'
- Adicione a instalação do JDK homologado apontando para a pasta do JDK de 64 bits homologado.
- Repita o passo anterior para a versão do JDK de 32 bits homologado.
- Vá em 'Windows -> Preferences -> Java -> Installed JREs -> Execution Environment e em JavaSE-1.8 escolha o JDK 64bits homologado.
![]() |
|
Configurando o WildFly
Antes de configurar o Servidor é necessário baixar o plugin do servidor.
- Vá na aba 'Servidor e click para criar um novo servidor.
- Na tela que se abre, escolha 'JBoss AS, WildFly, & EAP Server Tools' e clique em Next. Este passo pode demorar.
- Termine os passos do Wizard até finalizar. Aguarde o fim da instalação e reinicie se for solicitado.
- Após o término e reinicio do Eclipse, volte à aba 'Servers' e clique em adicionar um novo servidor novamente.
- Desta vez escolha a opção 'WildFly24+', e deixe o Server Name como 'WildFly'.
- Clique em 'Next.
- Na próxima imagem escolha a opção 'Filesystem and shell pperations' para que o Eclipse controle o WildFly corretamente.
- * Para que o eclipse controle adequadamente o a instalação do WildFly precisa ser realizada como orientado nesta página.}}
- Na definição de RunTime, selecione o ambiente conforme homologado.
- Clique em Finish
Formatação do Código
É importante que todo desenvolvedor formate o código do mesmo modo para que o versionamento do código não passe a tratar as diferentes formatações de código como alterações no arquivo. Para facilitar as configurações o BIS utiliza as mesmas configurações definidas no RFW, e já tem um arquivo de formatação, para usa-lo basta seguir os seguintes passos:
Para configurar essas e outras definições de preferências do Eclipse é recomendado importar as preferências do Eclipse a partir do arquivo salvo no projeto RFW.Kernel na pasta etc\Eclipse Setup\Eclipse v2023_06 Preferences - Rodrigo.epf
- Vá em 'Window -> Preferences'
- Na parte inferior clique em importar preferência
- Navegue até o arquivo e importe as configurações disponíveis.
Em caso de falha será necessário configurar o Eclipse manualmente conforme definições a seguir:
Organização dos Imports
Organizar os imports segue a mesma lógica da formatação de código, é obrigatória para evitar que o versionamento identifique a organização de imports como alteração do código.
Há um arquivo modelo disponível em RFW.Kernel\etc\Eclipse Setup que pode ser importado diretamente.
Em caso de falha, configure seu eclipse conforme imagem a seguir:

Automatizando as Formatações ao Salvar o Código
Algumas ações podem ser definidas no eclipse para que realize automaticamente ao salvar, automatizando algumas funções que acabam sendo esquecidas pelo desenvolvedor. Para isso vá no menu Window -> Preferences, em seguida escolha a configuração em Java -> Editor -> Save Actions e configure como a imagem abaixo:

Criando Templates de Códigos
Para facilitar e padronizar alguns códigos o eclipse pode ser configurado para gerar "templates de códigos" automaticamente. As orientações abaixo são uma sugestão de trabalho, não necessariamente uma obrigação.
Para criar esses e outros templates vá no menu Window -> Preferences e na configuração Java -> Editor -> Templates. Click em New e crie o template desejado.
JavaDOC de Classe
O Javadoc de classe tem a finalidade de fazer uma prévia da função da classe, identificar o autor e a data de sua criação.
- Nome: ccbis
- Descrição: Comentário/JavaDOC de Classe do BIS
![]() |
Pattern
/**
* Description: ${cursor}.<br>
*
* @author Nome do Author
* @since (${date})
*/
|
- Troque o nome do autor para o nome do desenvolvedor
- Corrija o número da versão sempre que a versão em que estiver trabalho for alterada.
Eventualmente, quando um desenvolvedor "assume" a classe de outro desenvolvedor ou faz alguma alteração significativa durante o processo de alteração deve ser acrescida a tag abaixo logo a seguir da última @version ou abaixo da @since:
@version - X.X.X - Author - (...)
Onde:
- x.x.x - é a versão em que a alteração foi feita, e;
- (...) - é a descrição das alterações ou mudanças realizadas.
Configurando o Git para Trabalhar com o GitHub
![]() |
|
Criando a Chave SSH
Se ainda não tiver uma chave SSH que queira utilizar, podemos cria-la utilizando o próprio Eclipse.
- Navegue em Window > Preferences > General | Network Connections | SSH2, na aba Key Management

- Clique em Generate RSA Key ou Load Existing Key para criar ou importar suas chaves privadas.
- Configure o comentário desejado e uma senha para proteger sua chave.
- Copie todo o conteúdo da chave pública (Provavelmente começando com ssh-rsa
- Clique em Apply and Close
Configurando a Chave no GitHub
Agora, é preciso configurar o GitHub para aceitar sua chave de autenticação:
- Abra o site do Git Hub e se autentique.
- Clique na imagem do seu perfil e depois em Settings.
- Depois no menu SSH and GPG Keys
- Clique no botão New SSH key
- Dê um título para sua chave (só para sua referência), escolha Authentication Key e cole o conteúdo copiado da chave pública no campo Key.
- Pronto, sua chave será aceita pelo GitHub agora.
Fazendo Checkout do Código Existente
Para realizar o checkout do código:
- Utilize a função de importar projeto do eclipse, escolha Projects from Git.
- Escolha Clone URI.
- No GitHub, copie o link do código utilizando o SSH

- Cole no campo URI da tela Import Projects from Git

- Garanta que o protocolo ficou em ssh e deixe o usuário conforme sugerido git
- Termine a configurações como desejado, escolhendo o diretório de checkout, e no fim permita a importação do projeto no Eclipse.
Instalação do MetaObjectGenerator Plugin
Para gerar os MetaObjects do BIS (os objetos que espelham o VO e tem o mesmo no me do VO com o sufixo "VO_"), você deve instalar os plugins no seu eclipse. Os plugins ficam versionados junto com os projetos de EAR de aplicação, dentro da pasta etc\EclipsePlugins.
Para instalar você deve extrair o conteúdo do .zip dentro da pasta droppins que existe dentro da pasta do eclipse. A instalação ficará no caminho como a seguir:
%eclipseHome%\dropins\plugins\<plugin>.jar
Instalação no BIS10
O BIS10 utiliza o plugin MetaObjectGenerator_3.0.0.jar, que já é a versão atualizada e migrada para o RFW.
Para habilitar o plugin, clique com o botão direito do mouse no projeto em que o plugin precisa ser habilitado (projeto em que estão os VOs), e siga o menu: Configurações > Enable RFW VO_ Generator
Instalação no BIS2
O BIS2 utiliza o plugin mais antigo: BISMetaObjectGenerator_2.0.2.zip. E o nome do plugin no meu Configurações é Enable BIS MetaObject Generator
![]() |
|
MySQL Workbench
O MySQL Workbench é uma ferramenta oferecida pela própria MySQL para planejamento e gerenciamento do banco de dados. Os diagramas de banco de dados do BIS são feitas utilizando esta ferramenta. A instalação não tem nenhuma dificuldade, basta seguir os passos do Wizard se utilizada o instalador para windows, ou descompactar a pasta se usada a versão sem instalador.
![]() |
|
Emulador do SAT
![]() |
|
- Faça o Download do Emulador do SAT aqui. Na ocasião da escrita a versão do emulador é a 2.9.4.
![]() |
|
- Descompacte o conteúdo em uma pasta temporária.
- Instale os arquivos Setup-Emulador_OffLine_v2_9_4.exe e Setup-Ativacao_v2_2_5.exe, siga os passos da instalação.
- Não é necessário instalar o arquivo Setup-AC_v2_2_7.exe uma vez que ele só tem a função de substituir a Automação Comercial - o próprio BIS.
- Copie a Pasta SAT presente no zip para C:\SAT
- Na pasta “SAT” abra o arquivo configuracoes.xml. Modifique <versaoSchema> e <versaoLayoutCFe> de acordo com a versão da Especificação do SAT para a qual o Aplicativo Comercial será programado.
- O instalador do Emulador cria um atalho no Desktop "virado" direto para o jar executável. Normalmente ao executar pelo JAR o menu de configuração do Emulador não aparece (algum bug no emulador). Corrija o atalho para que ele não execute o jar diretamente, mas sim execute o java.exe. (Ex: C:\Windows\System32\java.exe -jar "C:\Program Files (x86)\SAT-CFe\Emulador\Emulador SAT-CFe.jar")
Ativação do Emulador do SAT
A ativação do emulador pode ser feita diretamente pelo BISSatHost. E vamos utiliza-lo aqui ao invés do aplicativo de Ativação que vêm com o emulador, assim já incluímos os passos de configuração do BISSatHost para funcionar com o emulador.
- Para funcionar com o Emulador, o BISSatHost deve ter a C:\SAT\SAT.dll dentro da pasta raiz do projeto do BISSatHost.
![]() |
|
- Abra o arquivo config.properties dentro da pasta raiz do BISSatHost e configure as seguintes propriedades para funcionar com o SAT Host:
bisserver.host=localhost bisserver.port=2082 sat.codigoativacao=BynX53JHxvaj9Yb4TJP3lm8Jb7KBggQ9 sat.chaveassociacao=11111111111112222222222222211111111111111222222222222221111111111111122222222222222111111111111112222222222222211111111111111222222222222221111111111111122222222222222111111111111112222222222222211111111111111222222222222221111111111111122222222222222111111111111112222222222222211111111111111222222222222221111111111111122222222222222111111111 system.xmlbackupdir=./SAT/ system.logdir=./LOG/ socket.listen.port=2083 sat.cnpjContrib=11111111111111
![]() |
|
- Inicie o BISERP e o programa BISSatHost. O BISERP deve estar ligado para garantir autenticação do usuário.
- Escolha a opção At para iniciar a ativação do SAT e faça a autenticação.
- Escolha o certificado 1 - AC-SAT/SEFAZ
- CNPJ do Contribuinte deve ser 11111111111111. O Emulador só aceita esse CNPJ para funcionar.
- No estado de ativação informe SP.
Associar Assinatura
- Para associar a assinatura escolha a opção As no BISSatHost.
- Autentique com um usuário que tenha permissão de configurar o SAT.
- Caso tenha o arquivo c:\debug.txt no computador, o BISSatHost detecta que é modo desenvolvedor e oferece para já configurar as opções para o emulador automaticamente. Escolha S.
- Confirme as opções com a opção S.
- O Emulador do SAT deve aceitar a associação e estar pronto para ser utilizado pela aplicação.
Android Studio
![]() |
|
Para desenvolvimento das aplicações para a plataforma Android e necessário preparar o Android Studio
Instalação do Android Studio
- Faça o download do Android Studio aqui.
- Siga os passos para completar a instalação conforme apresentados no wizard.
Instalação de Equipamento para Debug
Para realizar o debug do software em um equipamento com Android é necessário instalar o driver USB para depuração de acordo com o fabricante. Consulte o download aqui.
Depois que ele for reconhecido corretamente, é preciso liberar o aparelho para a realização de depuração via USB. Para isso siga os seguintes passos:
- Abra as Configurações;
- Selecione Sobre o dispositivo;
- Pressione 7 vezes Número de Compilação / Versão Build / Número da versão;
- Volte para as Configurações;
- Escolha Opções do Desenvolvedor e ative-a, bem como extras;
- Habilite Depuração de USB.
Configuração do SVN
![]() |
|
- Vá em File > Settings > Version Control > Subversion e marque a opção Use command line cliente:

- Na instalação padrão o caminho seria c:\Program Files\TortoiseSVN\bin\svn.exe.
- Abra o projeto feito o checkout pelo TortoiseSVN
Explicações Legadas - Guardadas apenas para eventual referência
Instalação do Glassfish
Usado para o BIS2!
- Faça download da versão homologada pelo BIS do Glassfish.
- Descompacte o conteúdo do .ZIP no drive 'C:\'
Configurando JDK Utilizado
A instalação o Glassfish tenta utilizar o "java" que estiver no path do sistema, isso é, ele simplesmente chama por "java" sem se preocupar com caminho para inicia-lo. Se o java padrão for o correto não é preciso fazer nada, embora seja recomendado definir exatamente o caminho a ser utilizado, assim, se no futuro alguma nova versão for instalada o Glassfish não passará a utilizar "outra versão" inadvertidamente.
Para configurar o glassfish edit o arquivo em <installdir>\glassfish\config\asenv.bat e acrescente a linha abaixo no final do arquivo para definir o home do JDK a ser utilizado:
set AS_JAVA=c:\Program Files\Java\jdk1.8.0_40
Domínio BISERP
![]() |
|
Para separar a aplicação, ou mesmo permitir mais de uma aplicação na mesma máquina, podemos criar domínios separados para cada aplicação. Mesmo que ao iniciar o Glassfish crie um domínio padrão chamado 'domain1', para o ambiente de produção é recomendado criar um domínio diferente. Para o BISERP recomendamos criar um domínio nomeado 'BISERP'. Para isso utilize o comando:
c:\glassfish4\glassfish\bin\asadmin create-domain --portbase 9000 BISERP
![]() |
|
- portbase - é o número da porta base. A partir dessa porta todas as outras portas padrão serão somadas. Por exemplo, se passar como porta base "9000", as portas criadas serão 9080 para http, 9048 para a porta administração, e assim por diante. Para o BISERP recomendamos passar como parâmetro o valor: 9000.
![]() |
|
Permitir Acesso Remoto à tela Admin
O Glassfish 4 exige que o acesso remoto seja feito através de https na máquina local. Para permitir que o acesso possa ser feito de outra máquina temos de habilitar o login seguro no domínio. Antes de executar a configuração necessária precisamos primeiramente 'levantar' o domínio:
asadmin start-domain BISERP
Para realizar a liberação do acesso utilize:
asadmin --host localhost --port 9048 enable-secure-admin
- host: endereço da máquina onde está o glassfish, provavelmente localhost se feito da mesma máquina.
- port: porta do admin - domain1 = 4848; BISERP = 9048
Bibliotecas no Servidor de Aplicações
Devemos copiar as bibliotecas existentes no projeto BISERP na pasta etc/containerlibs para a pasta lib do domínio que será usado, pois são bibliotecas genéricas que precisamos que o GlassFish tenha em sua execução, como por exemplo as bibliotecas do JDBC do banco utilizado (atualmente MySQL). Se estiver com o domínio iniciado, reinicie-o para que ele carregue a nova biblioteca.
Configurar pool de conexões no banco de dados
Para que o BISERP funcione é necessário configurar um POOL de conexões com o banco de dados no Glassfish e depois um DataSource com o nome jdbc/BISERPDS.
- Entre na tela de administração do GlassFish, se seguiu os passos deste manual é:
- Para o ambiente de desenvolvimento: http://localhost:4848
- Para o ambiente de produção: http://localhost:9048
- Entre com o login criado durante a criação do domínio BISERP: pelos passos deste manual é biserp/biserp2003.
- Abra a sessão Resources/JDBC/Connection Pools para criar o novo pool
- Clique em criar new
- Dê o nome "MySQLPool", por exemplo
- Em Resource Type defina javax.sql.ConnectionPoolDataSource
- Escolha o banco de dados MySQL e clique em avançar.
- Nesta tela deixe as opções padrão e nas propriedades devemos definir no mínimo as seguitnes:
- User: biserp (usuário criado no mysql para acessar o banco, para desenvolvimento pode acessar diretamente com a conta root)
- Password: biserp2003 Senha do usuário do banco de dados
- Port: 3306 (Ou outra caso tenha trocado a porta do banco de dados)
- DatabaseName: biserp (Ou outra base que queira usar para desenvolvimento/produção)
- Url e URL: jdbc:mysql://localhost:3306/biserp
- Click em Finalizar.
- Agora na sessão Resouces/JDBC/JDBC Resources vamos criar o data source da aplicação
- Clique em New
- Em JNDI Name complete com "jdbc/BISERPDS" este valor não pode ser alterado pois é o resource que a aplicação procura.
- Escolha o Pool que definimos no passo anterior e confirme.
Para confirmar se tudo funcionou bem, pode entrar no JDBC Connection Pool, clicar no Pool que criamos no primeiro passo e clicar em PING. Se não for bem sucedido o erro dará uma pista do que está errado.
![]() |
|
Instalando o Domínio BISERP como serviço do Windows
Para que o BIS levante-se automaticamente com o sistema é preciso configurar o domínio do glassfish como um serviço do Windows e configuração para iniciar automaticamente. Para criar o serviço execute o comando abaixo:
c:\glassfish4\glassfish\bin\asadmin create-service --name biserp biserp
Depois que o serviço for criado, é preciso garantir que está configurado para inicialização automática. Para isso:
- Abra a janela de Serviços[1] do Windows
- Procure o serviço com o nome BISERP GlassFish Server e dê um duplo clique para abrir suas propriedades
- Na opção Tipo de inicialização: garanta que esteja como Automático (Atraso na Inicialização)
- Clique em OK para confirmar.
![]() |
|
Habilitar Debug Externo
Para fazer com que o servidor habilite o modo Debug ao inicializar, realize o seguinte procedimento:
- Entre no console administrativo;
- Abra o caminho Configurations > server-config > JVM Settings ou equivalente onde tenha sido feito o deploy da aplicação;
- Marque a caixa Debug: Enabled;
- Para especificar uma porta diferente para o Debug acrescente/altere a proriedade address=<port-number> na caixa "Debug Options" logo abaixo;
- É recomendável deixar na porta padrão, afinal o Debug só deve ser ligado em ambientes controlados!
![]() |
|
Fazendo o Deploy do BISERP
Agora que o Glassfish já foi configurado corretamente, precisamos colocar a aplicação BISERP para executar. Para isso siga os passos abaixo:
- Entre na tela de administração do domínio BISERP, através do endereço http://localhost:9048, se você seguiu todos os passos deste manual.
- Selecione no menu a opção "Aplications"
- Click no Botão "Deploy"
- Na tela que abrir, click em "selecionar o arquivo" e escolhar o EAR do BISERP
- Após selecionar o arquivo, diversas novas opções aparecem, deixe todas nos seus valores padrão e click em OK. Esse passo pode demorar um pouco, entre subir o arquivo para o servidor e completar o deploy.
Neste ponto o BISERP já deve ser acessível através do endereço http://localhost:9080/BIS/.
Para fazer com que o site principal (raiz) do endereço a ser exibido seja a página do BIS, vá até no menu: "Configurations > server-config > VIrtual Servers > server" e na opção "Default Web Module" escolha a opção "<nome do deploy>#BISPresWAR.war".
![]() |
|
Aplicação WEB Principal
É possível configurar a aplicação para ser acessível da raiz do domínio, isto é, ao invés do endereço http://localhost:9080/BIS/ usar o endereço http://localhost:9080/.
Para isso precisamos configurar o domínio para assumir que o BISWAR da aplicação BISERP é a aplicação web padrão seguindo os seguintes passos:
- Abra a administração do glassfish no endereço https://localhost:9048 e faça login
- Abra o menu-árvore no caminho Configurations > server-config > Virtual Servers > server
- Na tela de configuração que se abre do lado direito, no campo Default Web Module, escolha a opção do WAR padrão. A opção que terminar com BISWAR.war
- Clique em save do lado superior direito
![]() |
|
- ↑ Para abrir a janela de serviços do windows:
- Vá em Painel de Controle > Serviços, ou,
- Digite services.msc na caixa executar.