如何从嵌入式 Jetty 10 迁移到 jetty 12 ee8?

问题描述 投票:0回答:2

我尝试从 Jetty 10.x 移植到 Jetty 12.x ee8。在我根据此列表更改依赖项后https://download.eclipse.org/tools/orbit/simrel/maven-jetty/release/12.0.6/。我在使用嵌入式 Jetty 时遇到一些编译器错误。

似乎没有我使用的 ee8

Server
org.eclipse.jetty.server.Server
。该类扩展自
org.eclipse.jetty.server.Handler.Wrapper

但是

jetty-ee8-nested
的处理程序从
org.eclipse.jetty.ee8.nested.HandlerWrapper
扩展,这是不兼容的。例如
org.eclipse.jetty.ee8.nested.InetAccessHandler
。一个期待
org.eclipse.jetty.server.Handler
另一个
org.eclipse.jetty.ee8.nested.Handler

还有我监督的服务器的另一个实施者吗?我在哪里可以找到它?类名怎么样?

或者我必须修改我的代码吗?例如,我如何更改以下行?

InetAccessHandler ipaccess = new InetAccessHandler();
ipaccess.setHandler( getHandler() );
setHandler( ipaccess );
java jetty embedded-jetty jakarta-migration
2个回答
2
投票

首先,有一个从 Jetty 11 到 Jetty 12 的移植指南: https://eclipse.dev/jetty/documentation/jetty-12/programming-guide/index.html#pg-migration-11-to-12

它显示了您所询问的许多事情。

忽略

org.eclipse.jetty.ee8.nested.*
包中的类,这些是ee8层的内部类。

使用

org.eclipse.jetty.server.handler.InetAccessHandler

您可以将其包装在任何处理程序周围,例如:

org.eclipse.jetty.server.Handler.Sequence
org.eclipse.jetty.ee8.webappWebAppContext
等...

InetAccessHandler inetAccessHandler = new InetAccessHandler();
// allow only http clients from localhost IPv4 or IPv6
inetAccessHandler.include("127.0.0.1", "::1");
server.setHandler(inetAccessHandler);

Handler.Sequence handlers = new Handler.Sequence();
inetAccessHandler.setHandler(handlers);

WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar(warPath.toUri().toASCIIString());

handlers.addHandler(webapp);

此片段来自 https://github.com/jetty/jetty-examples/tree/12.0.x/embedded/ee8-webapp-context


0
投票

解决方案是混合。对于与

Server
实例交互的所有内容(例如
InetAccessHandler
),我需要使用 jetty-server.jar 中的实例(包中没有 ee8)。

ServletContextHandler
来自jetty-ee9-servlet.jar。

添加到 ServletContextHandler 的所有处理程序(例如 ErrorHandler)必须来自 jetty-ee8-nested.jar。

如果您在同一个类中执行所有这些操作,那么您会遇到不同处理程序方法

Request
org.eclipse.jetty.server.Request
的签名中的
org.eclipse.jetty.ee8.nested.Request
的不同类的问题。我已导入第一个类,第二个类在方法签名中写入完全限定。

© www.soinside.com 2019 - 2024. All rights reserved.