Tutoriel Vert.x 3 : créer, lancer et tester un Verticle
Bonjour,
Je vous propose un article d'introduction à Vert.x 3 : Tutoriel Vert.x 3 : créer, lancer et tester un Verticle
Synopsis : Vert.x est une API asynchrone très proche du modèle d'acteurs. Vert.x est polyglotte, simple, scalable (élastique) et hautement concurrente. Vert.x est bien adapté aux architectures en micro-services, mais s'intègre aussi parfaitement dans une WebApp plus classique. Dans ce premier article d'une série consacrée à Vert.x 3, nous allons tout d'abord voir comment installer le framework, écrire un premier verticle, le déployer et le tester.
Lien : http://thierry-leriche-dessirier.dev...ster-verticle/
N'hésitez pas à commenter sur le forum.
Bonne lecture.
Th.
HandleBars comme TemplateEngine
Salut,
sympa cette initiation à Vert.X, en revenche , je tente d'utiliser HandleBars comme TemplateEngine mais çà coince...
Dans la méthode start() de mon AbstractVerticle, j'ai ajouté
Code:
1 2 3 4 5 6
| final TemplateEngine engine = HandlebarsTemplateEngine.create();
TemplateHandler handler = TemplateHandler.create(engine);
router.get("/dynamic/*").handler(handler);
router.getWithRegex(".+\\.hbs").handler(handler); |
quand je tente d'atteindre l'url http://localhost:8080/dynamic
je me retrouve avec une erreur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| io.vertx.ext.web.impl.RoutingContextImplBase
GRAVE: Unexpected exception in route
io.vertx.core.VertxException: java.lang.NullPointerException
at io.vertx.ext.web.impl.Utils.readFileToString(Utils.java:156)
at io.vertx.ext.web.templ.impl.HandlebarsTemplateEngineImpl$Loader.sourceAt(HandlebarsTemplateEngineImpl.java:91)
at com.github.jknack.handlebars.Handlebars.compile(Handlebars.java:411)
at com.github.jknack.handlebars.Handlebars.compile(Handlebars.java:397)
at io.vertx.ext.web.templ.impl.HandlebarsTemplateEngineImpl.render(HandlebarsTemplateEngineImpl.java:64)
at io.vertx.ext.web.handler.impl.TemplateHandlerImpl.handle(TemplateHandlerImpl.java:61)
at io.vertx.ext.web.handler.impl.TemplateHandlerImpl.handle(TemplateHandlerImpl.java:45)
at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:218)
at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:67)
at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:96)
at io.vertx.ext.web.impl.RouterImpl.accept(RouterImpl.java:61)
at io.vertx.core.http.impl.ServerConnection.handleRequest(ServerConnection.java:276)
at io.vertx.core.http.impl.ServerConnection.processMessage(ServerConnection.java:391)
at io.vertx.core.http.impl.ServerConnection.handleMessage(ServerConnection.java:137)
at io.vertx.core.http.impl.HttpServerImpl$ServerHandler.doMessageReceived(HttpServerImpl.java:476)
at io.vertx.core.http.impl.HttpServerImpl$ServerHandler.doMessageReceived(HttpServerImpl.java:425)
at io.vertx.core.http.impl.VertxHttpHandler.lambda$channelRead$17(VertxHttpHandler.java:80)
at io.vertx.core.impl.ContextImpl.lambda$wrapTask$15(ContextImpl.java:312)
at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:217)
at io.vertx.core.http.impl.VertxHttpHandler.channelRead(VertxHttpHandler.java:80)
at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:124)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:244)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at io.vertx.ext.web.impl.Utils.readFileToString(Utils.java:153)
... 33 more |
Je pense qu'il ne trouve pas mon fichier index.hbs, j'ai fait plusieurs tentatives mais le résultat n'est pas probant.
Je trouve peu d'infos sur le sujet, si quelqu'un connait la solution je suis preneur ^^