JEE6 NewCookie制作人

时间:2013-04-06 21:30:24

标签: jboss7.x java-ee-6 cdi

我想为

创建一个CDI制作人
javax.ws.rs.core.NewCookie(java.lang.String name,
             java.lang.String value,
             java.lang.String path,
             java.lang.String domain,
             java.lang.String comment,
             int maxAge,
             boolean secure)

以这种方式每次都会有不同的值。我刚才做了一些JEE6,但我的记忆很差!

代表。我的生产者是一个简单的记录器

@Produces
public Logger produceLogger(final InjectionPoint injectionPoint) {  
    final String injectingClass = injectionPoint.getMember().getDeclaringClass().getName();
    logger.info("creating logger for : " + injectingClass);
    return Logger.getLogger(injectingClass);  
}  

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

如果您能够在没有任何其他参数的情况下计算生产者方法中的唯一值,那么您所要做的就是使用返回值NewCookie注释方法:

@Produces NewCookie createCookie() {
  // create cookie and its value  
}

如果你需要根据一些外部参数创建它,那么这个生成器方法可以有任何其他方法的参数 - 但是,所有这些都是注入点,必须由容器获得。

@Produces NewCookie createCookie(String value) {
  // create cookie with parameter value  
}

现在,基本类型(以及字符串)存在问题,您肯定会有其他具有不同含义的相同类型的实例,因此您要么使用像MyValue这样的特殊类来包装您的字符串并将其用作注入点或使用自定义注释对其进行注释。

@Produces NewCookie createCookie(@CookieValue String value) {
  // create cookie with parameter value  
}

然后当然,你需要再次产生这个注入值的地方。

@Produces @CookieValue String createCookieValue() {
    // create value
}

查看JavaEE 6 TutorialCDI Spec了解详情。