我正在实现一个应用程序范围的服务(进一步注入(inject)到JAX-RS/JAX-WS服务或servlet中,这无关紧要),它会通过ManagedExecutorService或ManagedThreadFactory产生一些处理。在处理代码(一个Runnable实例)中,我想使用注入(inject)的资源,如EntityManager、DataSource和Web服务引用。第一个解决方案是这样的:@ApplicationScopedclassMyService{@ResourceprivateManagedExecutorServicemes;publicvoidrequest(S
我想用mockito测试一些服务。这些服务基于CDI,不幸的是,使用了我无法更改的字段注入(inject)。publicclassService{@InjectLoggerlogger;publicvoidmethod(){logger.info("somelogtext");}}现在使用mockito的@InjectMocks注释创建可测试实例非常容易。它将注入(inject)模拟和spy。@RunWith(MockitoJUnitRunner.class)publicclassServiceTest{@SpyLoggerlogger=LoggerFactory.getLogger(
有没有什么方法可以像@ManagedBean(eager=true)来自javax.faces包?@Named@ApplicationScopedpublicMail(){...}我想在应用程序启动时加载这个类,而不是在webapplication引用这个bean时。附言。JSF2.1Glassfish3.1注入(inject)的Bean 最佳答案 您可以创建一个CDI扩展,该扩展在他的方法之一上具有@ObservesAfterBeanDiscovery参数。您可以在那里实例化bean,从而在容器启动时对其进行初始化。CODI让这些
我有一个简单的(webprofile)EJB3.1应用程序并尝试确定@ApplicationScopedCDIBean中的当前用户,所以我使用:PrincipalcallerPrincipal=this.sessionContext.getCallerPrincipal()工作正常(因此我可以确定当前用户的名称)。但是在任何(其他)EJB出现任何异常之后,此调用将不再起作用(我需要重新启动服务器)!该方法没有返回调用方主体,而是抛出此异常。Causedby:java.lang.NullPointerExceptionatcom.sun.ejb.containers.EJBContext
我在JavaSE应用程序(没有任何应用程序服务器)中有一个Service,它创建Algorithm实例并运行它们。每个Algorithm实例都需要一个新的(单独的)ActionExecutor和一个新的(单独的)AlgorithmState。ActionExecutor还需要一个AlgorithmState实例,该实例必须与Algorithm获取的相同。如何使用CDI实现这一目标?我已经在Algorithm的两个参数上尝试了构造函数注入(inject)和@New,但我想这不是我想要的。服务类:importjava.util.ArrayList;importjava.util.List;
当我对来自JavaEE7SDK示例“async-chat”的其余资源“queue”执行OPTIONS调用时,当Jersey的日志级别设置为FINE(org.glassfish.jersey.level=很好)。同样的异常发生在我的代码中,如下所示。两个应用程序都可以正常运行。这些异常是否无关紧要(只是在日志记录级别为FINE时抛出)?如果不是,为什么会被抛出?我测试了多个GlassFish4安装以及GlassFish4.0.1。他们都表现出相同的行为。异常(exception)情况:Manyofthoseentries:FINE:Couldn'tfindJAX-Belementforc
Welddocumentation声明javax.enterprise.inject.Model注释是为Controller设计的(合乎逻辑,因为它将bean标记为@RequestScoped和@Named)。但是为什么命名为模型而不是Controller呢? 最佳答案 因为规范并不假设您使用的模式首先涉及到Controller。还有其他模式和命名约定。例如,seam使用“Action”而不是“Controller”(尽管这些概念并不完全对应) 关于java-@Model注解和MVC,我
我想在Java-SE应用程序中使用拦截器,我正在使用weld作为CDI实现,我正在这里测试它:主类:publicstaticvoidmain(String[]args){WeldContainerweldContainer=newWeld().initialize();Serviceservice=weldContainer.instance().select(Service.class).get();service.methodCall();service.methodCallNumberTwo();}服务类:publicclassService{@TestAnnotationpub
我可以像这样将自己的POJO注入(inject)到托管对象中:importjavax.ejb.Stateless;importjavax.inject.Inject;@StatelesspublicclassSomeEjb{@InjectprivateSomePojosomePojo;}我有这个POJO://NoannotationspublicclassSomePojo{}这很好用。如果我将EJB注入(inject)JSFbacking-bean,我可以看到somePojo的值是非空值,正如预期的那样。但是,如果我尝试将java.util.Date注入(inject)到SomeEjb
资源类publicclassUploadFileService{@InjectpublicLoggerlogger;@POST@Path("/upload")@Consumes(MediaType.MULTIPART_FORM_DATA)publicResponseuploadFile(@FormDataParam("file")InputStreamuploadedInputStream,@FormDataParam("file")FormDataContentDispositionfileDetail){}}注入(inject)::记录器类@Dependentpublicfinal