嵌入式码头上的Jersey,hk2定位器未加载ResourceConfig

嵌入式码头上的Jersey,hk2定位器未加载ResourceConfig,jersey,jetty,embedded-jetty,hk2,Jersey,Jetty,Embedded Jetty,Hk2,我使用Jetty作为Jersey的嵌入式服务器 ServletHolder-jerseyServletHolder=新的ServletHolder(ServletContainer.class); Jersey ServletHolder.setInitOrder(1); jerseyServletHolder.setInitParameter( org.glassfish.jersey.server.ServerProperties.PROVIDER\u包, “com.my.package”)

我使用Jetty作为Jersey的嵌入式服务器

ServletHolder-jerseyServletHolder=新的ServletHolder(ServletContainer.class);
Jersey ServletHolder.setInitOrder(1);
jerseyServletHolder.setInitParameter(
org.glassfish.jersey.server.ServerProperties.PROVIDER\u包,
“com.my.package”);
addServlet(jerseyServletHolder,“/rest/*”);
我有一个ResourceConfig实现:

@ApplicationPath(“/rest”)
公共类MyResourceConfig扩展了ResourceConfig{
静止的{
System.out.println(“资源配置加载”);
//这永远不会接到电话
}
@注入
公共MyResourceConfig(ServiceLocator ServiceLocator、Properties serverProps){
软件包(“com.my.package”);
}
}
问题是,当我启动时,MyResourceConfig类从未加载

如果我加上:

jerseyServletHolder.setInitParameter(
ServletProperties.JAXRS_应用程序_类,
MyResourceConfig.class.getName());
然后ResourceConfig确实会被加载


为什么MyResourceConfig不能基于@ApplicationPath注释获取?

您只需要启用注释/字节码扫描

首先将(和可传递的依赖项)放入项目中

然后,在代码中,在创建
org.eclipse.jetty.server.server
对象之后,执行此操作

Server服务器=新服务器(8080);
//启用对web.xml和jetty-env.xml的jndi相关部分的解析
Configuration.ClassList=Configuration.ClassList
.setServerDefault(服务器);
classlist.addAfter(“org.eclipse.jetty.webapp.FragmentConfiguration”,
“org.eclipse.jetty.plus.webapp.EnvConfiguration”,
“org.eclipse.jetty.plus.webapp.PlusConfiguration”);
//启用注释/字节码扫描和ServletContainerInitializer用法
classlist.addBefore(
“org.eclipse.jetty.webapp.JettyWebXmlConfiguration”,
“org.eclipse.jetty.annotations.AnnotationConfiguration”);
WebAppContext WebAppContext=createWebAppContext();
// ....
server.start();

这将启用执行字节码扫描和注释扫描所需的配置,以及加载Web应用程序中找到的任何
javax.servlet.ServletContainerInitializer
的能力,包括Jersey()的关键配置。

注释扫描是
jetty annotations
的一项功能,您的嵌入式jetty中是否有该设置?另外,
@ApplicationPath
不是jetty将自动扫描的路径,除非在
ServletContainerInitializer
@handleType
中指定了该路径。泽西岛有这样的SCI吗?@JoakimErdfelt