Java 从静态上下文访问ResourceContext实例
在Jersey JAX-RS中: 是否有方法从静态上下文访问ResourceContext实例?到目前为止,我两手空空,尝试了许多方法,但都没有达到我的预期。下面是我想要实现的一个示例片段:Java 从静态上下文访问ResourceContext实例,java,jersey,jax-rs,Java,Jersey,Jax Rs,在Jersey JAX-RS中: 是否有方法从静态上下文访问ResourceContext实例?到目前为止,我两手空空,尝试了许多方法,但都没有达到我的预期。下面是我想要实现的一个示例片段: import com.sun.jersey.api.core.*; import javax.annotation.PostConstruct; import javax.ws.rs.core.Context; @Singleton @Provider public static class MyCla
import com.sun.jersey.api.core.*;
import javax.annotation.PostConstruct;
import javax.ws.rs.core.Context;
@Singleton
@Provider
public static class MyClass
{
private static MyClass singleton;
@Context
private ResourceContext context;
@PostConstruct
private void constructor ()
{
MyClass.singleton = this;
}
public static <T> T acquireResource(Class<T> clazz)
{
return MyClass.singleton.context.getResource(clazz);
}
}
import com.sun.jersey.api.core.*;
导入javax.annotation.PostConstruct;
导入javax.ws.rs.core.Context;
@独生子女
@提供者
公共静态类MyClass
{
私有静态MyClass单例;
@上下文
私人资源语境;
@施工后
私有void构造函数()
{
MyClass.singleton=this;
}
公共静态T收单机构资源(类别clazz)
{
返回MyClass.singleton.context.getResource(clazz);
}
}
但不幸的是,这不能正常工作,因为我认为提供者是延迟加载的。我甚至不确定“@Singleton”注释是否有任何作用
我还尝试了扩展WebAppResourceConfig,它是应用程序的一个实例,但这破坏了我的应用程序,我不完全理解原因。在不知道为什么要这样做的情况下,不要做任何事情。请解释为什么需要在
静态
上下文中ResourceContext
。原因是因为我正在扩展第三方库招摇过市,自动记录基于JAX-RS的API。尽管Swagger是从JAX-RS资源调用的,但我必须扩展的代码是根深蒂固的,是使用“new”实例化的,不支持依赖项注入,并且我没有在该上下文中引用任何JAX-RS资源类对象。我正在编写的扩展该接口的代码将获得对某个MessageBodyWriter单例的引用及其调用方法。最终目的是使用请求实体的MessageBodyWriter的MessageBodyReader的MessageBodyWriter逆动态生成API调用的示例请求实体。