Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
14
respostas

Publicação de projeto usando JAVA+ Hibernate (como API ) e JavaScript/Angular

Olá! minha duvida é meio trabalhosa de se responder, eu suponho, mas quem tiver a boa vontade, eu agradeço desde já.

Fiz uma API em JAVA+Hibernate pra consumir o Front-End que fiz usando Angular/JavaScript. E localmente funciona tranquilo, atingi as minhas expectativas. Na realidade esse projeto é refatoração de um já existente que tenho usando outras tecnologias e inclusive está online, é um projetinho bem simples.

Minha duvida: Pra rodar minha aplicação nova, localmente, eu faço um "executar" projeto "back-end" dentro do NetBeans, que está configurado para usar o WildFly10 como servidor de aplicação e o Postgres como banco de dados. Ai quando clico pra executar o Wildfly10 sobe e meu back-end fica disponível no localhost. Até ai tudo bem. Depois eu clico em "Executar" o projeto front-end dentro do NetBeans e ele "cria um servidor" pro meu front-end rodar (eu acho que cria, não sei o que acontece ali exatamente).

imagem para entender o que falei acima.

http://prntscr.com/gqv9e5

Essa é minha primeira duvida, esse servidor que o NetBeans cria pro meu front-end funcionar é o que ? Porque agora eu pretendo desacoplar o front-end do back-end, pra hospedar na Amazon (ambos), mas eu não sei como rodar um projeto front-end localmente sem nem uma ligação direta, como está atualmente.

Minha segunda duvida é : Nunca publiquei online uma "API" usando Java/Hibernate/Postgres, não sei nem por onde começar. Alguém pode me dizer como fazer ou me passar um tutorial bom?

14 respostas

Oi Douglas, tudo bem ?

Na maioria das vezes, o que a gente geralmente faz para fazer o deploy é gerar um pacote da aplicação, ou seja, um jar, war ou ear, isso vai depender do seu projeto.

Ai você precisa pegar esse pacote e subir para a máquina que quer, se vai subir na aws vai ver que é bem simples, consegue usar um comando chamado scp, que serve para transferir arquivos.

Ai você tem a opção de configurar a máquina da aws com um servidor de aplicação e colocar o seu pacote lá dentro.

"jar, war ou ear, isso vai depender do seu projeto." Não intendi essa parte, qual a diferença deles? e como vou saber qual eu uso?

No único projeto que fiz deploy na AWS eu lembro que simplesmente rodei o servidor lá dentro usando o NODE (comando npm start), a unica configuração que me lembro de ter feito foi de deixar a porta 80 aberta para conexões remotas e vincular o DNS.

Douglas,

JAR: os módulos EJB que contêm beans java corporativos (arquivos de classe) e descritor de implantação EJB são compactados como arquivos JAR com extensão .jar

WAR : os módulos da Web que contêm arquivos de classe Servlet, arquivos JSP, arquivos de suporte, arquivos GIF e HTML são embalados como arquivo JAR com extensão .war (arquivo web)

EAR: Todos os arquivos acima (.jar e .war) são embalados como arquivo JAR com extensão .ear (archive empresarial) e implantados no Servidor de Aplicação.

Por exemplo, se seu projeto for baseado no maven, você pode simplesmente usar o comando mvn package que ele vai empacotar para você baseado na configuração do pom.xml

Caso contrario a própria ide te ajuda a fazer o pacote, basta você ir em fazer deploy que ele vai te ajudar a escolher.

Entendi um pouco melhor, o que seria um projeto baseado no maven? E sim eu uso o pom.xml para declarar minhas dependências, se não me engano o pom.xml é tipo o "package-json" serve pra anotar minhas dependências e para baixá-las automaticamente depois.

Outra duvida, então se eu conseguir criar esse "EAR" e colocar na pasta do llS da AWS a minha API já fica acessível? isso tá bem obscuro pra mim ainda.

Douglas,

Se você possui um pom, significa que está usando maven.

Você pode usar o comando mvn package para empacotar a aplicação e com o pacote pronto, você consegue fazer o deploy.

Obrigado Matheus, me ajudou bastante.

E sobre a minha primeira duvida, alguém pode me ajudar?

Douglas,

Você vai precisar colocar num servidor só. A parte de java já tá bem resolvida.

Agora a parte do angular você precisa ver como é que feito.

Olá Douglas! Você está usando qual framework de frontend? AngularJS ou Angular(2>)?

Olá Vanessa, AngularJS

Oi Douglas, em geral sua aplicação usando angular, é basicamente um composto de html, js e css. Você só precisa de um servidor web qualquer para colocar esse projeto e conseguir acessar os arquivos. Por exemplo: você pode pegar essa parte do seu projeto, empacotar como um war e colocar dentro de um tomcat, isso funciona.

você pode pegar seus arquivos e criar um projeto baseado no node.js, usando por exemplo, esse projeto aqui => https://github.com/indexzero/http-server. Ou seja, você pegar uma máquina na amazon, instalar o node, instalar o servidor do link que falei e subir seus arquivos do projeto angular.

Outro detalhe Douglas, não sei se você já fez, mas é interessante que você faça a carreira de javascript. Vai aprender bastante de javascript e angular... Também caia de cabeça na carreira java web, muitas das suas dúvidas vão ficar muito mais claras.

Olá Alberto, obrigado pela resposta. Agora intendi.

A propósito eu já fiz a carreira de JavaScript e o curso de angular 1.x, também fiz alguns de Java aqui da Alura, foi com o que aprendi neles que fiz meu projetinho.

Tava dando uma lida aqui nas diferenças de WAR, EAR, JAR e ficou a duvida se no meu caso eu deva é gerar um WAR, para o projeto "back-end". Ai eu jogo esse war dentro do IIS e como magica deve funciona? ou ainda é necessários plugins e coisas do tipo?

Ai eu rodo o front-end com o http-server por exemplo, fora desse war, vai funciona perfeitamente e ainda fica desacoplado, mais fácil de fazer manutenção?

solução!

A estrutura do war é entendida por servidores que implementam a especificação de servlets, como seu wildfly, tomcat etc. Em relação ao projeto de front, o objetivo é ficar desacoplado mesmo :).

Entendi, muito obrigado.