Tar*_*log 8 java rest jax-rs jersey jsr311
我有一个自定义上下文:
public class MyContext {
public String doSomething() {...}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个上下文解析器:
@Provider
public class MyContextResolver implements ContextResolver<MyContext> {
public MyContext getContext(Class<?> type) {
return new MyContext();
}
}
Run Code Online (Sandbox Code Playgroud)
现在在资源中我尝试注入它:
@Path("/")
public class MyResource {
@Context MyContext context;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
SEVERE: Missing dependency for field: com.something.MyContext com.something.MyResource.context
Run Code Online (Sandbox Code Playgroud)
相同的代码在Apache Wink 1.1.3中运行良好,但在Jersey 1.10中失败.
任何想法将不胜感激.
小智 10
JAX-RS规范并未强制要求Apache Wink提供的行为.IOW,您尝试使用的功能适用于Apache Wink,使您的代码不可移植.
要生成100%JAX-RS可移植代码,您需要注入javax.ws.rs.ext.Providers实例,然后使用:
ContextResolver<MyContext> r = Providers.getContextResolver(MyContext.class, null);
MyContext ctx = r.getContext(MyContext.class);
Run Code Online (Sandbox Code Playgroud)
检索MyContext实例.
在Jersey中,您还可以直接注入ContextResolver,它可以为您节省一行代码,但请注意,此策略也不是100%可移植的.
| 归档时间: |
|
| 查看次数: |
3449 次 |
| 最近记录: |