Solucionado (ver solução)
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.