我有一个类在我的休息服务中作为类生成器执行,这样做:
public class WebResources{
@Produces
@RequestScoped
public FacesContext produceFacesContext() {
return FacesContext.getCurrentInstance();
}
@Produces
public Logger produceLog(InjectionPoint injectionPoint) {
return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName());
}
}
现在我希望通过使用HttpServletRequest或HttpSession作为参数来生成我的对象。像这样:
@Produces
@RequestScoped
public MyObject getSecurityContext(InjectionPoint injectionPoint)
{
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
return Utils.getMyObject(request);
}
我在部署阶段收到的错误如下:
错误[org.jboss.as.cli.CommandContext] {“JBAS014671:失败的服务”=> {“jboss.deployment.unit。\”zuora.ear \“。WeldStartService”=> “服务jboss.deployment.unit。”中的org.jboss.msc.service.StartException。\“zuora.ear \”。WeldStartService:无法启动服务 引起:org.jboss.weld.exceptions.DefinitionException:WELD-001406无法注入[方法]的@ [参数1] @Produces @RequestScoped public it.infocert.zuora.rest.util.WebResources.getSecurityContext(InjectionPoint)in non @Dependent scoped bean“}} {“JBAS014671:失败的服务”=> {“jboss.deployment.unit。\”zuora.ear \“。WeldStartService”=> “服务jboss.deployment.unit。”中的org.jboss.msc.service.StartException。\“zuora.ear \”。WeldStartService:无法启动服务 引起:org.jboss.weld.exceptions.DefinitionException:WELD-001406无法注入[方法]的@ [参数1] @Produces @RequestScoped public it.info
答案 0 :(得分:1)
您应该从方法签名中删除InjectionPoint
参数。如果要生成请求范围的bean,则不能是InjectionPoint
,因为多个注入点将获得相同的(请求范围的)实例。您没有在代码中使用注入点,因此可以安全地删除它。