【发布时间】:2015-06-08 13:25:36
【问题描述】:
资源类
public class UploadFileService {
@Inject public Logger logger;
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
}
}
注入 :: Logger 类
@Dependent
public final class Loggers {
@Produces
public static final Logger getLogger(final InjectionPoint injectionPoint) {
if (injectionPoint == null) {
throw new IllegalArgumentException("injectionPoint", new NullPointerException("injectionPoint"));
}
}
注入在包含 beans.xml 时完美工作
*.war\WEB-INF\classes\META-INF\beans.xml
但是在 jersey 2.0 中不是 beans.xml 可选吗?
没有beans.xml报错
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=Logger,parent=UploadFileService,
qualifiers={},position=-1,optional=false,self=false,unqualified=null,1642832267)
at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:74)
at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:947)
at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:902)
at org.glassfish.jersey.gf.cdi.internal.CdiComponentProvider$CdiFactory$2.getInstance(CdiComponentProvider.java:245)
at org.glassfish.jersey.gf.cdi.internal.CdiComponentProvider$CdiFactory.provide(CdiComponentProvider.java:189)
任何澄清是有帮助的?
【问题讨论】:
-
public final class Loggers上的那个额外的 's' 只是一个错字,我希望?顺便说一句,these answers 中的任何一个有帮助吗?单例 bean 是一种代码味道...... -
没有。我担心的是......为什么在这种特殊情况下需要一个空 beans.xml 文件,而它在 jersey 2.0 中是可选的?
-
内容是可选的,但带有基本
<beans>的文件是必需的。不要问为什么;当我上次使用 Jersey 和 CDI 时,需要 很多 诡计才能让它工作......
标签: java cdi jersey-2.0