Hospedagem JSF no Heroku

Postado por em   ●   31 comentários

Ao desenvolver uma aplicação JSF, nossas maiores preocupações são sobre as tecnologias e as regras de negócio necessárias para isso. Óbvio, não é mesmo?

Mas quero destacar aqui o momento depois que a aplicação é concluída (ou quase) e precisa ir para um ambiente de produção.

Nessa hora começa outra corrida: uma pesquisa pelo melhor lugar para publicar o projeto. Depois que encontra, mais uma: descobrir como essa hospedagem funciona.

Gravei uma aula que vai mostrar para você como funciona uma excelente opção para publicar seu projeto: o Heroku.

Vou mostrar como utilizar a hospedagem grátis do Heroku e mais:

  • O que são os Dynos e seus tipos
  • Como utilizar a cota gratuita
  • Quais são os tipos de processos que o Heroku disponibiliza
  • Como configurar sua aplicação JSF para hospedá-la no Heroku
  • O que é um Procfile
  • E utilizar o Heroku CLI para rodar os comandos necessários para publicar e configurar sua aplicação

Veja aqui a aula:

Sobre o livro que eu cito na aula, é esse aqui:

E-Book Java EE 7 com JSF, Primefaces e CDI

 

No mais, um abraço pra você e até a próxima!

PS: Você pode baixar o código-fonte da aula em nosso GitHub: http://github.com/algaworks/videoaula-jsf-hospedagem

É graduado em Sistemas de Informação, trabalha como instrutor na AlgaWorks e está no mercado de programação Java há mais de 8 anos, principalmente no desenvolvimento de sistemas corporativos.

31 comentários sobre “Hospedagem JSF no Heroku

  1. Heitor Neto -

    Muito bom.

  2. Alexandre Afonso Autor do post-

    Heitor, obrigado!

  3. Ramires -

    Muito boa a explicação #HandsOn

    só tive um problema ao tentar subir a aplicação localmente no windows.

    …heroku local
    [OKAY] Loaded ENV .env File as KEY=VALUE Format
    22:48:28 web.1 | Erro: Não foi possível localizar nem carregar a classe principal $JAVA_OPTS
    [DONE] Killing all processes with signal null

  4. Alexandre Afonso Autor do post-

    Ramires,

    Se quiser utilizar o comando “heroku local” no Windows acho que vc teria que trocar de $JAVA_HOME para %JAVA_HOME%. Ou utilizar algo como o https://www.cygwin.com/

    Abraço.

  5. Marcus Vinicius -

    Fantástico!!

  6. Alexandre Afonso Autor do post-

    Valeu Marcus!

  7. Marcus Vinicius -

    Alexandre, vc poderia colocar aqui a explicação da classe PersistenceProperties? Grato!

  8. thiano -

    Você poderia passar as instruções pra conseguir subir uma aplicacao feita com springboot e springmvc ?

    1. Alexandre Afonso Autor do post-

      Thiano, o que muda é o Procfile (ele é opcional para o Spring Boot) e a conexão com a base. Para configurar o banco você pode usar:


      spring.datasource.url=${JDBC_DATABASE_URL}
      spring.datasource.driverClassName=org.postgresql.Driver

      Abraço!

  9. Alexandre Afonso Autor do post-

    Por nada Marcus.

  10. José Augusto de Melo -

    Fantástico, muito obrigado!!!

    1. Alexandre Afonso Autor do post-

      Valeu José!

  11. Alexandre de Lima -

    Xara adorei o video mas deu um erro quando tento usar a aplicação pelo toncat

    imagem no erro completo https://snag.gy/GjJ4XO.jpg

    HTTP Status 500 – org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to invoke public void com.algaworks.hospedagem.util.EntityManagerProducer.postConstruct() on com.algaworks.hospedagem.util.EntityManagerProducer@5e9da6f

    1. Alexandre Afonso Autor do post-

      Fala xará!

      Isso é porque no Tomcat é preciso especificar o driver. Algo como:

      <property name=”javax.persistence.jdbc.driver” value=”com.mysql.jdbc.Driver” />

      Ainda não sei ao certo o porquê na versão embedded não precisa.

      Abraço!

  12. GEOVANE DOUGLAS DA SILVEIRA -

    Parabéns ! Muito bom. Funfando tudo certinho.

  13. Alexandre Afonso Autor do post-

    Bacana. Valeu Geovane!

  14. Luiz -

    Fantástica aula, parabéns Alexandre, muito didático e profissional.

    Ao importar o projeto a partir da URI Git, não é encontrado o Projeto da aplicação, como faço para que ele crie já o projeto no meu workspace?

    Obrigado, parabéns.

  15. Silas Santos -

    Muito bom!!
    Vou migrar meus projetos para o Heroku e pro DigitalOcean.

    Obrigado por compartilhar

  16. Alexandre Afonso Autor do post-

    Valeu Silas. Bacana!

  17. luiz henrique -

    Ola voce poderia me explicar melhor como faço o procfile

  18. Alexandre Afonso Autor do post-

    Olá Luiz! O Procfile é um arquivo de texto comum, só que sem extensão.

  19. Frederico Daniel -

    Muito Bom mesmo, obrigado Alexandre.

    1. Alexandre Afonso Autor do post-

      Por nada. :)

      Legal que curtiu Frederico!

  20. Rodrigo Pereira -

    Olá, Alexandre!

    Tive o mesmo problema do Alexandre de Lima:

    “Alexandre de Lima – 07/01/2017 às 19:02
    Xara adorei o video mas deu um erro quando tento usar a aplicação pelo toncat
    imagem no erro completo https://snag.gy/GjJ4XO.jpg
    HTTP Status 500 – org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to invoke public void com.algaworks.hospedagem.util.EntityManagerProducer.postConstruct() on com.algaworks.hospedagem.util.EntityManagerProducer@5e9da6f”

    Porém, não consegui utilizar sua resposta:

    “Isso é porque no Tomcat é preciso especificar o driver. Algo como:

    Onde devo realizar essa espeficicação

    1. Alexandre Afonso Autor do post-

      Olá Rodrigo!

      No persistence.xml. :)

      Abraço!

  21. Mário Jorge -

    Excelente tutorial.

    Onde devo alterar exatamente $JAVA_HOME para %JAVA_HOME%?

    1. Alexandre Afonso Autor do post-

      Obrigado Mário!

      No Procfile. Mas, isso seria para rodar localmente no S.O. Windows.

      Abraço!

  22. Mário Jorge -

    Apresenta o erro após executar o comando: heroku local

    [OKAY] Loaded ENV .env File as KEY=VALUE Format
    15:47:51 web.1 | Erro: N�o foi poss�vel localizar nem carregar a classe principal C:\Program
    [DONE] Killing all processes with signal null
    internal/util.js:183
    throw new errors.Error(‘ERR_UNKNOWN_SIGNAL’, signal);
    ^

    Error [ERR_UNKNOWN_SIGNAL]: Unknown signal: null
    at convertToValidSignal (internal/util.js:183:9)
    at ChildProcess.kill (internal/child_process.js:381:5)
    at EventEmitter. (C:\Users\user\AppData\Local\heroku\client\node_modules\foreman\lib\proc.js:54:11)
    at emitOne (events.js:120:20)
    at EventEmitter.emit (events.js:210:7)
    at ChildProcess. (C:\Users\user\AppData\Local\heroku\client\node_modules\foreman\lib\proc.js:50:13)
    at emitTwo (events.js:125:13)
    at ChildProcess.emit (events.js:213:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)

Deixe um comentário