DES:vRaptorExtJs
(→Procedimentos para que o Maven funcione nas aplicações da Unioeste usando o Netbeans 21 (Java 21) (11/03/2024)) |
(→Procedimentos para que o Maven funcione nas aplicações da Unioeste usando o Netbeans 21 (Java 21) (11/03/2024)) |
||
Linha 482: | Linha 482: | ||
== Procedimentos para que o Maven funcione nas aplicações da Unioeste usando o Netbeans 21 (Java 21) (11/03/2024) == | == Procedimentos para que o Maven funcione nas aplicações da Unioeste usando o Netbeans 21 (Java 21) (11/03/2024) == | ||
− | * Alterar as configurações do Maven do Netbeans para que utilize a jdk 8 do Java: ir no menu Tools -> Options | + | * Alterar as configurações do Maven do Netbeans para que utilize a jdk 8 do Java: ir no menu Tools -> Options. Na tela que abre, ir na aba Java e depois a aba Maven. Alterar a propriedade Default JDK para JDK 1.8 |
* No arquivo pom.xml do projeto, alterar o caminho do repositório da Unioeste para https (pois a versão 21 do Netbeans não suporta http): | * No arquivo pom.xml do projeto, alterar o caminho do repositório da Unioeste para https (pois a versão 21 do Netbeans não suporta http): | ||
<pre> | <pre> |
Edição de 14h56min de 13 de março de 2024
Voltar a Página Inicial - Menu Sistemas
Introdução
Este documento descreve os padrões de desenvolvimento dos sistemas da UNIOESTE que utilizam a tecnologia vRaptor+ExtJS
Pequeno histórico
Em janeiro de 2010 iniciaram os estudos e desenvolvimento de sistemas na Unioeste em um padrão unificado, escrevendo aplicações web na plataforma java.
Documentação Externa
ExtJS
- Documentação da API do ExtJS - http://dev.sencha.com/deploy/dev/docs/
- Centro de Aprendizagem ExtJS - http://www.sencha.com/learn/
- Fórum do ExtJS - http://www.sencha.com/forum/
- Manual do ExtJS (Escrito pela comunidade) http://www.sencha.com/learn/Ext_Manual
- Documentação ExtJS 7.7.0 - https://docs.sencha.com/extjs/7.7.0/
- Aprenda sobre a biblioteca ExtJS http://www.sencha.com/learn/Learn_About_the_Ext_JavaScript_Library
- Layout de Aplicação para Iniciantes - http://www.extjs.com/learn/Tutorial:Application_Layout_for_Beginners_(Portuguese)
vRaptor
- Documentação do vRaptor - https://www.vraptor.org/pt/docs/
- Download do Projeto Padrão - http://vraptor.caelum.com.br/download.jsp
Guia para Estudo
- Apostila "Web ágil com VRaptor, Hibernate e AJAX" - http://www.caelum.com.br/apostila-vraptor-hibernate/
- Introdução ao Javascript - https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/A_re-introduction_to_JavaScript
- Apostila sobre Javascript - http://www.scriptbrasil.com.br/download/apostila/837/
- Introdução sobre Extjs MVC - http://blog.gustavohenrique.net/2012/02/introducao-ao-padrao-mvc-no-ext-js-4/
- Guia sobre arquitetura de sistemas em Extjs - http://docs.sencha.com/extjs/6.0/application_architecture/application_architecture.html
Sistemas que utilizam esta Tecnologia
Sistema ExtJs SVN Responsáveis Status Academus 4.2 MVC academus Tiago/Marcelo Producao/Desenvolvimento Almox 3 almox Tiago/Elton Producao AvaliacaoIns... - - - Producao ??? Login 4.2 login Márcio Producao Minos 4.2 MVC minos_mvc Márcio Producao Osiris 4.2 MVC osiris Tiago Producao PIAD 4.2 MVC piad Tiago Desenvolvimento pwmunioeste 4.2 MVC pwmunioeste Márcio Producao Relatum - relatum Tiago Producao SGC 3 sgc Tiago Producao SGCCR 4.2 MVC sgccr_mvc Tiago Producao SGCV 3 sgcv Tiago Producao SGEV 4.2 MVC sgev Débora Desenvolvimento SGOC - - - Producao ??? SGPDE 4.2 MVC sgpde_mvc Márcio Producao SGPic 4.2 MVC sgpibic Lucas/Gean/Guilherme Producao/Desenvolvimento SGPPLS 4.2 MVC sgppls_mvc Alessandro Producao SGRD 4.2 MVC sgrd_mvc Alessandro Producao SGRF 4.2 MVC sgrf Márcio Producao ??? Stricto 3 stricto Lucas/Juliano Producao/Desenvolvimento Migrando p/ 4.2 MVC Desenvolvimento Parado/Extinto: Pontus-Web 3 pontus_vraptor Elton Parado SGA 3 sga_vraptor Tiago Extinto SGE 3 sge_vraptor Tiago Extinto SGEM 4.1 sgem Márcio Parado SGLCC 4.2 MVC sglcc_mvc Márcio Parado SGPE 4.1 sgpe Márcio Parado SGT 3 sgt Márcio Extinto
Árvore de diretorios de um projeto vRaptor+ExtJs
- build
- conf
- dist
- nbproject
- setup
- src
- baseconfig.properties - Arquivo de Configurações Gerais (Conexão com Banco,diretórios,etc)
- br
- unioeste
- projeto
- controller - Controladores de acesso da visão
- dao - Objetos de acesso aos dados
- modelo - Modelos das Entidades do Banco de Dados
- sessions
- CriadorDeSessionFactoryConfiguracoes.java - Arquivo de Configurações do Hibernate
- sharedev - Classes Java compartilhadas entre todos projetos
- web
- META-INF
- MANIFEST.MF
- context.xml - Configuração do contexto (diretório principal)
- WEB-INF
- jsp
- index
- genericJson.jsp - Página especial que retorna respostas em formato Json
- index.jsp - Página inicial que requisita os arquivos JavaScript do projeto
- index2.jsp - Página especial mostrada quando a conexão é fechada, ou o login não foi possível
- lib - Bibliotecas (jars) compartilhados entre todos os projetos
- relatorios - Contem os relatórios na fase de Desenvolvimento (diretório e subdiretórios gerados automaticamente)
- messages.properties
- web.xml - Configurações do servidor de aplicação
- ext - Arquivos da Biblioteca ExtJs
- icons - Ícones
- images - Imagens
- js
- frmCadastro
- frmGeral
- frmPesquisa
- uteis - Arquivos JavaScript compartilhados entre todos os projetos
- frmPrincipal.js - Configurações de Construção do menu do sistema e requisições iniciais
Legenda:
- diretorio - Diretório de arquivos compartilhados por todos os projetos por meio do SVN.
- arquivo.extensao - Arquivo de configuração. Importante para o funcionamento do sistema.
- diretorio - Diretório que contem os principais arquivos da aplicação.
- arquivo.extensao - Arquivo do projeto
- diretorio - Diretorio do projeto
Bibliotecas Java
Nome | Descrição | Pacotes Dependências/Relacionadas |
---|---|---|
vraptor | Framework MVC | vraptor |
jasper | Geração de relatórios | jasperreports,itext,commons-digester,groovy-all,fntArial |
hibernate | Framework de Persistência de Dados | hibernate,ejb3-persistence,hibernate-annotations,hibernate-validator¹ |
flexson | Serialização de objetos java para json | flexjson |
jtds | Conexão com o banco de dados | jtds |
Envio de emails | ||
gsp | Parser de sql | gsp |
commons-io | Utilidades para streams e arquivos | commons-io |
1 - Usado em pouquíssimos lugares, poderia remover
Atualização do Projeto
Quando for atualizar o projeto, alguns arquivos locais não compartilhados talvez precisem ser atualizados. Estes arquivos precisam estar atualizados e conforme os padrões para que o sistema interaja corretamente. Estes arquivos são em geral configurações que são diferentes para cada projeto, mas dentro de um padrão. Os arquivos são modificados ocasionalmente/raramente.
- index.jsp (novos arquivos JS compartilhados; atualização de forma de login) - ocasionalmente
- CriadorDeSessionFactoryConfiguracoes.java (novos beans compartilhados; atualização de forma de login) - ocasionalmente
- frmPrincipal.js (atualização da viewport principal ou na forma de login) - ocasionalmente
- bibliotecas do projeto (novas bibliotecas compartilhadas) - ocasionalmente
- basesconfig.properties (modificação das configurações gerais: conexão com banco, diretórios, etc) - ocasionalmente
- index2.jsp (modificação na página de logout ou página de sessão expirada/erro) - raramente
- genericJson.jsp (modificação na forma de responder objetos JSON) - raramente
- web.xml (modificação das configurações do servidor de aplicação) - raramente
Informações atualizadas: como criar novo projeto
Passo-a-passo para criar um sistema
Tecnologias do Projeto mais atual
Os sistemas mais atualizados são o Relatum e o SIF.
Estes sistemas estão utilizam o Maven como gerenciador de dependências, com uma dependência direta apenas, que é a biblioteca "sharedev-vraptor4", baseado no framework vRaptor 4.
Esta biblioteca contém funções gerais de autenticação, controle de auditoria e transações, logs, conexão com banco de dados, e outras funções comuns a todos os sistemas.
A interface é feita utilizando-se do framework ExtJs 6 (versão 6.2). A biblioteca de classes comuns está no projeto "sharedev-ext6" e é incluída no projeto por meio de um submódulo do git.
A biblioteca contem a viewport padrão com menus básicos de usuário, funcionalidade de CRUD (grids e janelas de edição simples) e outras extensões do ExtJs para funcionalidades úteis.
Servidores
Servidores Java
- 200.201.88.170 midas
- 200.201.88.171 java1
- 200.201.88.172 java2
- 200.201.88.174 master
- 200.201.88.175 java5 (slave)
- 200.201.88.182 java6
- 200.201.88.183 java7
- 200.201.88.184 java8
-No 170 há uma instância do Tomcat 8.*; Nos demais há duas instâncias do Wildfly 8.* em cada máquina, trabalhando em cluster.
- 170 rodam aplicações tomcat;
- 171,172,183,184 rodam aplicações wildfly (login, academus, etc);
- 174,175,182 rodam relatórios no wildfly;
Padronizações vRaptor
Nomes de Métodos dos Controladores
Os nomes de métodos devem seguir um padrão para serem identificados pelo controle de transações e de acesso.
- Métodos que farão escrita no banco de dados, devem iniciar por: adiciona, atualiza ou remove. Exemplos:
- adiciona
- atualiza
- atualizaEstadosEMunicipios
- removeTodosMunicipios
- Outros métodos, de leitura, devem iniciar preferencialmente por nomes como: lista, verifica, carrega. Exemplos:
- verifica
- lista
- listaTudo
- listaPorEstado
- listaTudoPorEstado
- carregaDadosPrincipais
Padronizações ExtJS
Tamanhos das Janelas
Para a exibição correta das janelas (considerando resolução 1024x768), os tamanhos devem estar entre:
- Largura: Mínimo de 500 e Máximo de 700
- Altura: Mínimo de 100 e Máximo de 500
Componentes
Campos Básicos
Campo | Tipo | Uso | Prefixo padrão |
---|---|---|---|
Ext.form.TextField | char,varchar | Strings menores | tf |
Ext.form.DateField | datetime | Campo de data com calendário para escolha | df |
Ext.form.TextArea | text,char,varchar | Strings maiores | ta |
Ext.form.NumberField | decimal, int | Números inteiros ou decimais (com/sem separação de casas) | nf |
Ext.form.CheckBox | bool - Boleanos (Sim/Não) | pode ser usado também com char (Ex: 'T','F') desde que seja feito um campo boolean transient no modelo da entidade | ck |
Ext.form.Radio | int,char,varchar | Strings ou números de identificação (poucas opções para ser uma nova tabela) | rd |
Ext.form.MoneyField | money | Dinheiro no formato 50.000,00 | mf |
Ext.form.HtmlEditor | text,char,varchar | Editor de Código HTML | he |
Ext.form.SliderField | int,decimal | Números inteiros ou decimais entre um intervalo | sf |
Ext.form.Label | text | textos | lb |
Campos Avançados
Campo | Tipo | Uso | Prefixo padrão |
---|---|---|---|
Ext.form.ComboBox | campo FK (int,char,varchar) com uma descrição (char,varchar) | Usado para poucos registros | cb |
UxBscGenerico | campo FK (int,char,varchar) com uma descrição (char,varchar) | Usado para vários registros | bsc |
Ext.form.TextFieldRemoteVal | int,char,varchar | Campo que faz a validação remotamente | tfr |
Ext.ux.form.FileUploadField | image,blob | Upload de arquivo único | fup |
AwesomeUploader | image,blob | Upload de vários arquivos | aup |
Campos Especiais
Campo | Tipo | Uso | Prefixo padrão |
---|---|---|---|
Ext.form.DisplayField | int,char,varchar | Campo não submetido e não validado | dsf |
Ext.form.Hidden | int,char,varchar,datetime,money,decimal,text | Campo escondido de qualquer tipo que será submetido | hf |
Outros Componentes
Campo | Tipo | Uso | Prefixo padrão |
---|---|---|---|
UxCdsGenerico | x | Janela de cadastro genérica | x |
UxPsqGenerico | x | Janela de pesquisa genérica | x |
UxGrdDuplo | x | Painel com grid duplo (filtrados/selecionados) | x |
Nomenclatura
- Campos de tela: Utilizar o padrão de prefixo correspondente ao campo que se está utilizando concatenado ao nome do campo no model. Exemplo: objeto Ext.form.TextField para edição de um campo pssFscNome: deve-se colocar o prefixo ft concatenado ao nome do campo pssFscNome, resultando no nome ftPssFscNome
Funcionamento do Controle de Acesso/Transações
vRaptor
Para que um controlador tenha seus métodos verificados pelo controle de acesso, a classe deve ter a seguinte anotação:
... @Resource @TrnName(value = "CodigoDaTransacaoDoControleDeAcesso") public class NomeDaEntidadeController { ...
ExtJs
Para que uma Tela/Transação apareça no menu do sistema e seja verificada pelo controle de acesso, é necessário que o parâmetro id do item de menu seja igual ao código da transação cadastrada no controle de transações.
... var nomeDaVariavel_ItemDeMenu = new Application.SubMenuTreeNode({ text:'Nome do Item de Menu', id: 'CodigoDaTransacaoDoControleDeAcesso', listeners: { click: function(){ appViewPort.addWindow(fQueRetornaAJanelaCorrespondenteAoItemDeMenu()); } } }); ...
Servidores Tomcat
Nossa estrutura consiste de:
- Um servidor para as aplicações (200.201.88.170), rodando com Linux Ubuntu e Tomcat 7
- Dois servidores para os relatórios, em cluster (200.201.88.171 e 200.201.88.172), rodando com Linux Ubuntu e Tomcat 7
- O cluster é implementado com o HAProxy
- Nos servidores em cluster, a pasta de deploy é compartilhada (o 171 é a matriz); dessa forma, o deploy feito em um servidor automaticamente é feito no outro também
- A pasta de configuração dos sistemas é um link simbólico para o servidor 170, ou seja, essa pasta fica compartilhada entre todos os 3 servidores
Links para configuração do JDK da Oracle:
http://www.magentodeveloperleedsuk.co.uk/installing-oracle-java-jdk-7-on-ubuntu-12-04-step-by-step/
Após instalar a nova JDK, remover a OpenJDK: sudo apt-get remove --purge openjdk-*
https://issues.apache.org/jira/browse/CASSANDRA-4275
Alterações para execução do projeto no JBoss 7
Para implantar o projeto no JBoss 7 é necessário ajustar o sistema para que o VRaptor faça um scan estático das classes. Isso significa que o VRaptor fará o mapeamento das classes anotadas antes da primeira subida do projeto. Isso deixa a subida mais lenta, mas posteriormente o sistema executa mais rapidamente, pois o scan não precisará mais ser feito.
Para que o scan estático funcione, é necessário incluir o seguinte trecho no arquivo nbbuil.xml do projeto no Netbeans (o arquivo pode ser localizado acessando a aba "Arquivos"):
... <target name="-post-compile"> <path id="build.classpath"> <fileset dir="build/web/WEB-INF/lib" includes="*.jar" /> </path> <java classpathref="build.classpath" classname="br.com.caelum.vraptor.scan.VRaptorStaticScanning" fork="true"> <arg value="build/web/WEB-INF/web.xml" /> <classpath refid="build.classpath" /> <classpath path="build/web/WEB-INF/classes" /> </java> </target> ...
Monitoramento do JBoss 7 utilizando o "Applications Manager 10", da empresa ManageEngine
To monitor JBoss, the http-invoker.sar should be deployed in the JBoss Server. The application (http-invoker.sar) is by default deployed in the JBoss server.
If the http port of the JBoss server is changed then the port number in the attribute InvokerURLSuffix should also be modified in jboss-3.2.0/server/default/deploy/http-invoker.sar/META-INF/jboss-service.xml file.More Info>>
To monitor JBoss 5.0.0 version and above jbossagent.sar should be deployed in JBoss server. To deploy follow the steps below Copy jbossagent.sar from location <Applications Manager home>/working/resources and paste under <JBOSS_HOME>/server/default/deploy.If you are running JBoss in different domain like all then deployment target folder would be <JBOSS_HOME>/server/all/deploy
Ferramentas para Desenvolvimento
Úteis
- 7zip 9.20 http://www.7-zip.org/download.html
- notepad++ 6.6.7 http://notepad-plus-plus.org/
- winscp 5.5.4 http://winscp.net/eng/download.php
- putty 0.6.3 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
- teamviewer 9 http://www.teamviewer.com/pt/
- tortoise 1.8.7 http://tortoisesvn.net/downloads.html
- git 1.9.5 https://git-scm.com/downloads
Desenvolvimento
- ireport 5.6.0 http://sourceforge.net/projects/ireport/
- netbeans 8.0 http://netbeans.org/downloads/
- probe 2.3.3 http://code.google.com/p/psi-probe/
- jdk 7u60 http://www.oracle.com/technetwork/pt/java/javase/downloads/index.html
- jtds 1.3.1 http://sourceforge.net/projects/jtds/files/
Configurar proxy no maven
- No projeto maven desejado, clique com o botão direito no item "Arquivos do Projeto"
- Escolha "criar settings.xml"
- Edite este arquivo e inclua o trecho abaixo, mudando o usuário e senha para o seu
<proxies> <proxy> <id>proxy-unioeste</id> <active>true</active> <protocol>http</protocol> <username>nome.sobrenome</username> <password>SuaSenha</password> <host>proxy.unioeste.br</host> <port>8080</port> <nonProxyHosts>*.unioeste.br</nonProxyHosts> </proxy> </proxies>
- Após realizar esta configuração, clique com o botão direito no item "Dependências" e escolha "Fazer download de dependências..."
- Serão baixadas todas as bibliotecas de que o projeto depende
Configurar Simulação de Usuário (Somente Leitura) com Filtro Personalizado
- Adicione a transação "cSimulaUsuarioL" ao padrão que irá simular outros usuários
- Verifique as Prioridades dos Padrões: quanto menor o número, maior a prioridade e mais irá simular (ex: padrão 0 simula todos, padrão 3 somente simula 4,5,6,etc)
- Adicione uma SQL de filtro na tabela PdrTrnAvancado (pelo CCM ou da maneira ABAIXO), que deve retornar todos usuários (PssFsc_Codigo) utilizando o filtro @PssFsc_Codigo que será injetado do usuário logado.
insert into PdrTrnAvancado (Trn_Codigo,Pdr_Codigo,TrnTbl_NmTabela, TrnTblCmp_NmCampo, PdrTrnAvn_Filtro, TrnPrmAcs_Tipo, PdrTrnAvn_Comando) values ('cSimulaUsuariol','PadraoMaiorQueQuerSimular','Geral','PadraoMenorASerSimulado','select PssFsc_Codigo from PssFisica where PssFsc_Codigo = @PssFsc_Codigo', 'G', )
- Será usada a seguinte funcao para busca dos padroes possíveis:
exec spRtrVlrUnicoComResultSet 'Geral','PadraoMenorASerSimulado','PadraoMaiorQueQuerSimular','cSimulaUsuarioL'
- PadraoMenorASerSimulado: padrão que se deseja simular
- PadraoMaiorQueQuerSimular: padrão da pessoa que está querendo simular
Problema para construir aplicação após fazer download das bibliotecas definidas no maven do projeto
- Ao dar build no projeto, mostra o seguinte erro: Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: error in opening zip file
- Esse erro indica que algum dos arquivos .jar que fazem parte do projeto está corrompido
- Para descobrir qual é o arquivo, acesse a pasta de repositório do netbeans (p. ex., C:\Users\marcio.veronez\.m2\repository) e procure por todos os arquivos .jar
- Selecione todos os arquivos, clique com o botão direito, escolhe o item "7-Zip" (deve ter o 7-Zip instalado) e então a opção "Testar arquivo compactado"
- O 7-Zip irá testar todos os arquivos e informará qual é o arquivo corrompido
- Procure na internet uma versão correta do .jar corrompido e substitua o arquivo na pasta do repositório
Procedimentos para que o Maven funcione nas aplicações da Unioeste usando o Netbeans 21 (Java 21) (11/03/2024)
- Alterar as configurações do Maven do Netbeans para que utilize a jdk 8 do Java: ir no menu Tools -> Options. Na tela que abre, ir na aba Java e depois a aba Maven. Alterar a propriedade Default JDK para JDK 1.8
- No arquivo pom.xml do projeto, alterar o caminho do repositório da Unioeste para https (pois a versão 21 do Netbeans não suporta http):
<repositories> <!--other repositories if any --> <repository> <id>project.local</id> <name>project</name> <url>https://netsr-vers01.unioeste.br/maven/</url> </repository> </repositories>
- Criar um arquivo settings.xml na pasta Project Files (mesmo local aonde fica o pom.xml) e então colar a seguinte configuração dentro da tag settings, para que o Maven busque o repositório no caminho http:
<mirrors> <mirror> <id>project.local</id> <mirrorOf>project.local</mirrorOf> <!-- Must match repository id. --> <name>Dummy mirror to unblock the team repo server</name> <url>http://netsr-vers01.unioeste.br/maven/</url> </mirror> </mirrors>