After seeing the announcements samples, I thought I had to try it and surprisingly it took less than a few minutes to have my first script running. Here are the steps I had to follow:
(I am considering you already have Java 8 installed)
- * Download Widlfly 10: I downloaded Widlfly 10.0.0.CR4 Application Server Distribution. See more in widlfly downloads page;
- Unzip it somewhere locally:
- Start it "quietly":
& ./bin/standalone.sh > /dev/null &
- Create the application structure in the deployments directory
$ mkdir -p standalone/deployments/app.war/WEB-INF
- Create the only descriptor needed in your application and declare the Javascript file on it (hello.js):
$ cat standalone/deployments/app.war/WEB-INF/undertow-scripts.conf
hello.js
- Create the javascript file itself in the application root directory:
$ cat standalone/deployments/app.war/hello.js
$undertow.onGet("/say-hello", function($exchange) {
return "Hello World!";
});
As you can see above, when you send a HTTP request using the GET method to the URL {host}/{app context}/say-hello it should return "Hello World!". We just have to provide the context and the function that will handle the requests.
- Deploy the application itself:
$ touch standalone/deployments/app.war.dodeploy
- Check if it was correctly deployed by checking the 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")
- Finally test the application using a web browser or curl:
$ curl http://localhost:8080/app/say-hello
Hello World!
Well, that's just the beginning. You can now using Java EE services in your javascript annotation as it is described in the release announcement.
I guess you still did not notice the best part: you don't need to recompile your application anymore, you can simply edit the javascript and touch the app.war.dodeploy file and the changes will be immediately available (after, of course, a redeploy). Stuart Douglas pointed that you can configure hot deployment and no redeploy is needed. The hot deployment configuration is described in the announcement as well and to configure it I simply created the file undertow-external-mounts.conf with the directory where my javascripts are located:
$ echo /opt/jboss/WILDFLY/wildfly-10.0.0.CR4/standalone/deployments/app.war/ > standalone/deployments/app.war/WEB-INF/undertow-external-mounts.conf
Now if I edit any javascript file in the pointed directory I will see the changes immediately once I reach the endpoint.
$ echo /opt/jboss/WILDFLY/wildfly-10.0.0.CR4/standalone/deployments/app.war/ > standalone/deployments/app.war/WEB-INF/undertow-external-mounts.conf
Now if I edit any javascript file in the pointed directory I will see the changes immediately once I reach the endpoint.
If you still do not believe it is really simple, I have created a video for you!
Nenhum comentário:
Postar um comentário