4.12. Eclipse Vert.x web 的更改
以下部分介绍了 Eclipse Vert.x web 中的更改。
4.12.1. 将用户会话处理程序的功能组合到会话处理程序中
在较早版本的 Eclipse Vert.x 中,您必须在会话中指定 User
和 SessionHandler 处理程序处理程序。
SessionHandler
为了简化这个过程,在 Eclipse Vert.x 4 中,UserSessionHandler
类已被删除,并在 SessionHandler
类中添加了其功能。在 Eclipse Vert.x 4 中,若要用于会话,您必须只指定一个处理程序。
4.12.2. 删除了 Cookie 接口
删除了以下 Cookie 接口:
-
io.vertx.ext.web.Cookie
-
io.vertx.ext.web.handler.CookieHandler
使用 io.vertx.core.http.Cookie
接口。
4.12.3. Favicon 和 error 处理程序使用 Vertx
文件系统
FaviconHandler
和 ErrorHandler
中的 create 方法已更新。您必须在创建方法中传递 Vertx
实例对象。这些方法访问文件系统。传递 Vertx
对象可确保使用"Vertx"文件系统对文件进行一致的访问。
以下示例演示了如何在 Eclipse Vert.x 3.x 版本中使用创建方法。
FaviconHandler.create(); ErrorHandler.create();
以下示例演示了如何在 Eclipse Vert.x 4 中使用创建方法。
FaviconHandler.create(vertx); ErrorHandler.create(vertx);
4.12.4. 访问模板引擎
使用 TemplateEngine.unwrap ()
方法访问模板引擎。然后,您可以将自定义和配置应用到模板。
用于获取和设置引擎配置的方法已弃用。改为使用 TemplateEngine.unwrap ()
方法。
-
HandlebarsTemplateEngine.getHandlebars()
-
HandlebarsTemplateEngine.getResolvers()
-
HandlebarsTemplateEngine.setResolvers()
-
JadeTemplateEngine.getJadeConfiguration()
-
ThymeleafTemplateEngine.getThymeleafTemplateEngine()
-
ThymeleafTemplateEngine.setMode()
4.12.5. 删除了区域设置接口
io.vertx.ext.web.Locale
接口已被删除。使用 io.vertx.ext.web.LanguageHeader
接口。
4.12.6. 删除了可接受的区域设置方法
已删除 RoutingContext.acceptableLocales ()
方法。使用 RoutingContext.acceptableLanguages ()
方法。
4.12.7. 更新了挂载子路由器的方法
在较早版本的 Eclipse Vert.x 中,Router.mountSubRouter ()
方法错误地返回 路由器
。这个问题已被解决,方法现在会返回一个 Route
。
4.12.8. 删除了带有排除 JWT 身份验证处理的字符串的 create 方法
JWTAuthHandler.create (JWTAuth authProvider, String skip)
方法已被删除。使用 JWTAuthHandler.create (JWTAuth authProvider)
方法。
以下示例演示了如何在 Eclipse Vert.x 3.x 版本中创建 JWT 身份验证处理程序。
router // protect everything but "/excluded/path" .route().handler(JWTAuthHandler(jwtAuth, "/excluded/path")
以下示例演示了如何在 Eclipse Vert.x 4 中创建 JWT 身份验证处理程序。
router .route("/excluded/path").handler(/* public access to "/excluded/path" */) // protect everything .route().handler(JWTAuthHandler(jwtAuth)
4.12.9. 删除了在 OSGi 环境中使用的创建处理器方法
在 Eclipse Vert.x 4 中,GGi 环境不再被支持。StaticHandler.create (String, ClassLoader)
方法已被删除,因为此方法已在 OSGi 环境中使用。
如果您在应用程序中使用了此方法,那么在 Eclipse Vert.x 4 中,您可以将资源添加到应用程序类路径或提供文件系统中的资源。
4.12.10. 删除网桥选项类
sockjs.BridgeOptions
类已被删除。改为使用新的 sockjs.SockJSBridgeOptions
类。sockjs.SockJSBridgeOptions
类包含配置事件总线网桥所需的所有选项。
新类的行为没有改变,但数据对象类的名称已改变。
在以前的版本中,当您使用 sockjs.BridgeOptions
类来添加新网桥时,会出现许多重复的配置。新类包含所有可能的通用配置,并删除重复的配置。
4.12.11. SockJS 套接字事件总线默认不注册集群事件
默认情况下,Sock JSSocket
不再注册集群事件总线使用者。如果要使用事件总线写入套接字,您必须在 SockJSHandlerOptions
中启用 writeHandler
。当您启用 writeHandler
时,事件总线使用者默认设为 local。
Router router = Router.router(vertx); SockJSHandlerOptions options = new SockJSHandlerOptions() .setRegisterWriteHandler(true); // enable the event bus consumer registration SockJSHandler sockJSHandler = SockJSHandler.create(vertx, options); router.mountSubRouter("/myapp", sockJSHandler.socketHandler(sockJSSocket -> { // Retrieve the writeHandlerID and store it (For example, in a local map) String writeHandlerID = sockJSSocket.writeHandlerID(); }));
您可以将事件总线消费者配置为集群。
SockJSHandlerOptions options = new SockJSHandlerOptions() .setRegisterWriteHandler(true) // enable the event bus consumer registration .setLocalWriteHandler(false) // register a clustered event bus consumer
4.12.12. 添加身份验证提供程序的新方法
SessionHandler.setAuthProvider (AuthProvider)
方法已弃用。改为使用 SessionHandler.addAuthProvider ()
方法。新的方法允许应用使用多个身份验证提供程序,并将会话对象链接到这些身份验证提供程序。
4.12.13. OAuth2 验证供应商创建方法需要 vertx
作为 constructor 参数
从 Eclipse Vert.x 4,OAuth2Auth.create (Vertx vertx)
方法需要 vertx
作为 constructor 参数。vertx
参数使用安全非阻塞随机数生成器来生成非保障,以确保应用程序的安全性。