domingo, 15 de novembro de 2015

Olá Mundo com Javascript no Wildfly 10 em 2 minutos!

Já falei sobre Nashorn, JavaFX e Javascript no meu blog FXApps, mas hoje eu fui pego de surpresa pelo anúncio que Wildfly 10 suporta Javascript no lado servidor. Eu deveria ter visto it antes, mas somente após alguns meses que isso foi lançado eu vi no twitter.

Depois que vi os exemplos do anúncio, eu achei que tinha que testar e surpreendente meu teste levou menos do que alguns minutos para ter meu primeiro script funcionando. Aqui vão os passos que tive que seguir:

(Estou considerando que você tenha o Java 8 instalado)

$ wget http://download.jboss.org/wildfly/10.0.0.CR4/wildfly-10.0.0.CR4.zip

  • Unzip o arquivo em algum lugar
$ unzip wildfly-10.0.0.CR4.zip

  • Inicie o servidor de maneira "silenciosa":
$ cd wildfly-10.0.0.CR4
& ./bin/standalone.sh > /dev/null &

  • Crie a estrutura da aplicação no diretório de deploy:
$ mkdir -p standalone/deployments/app.war/WEB-INF

  • Crie o único descritor necessário e declare o arquivo de Javascript nele (hello.js):
$ cat standalone/deployments/app.war/WEB-INF/undertow-scripts.conf 
hello.js

  • Crie o arquivo de Javascript em sí no diretório raiz da aplicação:
$ cat standalone/deployments/app.war/hello.js 
$undertow.onGet("/say-hello", function($exchange) {
return "Hello World!";
});

Como você pode ver acima, quando você envia uma requisição HTTP com o método GET pra a URL {host}/{app context}/say-hello O retorno deveria ser "Hello World!". Simplesmente temos que fornecer o contexto e a função que vai responder à request.
  • Faça o deploy da aplicação:
$ touch standalone/deployments/app.war.dodeploy

  • Verifique se foi corretamente "deployada" checando os logs :
$ tail  -n 3 standalone/log/server.log 
2015-11-15 21:47:09,649 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0027: Starting deployment of "app.war" (runtime-name: "app.war")
2015-11-15 21:47:11,600 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 63) WFLYUT0021: Registered web context: /app
2015-11-15 21:47:11,654 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0010: Deployed "app.war" (runtime-name : "app.war")

  • Por fim, teste a aplicação usando um navegador ou curl:
$ curl http://localhost:8080/app/say-hello
Hello World!

Bem, esse foi só o começo. Você pode agora usar serviços Java EE na sua app javascript como descrito no anúncio.

Eu acho que você ainda não noto que a melhor parte é que você não precisa mais recompilar sua aplicação, vou pode simplesmente editar o javascript e fazer um touch em   app.war.dodeploy e as modificações vão estar imediatemente disponíveis, claro, depois de um redeploy,Stuart Douglas informou que você pode configurar o hot deployment e nenhum rdeploy seria necessário. Essa configuração é também descrita on anúncio e eu simplesmente criei um arquivo undertow-external-mounts.conf com o diretório onde estão os javascripts:

$ echo /opt/jboss/WILDFLY/wildfly-10.0.0.CR4/standalone/deployments/app.war/  > standalone/deployments/app.war/WEB-INF/undertow-external-mounts.conf

Agora se eu editar qualquer arquivo javascript no diretório que apontei, eu vou ver as modificações assim que acessar aquele endpoint.

Se você não acredita que isso é fácil, eu fiz um vídeo para você!!


Nenhum comentário:

Postar um comentário