====== Ambiente em Produção, Configurações, Esquema de Atualizações e Distribuição do Módulo de Circulação ====== O módulo de circulação desktop é um módulo que deve ser instalado nos computadores que realizam os empréstimos da biblioteca. \\ {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:tela_inicial_módulo_circulação.jpg|}} \\ \\ Ele foi projetado para agilizar o trabalho dos operadores, com a utilizando de teclas de atalhos no teclado e acesso ao periféricos da máquina, como impressora, leitor de código de barras, leitor de digital, etc. \\ \\ \\ Esse módulo é basicamente uma **interface gráfica swing** que acessa o servidor via ** [[http://pt.wikipedia.org/wiki/Web_service | web services]] **. Toda as regras de negócio e persistência ficam do lado do servidor. Com isso evita-se a duplicação de código e que o sistema funcione de forma diferente dependendo se a operação foi realizada via desktop ou web. \\ \\ Como a persistência está toda no lado do servidor, os logins e as senhas para acessar esse módulo são as mesmas do SIGAA, porém é preciso que o usuário tenham algum papel em circulação para conseguir utilizar o módulo. \\ \\ \\ \\ ===== Informações sobre Versionamento da Aplicação ===== **__IMPORTANTE__:** O versionamento da aplicação é feito de um forma diferente. Não existe criação de //tags// de versionamento do SVN. Então o versionamento é realizado mantendo-se o código de cada versão que foi para produção no projeto: **"Backups Desktop Biblioteca"**. \\ \\ Por exemplo, o projeto "SIGAA 3.2.0 13_07_2011" contém o código da aplicação que funciona com a versão 3.2.0 que foi publicada em 13/07/2011 aqui na UFRN, até a versão 3.2.1 do SIGAA. \\ A partir da versão 3.2.2 deve ser usada a versão "SIGAA 3.2.2 19/07/2011", e assim por diante. \\ \\ O código do projeto "BibliotecaCirculacaoDesktop" só funciona com a última versão do SIGAA, :!: **Então certifique-se de estar usando a versão compatível com a versão do SIGAA**. :!: \\ \\ \\ Os passo descritos para executar a aplicação são para o projeto BibliotecaCirculacaoDesktop, porém são idênticos ao que precisa ser feito com o projeto BibliotecaCirculacao baixado do Backups Desktop Biblioteca. \\ \\ Os projetos do Netbeans contidos em Backups Desktop Biblioteca são identicos ao que entrou em produção da UFRN, com uma exceção. Os jar do diretório "lib" do projeto foram removidos para diminiur o tamanho do projeto no SVN. \\ Os jar se encontram no diretório libs_desktop e devem ser copiados para o diretório lib do projeto do Netbeans. Depois disso é adiciona-los ao class path do projeto junto com as biblioteca do Netbeans usadas, conforme descrito nos passos abaixo. \\ \\ ====== Execução no Ambiente de Desenvolvimento ====== Para executar a aplicação em desenvolvimento é preciso alterar os **endereços dos servidores** no **arquivo de configuração** que está localizado **dentro projeto do desktop** e escolher o método em que a aplicação executa sem verificar as atualizações. \\ \\ **Não é preciso configurar nenhum endereço de banco na aplicação. O acesso as informações é realizado via o web-services.** :!: \\ \\ \\ \\ ===== Executando o módulo de circulação em Desenvolvimento ===== - **Baixe o projeto BibliotecaCirculacaoDesktop** do repositório ( é um projeto do NetBeans ). //No caso das cooperações usar os projetos "versionados"// - **Conserte os erros de dependência do projeto**. //Aponte os endereços dos arquivos .jar para o endereço local na sua máquina. //(Dentro do diretório **lib** da aplicação C:\...\BibliotecaCirculacaoDesktop\lib )// Para as cooperações, é preciso primeiro adicionar os jars que foram removidos desse diretório.// - **Adicione as bibliotecas** "Layout Absoluto" e "Swing Application FrameWork" do Netbeans. (Depois desse passo os erros de compilação devem ter sumido.) - Altere os endereços localizados no arquivo: **br/ufrn/sigaa/biblioteca/circulacao/remoto/applicationContext.properties**. Esse arquivo contém os endereços dos servidores utilizados pela aplicação. São usado várias endereços porque alguns funcionalidades estão localizadas em servidores diferentes em produção. Em desenvolvimento coloque todos os endereços como: **localhost:8080** \\ Ps.: No próprio arquivo de configuração existem explicações do que significa cada endereço. \\ Ps2.: O Swing Application FrameWork foi descontinuado pelo Netbeans recentemente :-( . Então só será possível editar a aplicação até a versão 7.0.1 do Netbeans, enquanto o layout da aplicação não for trocado para usar outro gerenciador de layout, coisa que deve demorar ainda.:-\ \\ \\ - Coloque como classe principal do projeto a classe: **br.ufrn.sigaa.biblioteca.circulacao.gui.BibliotecaCirculacao**. Assim a aplicação será executada da maneira mais simples possível, sem verificar as atualizações e novas versões. \\ \\ Configurando o //java.library.path// caso queira utilizar o leitor de digital. \\ \\ \\ No NetBeans vá em propriedades do projeto, em Executar \\ -> Classe Principal: \\ br.ufrn.sigaa.biblioteca.circulacao.gui.BibliotecaCirculacao \\ \\ -> Opçoes VM: \\ \\ -Djava.library.path="C:\arquivos_leitor_digital;C:\WINDOWS\system32;" \\ \\ \\ - **Limpe e Construa o projeto**. - **Execute o projeto**. Deve abrir a tela do login da aplicação. :-D \\ \\ \\ ==== Caso especial: Executar a Aplicação "por fora" do Netbeans em Desenvolvimento ==== \\ \\ Em primeiro lugar é preciso criar outro projeto e copiar os arquivos, configurações e bibliotecas do projeto BibliotecaCirculacaoDesktop para esse novo projeto. Não é recomentado usar usar o projeto "BibliotecaCirculacaoDesktop" do SVN na geração do ".jar" da aplicação, pois encontramos alguns problemas na geração do arquivo METAINF gerado pelo Netbeans, quando o projeto é baixado do SVN. \\ \\ Recomenda-se chamar esse novo projeto de "BibliotecaCirculacao". \\ \\ Faça um build do novo projeto, o Netbeans cria um arquivo BibliotecaCirculacao.jar dentro do diretório "dist" do projeto. \\ \\ **Um duplo click no arquivo "BibliotecaCirculacao.jar" deve executa a aplicação.** \\ \\ \\ __Observação:__ Executando a aplicação por fora do Netbeans em desenvolvimento com a utilizando da digital e impressão de comprovante é preciso executar via linha de comando: \\ \\ //java -jar -Djava.library.path="C:\arquivos_leitor_digital;C:\WINDOWS\system32;" BibliotecaCirculacao.java//. \\ \\ Porque a classe "br.ufrn.sigaa.biblioteca.circulacao.gui.BibliotecaCirculacao" não configura o //class path// da aplicação com as .dlls da impressora e do leitor do digital. \\ \\ \\ Também é necessário possuir um diretório **lib** no mesmo diretório de onde se está executando a aplicação com todos os arquivos .jar utilizados. O Netbeans também gera esse diretório lib automaticamente dentro no diretório "dist". \\ \\ \\ \\ ====== Execução da aplicação em Produção ====== Em produção a classe a inicial a ser executada é **br.ufrn.sigaa.biblioteca.circulacao.IniciaAplicacaoVerificandoAtualizacao**. Assim a verificação das atualizações é realizada, os arquivos necessários para execução são baixados e o //java.library.path// é configurado via código, dispensando a execução via linha de comando. \\ \\ No NetBeans vá em propriedades do projeto, em Executar \\ -> Classe Principal: \\ br.ufrn.sigaa.biblioteca.circulacao.circulacao.IniciaAplicacaoVerificandoAtualizacao \\ \\ -> Opçoes VM: \\ \\ Deixe em branco, o class path é configurado programaticamente via código da classe IniciaAplicacaoVerificandoAtualizacao.java, porque essa opção da VM só é válida para o Netbeans. \\ \\ \\ \\ [[#Instruções para geração de uma nova versão do módulo de circulação para Produção| Abaixo é mostrando um passo a passo de como gerar uma versão em produção, é recomendado usar esse passo a passo como check list para não esquecer nenhum passso.]] \\ \\ \\ \\ \\ Caso queira executar a aplicação em produção via "linha de comando" para ver algum erro no console, utilize o comando: \\ \\ **java -Djava.library.path="C:/arquivos_leitor_digital;C:/WINDOWS/system32;" -jar BibliotecaCirculacao.jar comClassePathConfigurado** \\ \\ Esse comando executa a aplicação com os diretórios das .dlls configurados e sem que a aplicação verifique novas atualizações. Mesmo que a classe IniciaAplicacaoVerificandoAtualizacao esteja sendo executada. \\ \\ \\ \\ ==== Esquema de Atualização da Aplicação (Para Produção) ==== O módulo desktop de circulaçao foi projetado para se auto atualizar. Evitando que a cada nova versão disponibilizada seja necessário instala-la novamente em todas as máquinas. \\ \\ Ao iniciar a aplicação, ela verifica se a sua versão está atualizada. Se não, baixa todas os // ".jar"// utilizados e a propria aplicação "BibliotecaCirculacao.jar". Após terminar os downloads necessários se reinicializa para executar a nova versão. \\ \\ \\ Para isso a aplicação acessa o endereço [[ http://www.sistemas.ufrn.br/biblioteca/links_desktop.properties]] __//**(para o contexto da UFRN)**//__ que é um arquivo properties localizado em um dos nossos servidores contendo: * A versão atual do programa * O endeço de onde baixar o .jar da aplicação * O endeço onde estão localizados os outros arquivos .jar utilizados Caso algumas dessas informação estejam diferentes das informações local, ou elas não existem localmente, os dados são baixados. \\ \\ Ou seja, é preciso configurar **3 endereços** nos servidores de produção para configuração. \\ \\ * O **endereço principal**, que contém o arquivo com as informação sobre a atualização da aplicação: //links_desktop.properties//. Esse endereço idealmente **nunca deve mudar** ou a aplicação não saberá como se atualizar. Ela até executa se não encontrar o endereço de atualização, mostrando uma mensagem de erro para o usuário. \\ \\ * O endereço do diretório que contém o arquivo BibliotecaCirculacao.jar. Esse endereço pode ser mudando caso seja necessário, para isso basta apenas muda-lo no arquivo //links_desktop.properties// cima. \\ \\ * O endereço do diretório que contém o outros ".jar" necessários. Esse endereço pode ser mudando caso seja necessário, para isso basta apenas muda-lo no arquivo //links_desktop.properties// cima. \\ \\ * Os demais endereços utilizados ficam no arquivo //applicationContext.properties// dentro da própria aplicação. Esse endereços podem ser alterados caso seja necessário, para isso basta apenas gerar uma nova versão da aplicação com os novos endereços dos servidores de produção e distribui-la. A aplicação baixará a nova versão automaticamente com os novos endereços. \\ \\ //OBS.: Ao mudar endereço IP tome cuidado com o cache de DNS das máquinas, pode ser que demora algunas horas ou dias para que a máquina consiga acessar o novo endereço corretamente. Nesse caso é bom passar um comando que os usuários consigam executar, para limpar o cache. Se o ambientes estiver bem estável, isso é difícil de ocorrer, até o momento com 3 anos de execução, somento 1 vez foi preciso alterar os endereços IPs dos servidores, e ocorreram alguns problemas de máquina sem conseguir acessar os novos endereços por causa de servidores DNS secundários em alguns centros da UFRN.// ;-) \\ \\ \\ \\ \\ \\ \\ ======Instruções para geração de uma nova versão do módulo de circulação para Produção====== - **Baixe o projeto BibliotecaCirculacaoDesktop** do repositório ( é um projeto do NetBeans ). - **Crie um novo projeto** java no Netbeans chamado **BibliotecaCirculacao**. //É necessário criar um novo projeto do zero no Netbeans porque o projeto que é baixado do svn (BibliotecaCirculacaoDesktop) o Netbeans gerava o arquivo .jar dentro do diretório "dist", mas não configurava corretamente a classe Main do projeto e nem as libs utilizadas no arquivo META-INF/MANIFEST.MF do .jar, assim a aplicação não executava fora do Netbeans. Um bug do Netbeans, talvez você tenha sorte e consiga gerar o .jar a partir do projeto que está versionado, nesse caso pode usar ele//. - **Configure a codificação** do novo projeto para ISO-8859-1. - **Adicione ao novo projeto as mesmas bibliotecas** (aquivos .jar) existentes no projeto que está no svn. - **Copie **TODOS** os pacotes do código fonte** para o novo projeto. (crtl+c crtl+v por dentro do Netbeans) - Configure como classe executável do novo projeto a classe:**"br.ufrn.sigaa.biblioteca.circulacao.IniciaAplicacaoVerificandoAtualizacao"** - **Troque os endereços** existentes do arquivo: **"br/ufrn/sigaa/biblioteca/circulacao/remoto/applicationContext.properties"** do novo projeto para os endereços de produção. - **Troque o número da versão atual** do módulo dektop de circulação no arquivo: **"br/ufrn/sigaa/biblioteca/circulacao/controle/versao.properties"** do novo projeto. O número da versão usa o formato //yyyyMMddN//, onde ''N'' = número da versão no dia. - **Troque o valor da versão no arquivo links_desktop.properties** para o mesmo valor que vai dentro do arquivo **"br/ufrn/sigaa/biblioteca/circulacao/controle/versao.properties"**. - **Verifica se o nome e tamanho das libs estão corretos** dentro do arquivo: **"br/ufrn/sigaa/biblioteca/circulacao/controle/bibliotecas.properties"**. Caso seja adicionado ou removida uma lib, este arquivo deve ser atualizado. - **Limpe e construa** o novo projeto criado. - **Versione o código fonte do projeto** BibliotecaCirculacaoDesktop. - **Distribua o arquivo** BibliotecaCirculacao.jar. \\ \\ \\ \\ ==== Passos para Atualização do Aplicativo em Produção ( UFRN ) ==== Servidor de distribuição: balancer.info.ufrn.br:2222 Diretório de distribuição: /var/www/sistemas/desktop/ Diretório dos arquivos de atualização: /var/www/sistemas/biblioteca/ - Copiar o arquivo temporariamente para área do usuário (/home/usuario) no servidor balancer (balancer.info.ufrn.br:2222) //(usando winSCP)// - Acessar o balancer via ssh: "ssh balancer.info.ufrn.br -p 2222" //(usando putty)// - Acessar diretório onde o arquivo é distribuído: ''cd /var/www/sistemas/desktop/'' - Copiar versão atual para o diretório onde são mantidos os backups: ''cp .BibliotecaCirculacao.jar /var/www/sistemas/desktop/bak/BibliotecaCirculacao.jar.YYYYMMDD''// (substituir final pela data)// - Copiar o arquivo colocado na home do usuário para o diretório da distribuição //(diretório atual):// ''cp /home/usuario/BibliotecaCirculacao.jar .'' - Editar o arquivo links_desktop.properties que fica em **/var/www/sistemas/biblioteca/links_desktop.properties** e atualizar o número da versão da aplicação: ''vim /var/www/sistemas/biblioteca/links_desktop.properties'' \\ \\ \\ \\ \\ \\ ====== @deprecated Instruções para geração de uma nova versão do Executa Biblioteca ====== \\ \\ ExecutaBiblioteca.jar verifica através do arquivo links_desktop.properties em algum servidor web, qual a versão atual do módulo de circulação da biblioteca. Caso a versão seja diferente de versão local, o módulo da biblioteca é baixado do endereço também contido no arquivo links_desktop.properties. \\ O endereço do arquivo: links_desktop.properties, é configurado no arquivo ''executaBiblioteca/executaBiblioteca.properties''.Esse endereço é a **//"parte fixa"//** da aplicação. Casos esse endereço mude, será preciso atualizar em todos as máquinas o arquivo ExecutaBiblioteca.jar. Na UFRN é utilizando o endereço: [[http://www.sistemas.ufrn.br/biblioteca/links_desktop.properties]] - Configure o endereço do arquivo links_desktop.properties dentro do arquivo : ''executaBiblioteca/executaBiblioteca.properties''. - Limpe e Construa o projeto. //( Caso o NetBeans não configure o arquivo que contém a classe Main corretamente, repita o mesmo processo de criar um projeto separado feito para conseguir gerar o jar do módulo de circulação. )// - Será gerado um arquivo jar dentro do diretório //dist// do projeto ExecutaBiblioteca. - ** OBSERVAÇÃO 1: O arquivo ExecutaBiblioteca.jar dificilmente deve sobrer alterações, mas sempre que isso ocorrer será necessário atualizar o novo arquivo na página [[suporte:manuais:sigaa:biblioteca:desktop:instalacao | página do manual de instalação ]], para o usuário baixar a versão mais nova**. - ** OBSERVAÇÃO 2: Caso a alteração no arquivo ExecutaBiblioteca.jar não seja compatível com a versão anterior será necessário atualizar o arquivo em em todas as máquinas onde o módulo da biblioteca estiver sendo utilizado **. \\ \\ **Observação**: A partir da verão 3.2 do SIGAA o ExecutaBiblioteca.jar está em desuso, a própria aplicação da biblioteca verifica suas atualizações, baixa se houver e se auto executa novamente. O projeto ExecutaBiblioteca.jar só continuar sendo distribuído, para caso o BibliotecaCirculacao.jar ser corrompido e não executar mais o usuário ter como baixa uma nova versão da aplicação. \\ A outra opção é baixa novamente a aplicação da página do manual de instalação e substituir o arquivo anterior. \\ \\ ===== Conteúdo do arquivo links_desktop.properties (Contexto da UFRN!) ===== \\ versao_programa=xxxxxxxxx endereco_jar=http://www.sistemasdesktop.ufrn.br/BibliotecaCirculacao.jar endereco_libs=http://www.sistemas.ufrn.br/biblioteca/libs \\ \\ \\ ===== Distribuição da Aplicação ===== Gere um arquivo chamado //Instalacao.zip//. Esse arquivo deve conter: - O arquivo para instalação da impressão digital: Fingerprint_SDK_Java_2009_Installer.jar - O arquivo para impressão em portas seriais: RXTXcomm.jar - Duas DLLs para impressões nas portas serias e paralelas do windows: rxtxParallel.dll e rxtxSerial.dll. - O jar da aplicação: **BibliotecaCirculacao.jar** - O jar da aplicação responsável por baixar e manter atualizado a aplicação da biblioteca: **ExecutaBiblioteca.jar** \\ - Atualize o link para o arquivo// Instalacao.zip// da [[suporte:manuais:sigaa:biblioteca:desktop:instalacao | página do manual de instalação ]]. Os usuários utilizarão esse link para baixar a nova versão e realizar a instalação nas suas máquinas. \\ \\ \\ **Obs 1.:** Compacte o arquivo Instalacao.zip com a senha: **circulacao** \\ \\ **Obs 2.:** O endereço público para acessar o manual de instalação do módulo de circulação é : [[http://www.sistemas.ufrn.br/ajuda/circulacao]] \\ \\ ===== Gerando a Versão Instalável para Windows ===== Com o objetivo de falicitar a instalação do usuário, já que era comum o usuário esquecer de copiar algum arquivo na instalação manual e a aplicação não funcionar, foi disponibilizada um instalar para o módulo de bibliotecas da UFRN. \\ \\ Os passos para se gerar a versão "instalável" da aplicação seguem abaixo: \\ \\ Baixe o Programa: Installshield 2010 Versão: 16 Trial \\ \\ \\ Crie um novo projeto: FILE –> NEW \\ {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:intallshield_criando_novo_projeto.png?400|}} Em seguida escolha o tipo de projeto BASICMSIPROJECT Adicione o nome do seu projeto, **//Instação do Módulo da Biblioteca de Circulação//** e click em ok. {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:installshield_tipo_de_projeto.png?400|}} Na Aba //Project Assistant// adicione o nome do seu pacote MSI chamado **//BibliotecaCirculacao//**. {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:installshield_nome_do_pacote_msi.png?400|}} Na Aba //Installation Designer// selecione //Aplication Data// no menu lateral. {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:installshield_adicionando_os_dados_da_aplicação.png?400|}} Dentro da diretório //Appication Data// adicione seus arquivos que serão instalados. Em //Destination computer's folder// escolha a diretório que será o diretório de instalação dos arquivos. Por padrão é o diretório chamado "BibliotecaCirculacao", mas qualquer nome pode ser usado. \\ \\ Com o diretório de instalação selecionado click com o botão direito e selecione LAUNCH COMPONENT WIZARD, para escolher o tipo de wizard que será usado na instalação. \\ Deixe a marcado a opção padrão e click em avançar {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:installshield_adicionando_lunch_componente_wizard_.png?400|}} Escolha onde será o local da instalação dos arquivos no caso em questão, por padrão será utilizado o INSTALLDIR definido anteriormente. Não altere essa opção. {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:installshield_escolhendo_diretório_instalação.png?400|}} Agora adicione seus arquivos que serão instalado no diretório de instalação (BibliotecaCirculacao.jar, ExecutaBiblioteca.jar (deprecated), e Fingerprint_SDK_Java_2009_Installer.jar) {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:installshield_adicionando_arquivos_de_instalação.png?400|}} \\ \\ \\ \\ **Agora são os passos para criar o diretório padrão com as dlls da aplicação.** \\ \\ Em //Destination computer's folder//, botão direito do mouse e selecione um novo LAUNCH COMPONENT WIZARD Deixe a marcado a opção padrão como no caso anterior e click em avançar . Agora em vez de deixar a opção padrão INSTALLDIR, Selecione WindowsVolume {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:installshield_adicionando_lunch_componente_wizard_para_dlls.png?400|}} Após selecionar os arquivos da impressora (RXTXcomm.jar, rxtxParallel.dll, rxtxSerial.dll) e click em avançar. {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:installshield_adicionando_arquivos_impressora.png?400|}} Agora adicione os arquivos em um novo diretório que você criará no seu projeto com o nome de **arquivos_leitor_digital**. Click em WindowsVolume, clicando do lado direito do mouse e selecione NEW FOLDER e renomeei para o nome citado acima em seguida araste seus arquivos para o diretório criado. **!Importante!**: O nome do diretório deve ser exatamente esse: **__arquivos_leitor_digital__**, senão a aplicação não irá funcionar corretamente. Observação: Apesar no nome do diretório ser "arquivos_leitor_digital", ele é usado para as dlls do leitor de digital e também as dlls da impressora. Enfim, todas as dlls da aplicação. Esse nome só permancene por questões de compatibilidade. Se fosse impletar agora na UFRN eu escolheria algo como "arquivos_biblioteca_circulacao", seria o mais correto. {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:installshield_novo_projeto_para_instalar_aquivos_da_impressora.png?400|}} \\ \\ **Por último adicione um atalho no área de trabalho do computador onde a aplicação foi instalada** \\ \\ Na aba //PROJECT ASSISTANT// –> Appication Shortcuts -> New \\ \\ Na tela que abrirá selecione PROGRAMFILES –> o diretório BIBLIOTECACIRCULACAO -> e Selecione o arquivo **BibliotecaCirculacao.jar** \\ \\ {{:desenvolvimento:especificacoes:sigaa:biblioteca:circulacao:installshield_criando_atalho.png?400|}} No Botão //Browser// Adicione o icon para sua aplicação (use o ícone oficial da biblioteca). === Geração do Arquivo de instalação === Para gerar o arquivo MSI para instalação primeiro compile a aplicação e clique em //Bulid Installation//. Marque o campo Single MSI Package para gerar pacotes MSI. Para testar a instalção seu projeto click em // Build -> Run Single Msi Image// para testar a remoção da aplicação na sua maquina click em //Build -> Uninstall Single Msi Image// ===== Instalação ===== Para informação sobre instalação da aplicação consulte o [[suporte:manuais:sigaa:biblioteca:desktop:instalacao | manual de instalação ]] O manual da instalação também está acessível do link: [[http://www.sistemas.ufrn.br/ajuda/circulacao/]]