Next 3.6.0 SVN HEAD - Como migrar

Não deixe de perguntar, solucione aqui suas dúvidas...

Next 3.6.0 SVN HEAD - Como migrar

Mensagempor rogelgarcia » Ter Jan 15, 2013 9:38 pm

O Next 3.6.0 está sendo desenvolvido. Diversas alterações arquiteturais foram feitas para facilitar ainda mais a utilização do framework, principalmente em respeito a personalização e configuração.

Como ainda demora um pouco para o lançamento oficial da versão, este tópico servirá como um guia básico para quem quiser já utilizar a versão 3.6.0 que está no HEAD do SVN. Esta versão é bastante estável e é utilizada por sistemas em produção.

É recomendável criar uma nova aplicação básica para testar o novo Next. Conseguindo criar uma aplicação básica, migre a sua aplicação oficial seguindo as mesmas orientações.

Todas as funcionalidades do Next continuam funcionando, porém alguns pequenos ajustes podem ser necessários.

Se houver dúvidas, ou ocorrerem erros durante a utilização do Next 3.6.0 basta perguntar no fórum. Coloque no título da mensagem o prefixo "Next 3.6.0 SVN HEAD" para facilitar a organização.

Pode ser que para alguma situação específica não seja colocada a instrução aqui nessa mensagem. Se ocorrerem tais situações atualizaremos esse tópico com esses detalhes.
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am

Passo 1 - Baixar o Next 3.6.0 do SVN

Mensagempor rogelgarcia » Ter Jan 15, 2013 9:46 pm

O fonte do Next é hospedado no SVN do google code.
    Basta configurar um repositório SVN com a URL: http://nextframework.googlecode.com/svn/trunk/ não precisa de login nem senha

A estrutura encontrada no SVN é mostrada na figura abaixo:
Imagem

Será necessário baixar todos os projetos, com exceção do projeto "documentacao". O next agora é modularizado, por isso a quantidade de projetos.

Assim que baixar o Next, ele não irá compilar. Isso é porque no projeto não estão incluídas as bibliotecas dependentes. O Next utiliza o IVY para fazer download das bibliotecas. Não será necessário fazer nenhuma configuração ou download para organizar as bibliotecas dependentes, fique tranquilo. O next contém um build que fará todo o trabalho de baixar o ivy e baixar as bibliotecas dependentes.

Para baixar as bibliotecas, no projeto org.nextframework.build existe um arquivo build-dependencies.xml.
Basta executar esse arquivo ant (Usando eclipse: botão direito no arquivo > Run As > Ant Build)
As bibliotecas serão baixadas e o projeto será compilado.
Dê um refresh em cada projeto para que as bibliotecas sejam lidas.

Após essa etapa nenhum projeto next deve ter nenhum erro de compilação por problemas de biblioteca.
Anexos
next-svn.png
Estrutura SVN do next
(15.1 KiB) Não foi feito download ainda
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am

Passo 2 - Criar um projeto utilizando o Next 3.6

Mensagempor rogelgarcia » Ter Jan 15, 2013 10:00 pm

Crie um projeto Java (ou Web se estiver disponível) no seu eclipse.
Se for um projeto Java normal, crie uma pasta no projeto chamado WebContent. Se tiver criado um projeto web essa pasta já deve ter sido criada.

Nesse tutorial o projeto Next será utilizado como um projeto dependente (ao invés de gerar JARs para o next)
Coloque o projeto org.nextframework como sendo uma dependência do seu projeto.
Botão direito no seu projeto > Build Path > Configure Build Path
Na aba Projects clique em Add... e escolha o projeto org.nextframework
Imagem
Se desejar, poderá adicionar a dependência dos módulos org.nextframework.legacy (inclui recursos para relatórios) e também o org.nextframework.authorization.dashboard (inclui recursos para criação da tela de autorização). Esses dois últimos módulos não são importados automaticamente quando o org.nextframework é adicionado ao classpath.


Aproveitando ainda a tela de configuração do Build Path, vá até a aba Source.
No Default Output Folder coloque seuprojeto/WebContent/WEB-INF/classes
(ou clique em Browse e escolha esse diretório dentro do seu projeto, crie essa hierarquia de pastas se ela não existir)
Imagem

Nesse momento o seu projeto já terá a dependencia do next e também estará configurado para que as classes compiladas sejam colocadas em WEB-INF/classes

PS: Alguns plugins utilizam pastas diferentes de WebContent para ser a raíz do projeto web, se for esse o caso todo lugar que fizer referência a WebContent troque pela pasta que seu plugin criou.
Anexos
next-buildpath-src.png
Build Path src output
(33.93 KiB) Não foi feito download ainda
next-buildpath1.png
Build Path
(31.02 KiB) Não foi feito download ainda
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am

Passo 3 - Configurar o web.xml

Mensagempor rogelgarcia » Qua Jan 16, 2013 9:49 pm

O Next 3.6 foi atualizado para utilizar JEE 6. Isso significa que você terá que utilizar um servidor compatível, como por exemplo o tomcat 7.

Essa atualização é refletida no web.xml que tem que ser configurado para Servlet 3. Porém, ele ficou mais simples. Para um projeto básico, não é necessário fazer nenhuma configuração. Por isso o XML deve ficar vazio. Como mostrado abaixo:

Código: Selecionar tudo
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                           http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      version="3.0"
      metadata-complete="false">
     
      
</web-app>


Você pode adicionar, caso necessário, configurações da sua aplicação. Mas as configurações do next serão feitas de maneira automática. Inclusive os módulos dos controllers serão configurados automaticamente. Basta existir um controller para determinado módulo.. que ele será criado.

Apenas para lembrar que a url de um controller tem duas partes. A primeira parte é o módulo (até a segunda barra), a segunda parte configura o path do controller. Exemplo: @Controller(path="/admin/x/y/z"). Nesse caso /admin é o módulo.

A documentação do next possui um capítulo sobre autenticação e autorização. Essas funcionalidades continuam funcionando, e a configuração no web.xml deve ser mantida (authenticationFilter e mappings relacionados). A autorização é automática. Não é necessária nenhuma declaração.

QueryBuilder: Na documentação do Next sobre autorização existem exemplos que utilizam o querybuilder com um contrutor que recebe um hibernate template. Agora, o QueryBuilder deve ser construido com construtor padrão. Exemplo: new QueryBuilder<X>(). Onde X é o tipo genérico desejado.
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am

Passo 4 - Publicar a aplicação

Mensagempor rogelgarcia » Qui Jan 17, 2013 10:18 pm

O Next Framework agora distribui scripts do Ant para publicação da sua aplicação. O que facilita bastante esse trabalho.

Crie um arquivo build.xml na raiz do seu projeto e adicione o seguinte conteúdo:

Código: Selecionar tudo
<project name="testenext" default="Next Project Web Deploy.deploy-project">
   <property name="deploy.dir" value="c:\tomcat7\webapps\testenext"/>
   <property name="webroot.dir" value="WebContent"/>
   <import file="../org.nextframework.build/build-web-deploy.xml"/>   
</project>


Você pode alterar o nome do projeto (name="testenext") e o deploy.dir para refletir o diretório de publicação da sua aplicação (c:\tomcat7\webapps\testenext).

Recomendamos o tomcat 7 ou glassfish 3 como servidores para publicar a sua aplicação.

Para facilitar ainda mais o processo de deploy, abra uma ant view para colocar o build recém criado.
Acesse o menu: Window > Show View > Ant

Arraste o seu build.xml para essa view.

Aparecerão várias tasks de build para seu projeto. Para fazer uma publicação completa é só executar a task Deploy Project On Server. A task Copy Application Files é uma task bastante rápida para copiar apenas os arquivos da sua aplicação.

Na sua aplicação, crie alguma classe em qualquer pacote e publique e ligue o servidor. Pronto! Sua aplicação já estará funcionado. (O Next agora requer que exista pelo menos uma classe na sua aplicação para que ele reconheça qual é o pacote base dela. Essa classe não necessita ter conteúdo).
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am

Passo 5 - Observações

Mensagempor rogelgarcia » Sáb Jan 19, 2013 3:55 pm

A conexão com o banco de dados é feita com o connection.properties normalmente.
Se for utilizar a conexão estendida (através de XML). O bean sessionFactory terá uma diferença:
Código: Selecionar tudo
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
   <property name="dataSource">
      <ref bean="dataSource" />
   </property>
   <property name="packagesToScan" value="foo.bar"/>
</bean>

A propriedade packagesToScan deve ser configurada com o diretório base da sua aplicação.

Cada entity só poderá ter um único GenericDAO e GenericService.
Se criar na sua aplicação um GenericDAO e GenericService intermediário para não estender diretamente das classes do Next, faça eles serem abstract.

A anotação @Bean do Next continua funcionando, porém está deprecated. Você poderá utilizar as anotações do Spring @Component @Service ou @Repository. (A funcionalidade de cada uma dessas anotações é exatamente a mesma)

QueryBuilder: Agora, o QueryBuilder deve ser construido com construtor padrão. Exemplo: new QueryBuilder<X>(). Onde X é o tipo genérico desejado.

O pacote org.nextframework é reservado. Ele não poderá ser utilizado pela sua aplicação.

O Next.getUser() agora é Authorization.getUser()

A classe de AuthorizationDAO da sua aplicação deve ser anotada com @Service. Elá agora participa da injeção de dependência. (Adicionado em 12/12/13)
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am

Aplicação de exemplo minima (sem banco de dados)

Mensagempor rogelgarcia » Ter Fev 05, 2013 4:39 pm

Aplicação mínima para o Next 3.6.0 (não inclui as bibliotecas, utiliza os projetos do next já existentes no workspace)

Importe esse projeto para seu eclipse. Alguma configuração de build path (do JRE) pode ser necessária.

Execute o build.xml para publicar a aplicação. Mas antes, altere o caminho do seu servidor no arquivo (propriedade deploy.dir).

Teste utilizando a url http://localhost:8080/hellonext/hello/world

Obs: Não inclui o web.xml, que não é obrigatório no Tomcat 7. Se estiver utilizando outro servidor, pode ser necessário colocar o web.xml, como mostrado no passo 3, dentro de WEB-INF.
Anexos
hello-next-eclipse-project.zip
Projeto eclipse minimo para o Next 3.6.0
(2.71 KiB) Baixado 606 vezes
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am

Usando Next 3.6.0 JAR

Mensagempor rogelgarcia » Ter Fev 18, 2014 7:08 pm

Se você tiver feito download do arquivo compactado do next você terá que copiar os arquivos .jar para sua aplicação:
- Copiar todos os arquivos .jar dentro de /lib para WEB-INF/lib
- Copiar todos os arquivos .jar dentro de /lib/dependencies para WEB-INF/lib

Publique a sua aplicação como uma aplicação JEE usando os plugins da sua IDE. Com a versão em JAR não é possível utilizar o build.xml.

Usar o projeto aberto (ao invés de JAR) tem duas vantagens, você pode usar o build.xml, e os projetos contém os códigos fontes das bibliotecas dependentes. Se desejar continuar usando o next como um projeto no workspace, fique a vontade.
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am


Retornar para Dúvidas

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante

cron