2013-04-06 51 views
1

我想以这样的方式该值每一次会有所不同,以创建一个CDI制片JEE6制作人NewCookie

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,但是我的记忆很差!

for ex。我的一个简单的记录器生产商是

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

任何帮助表示赞赏

+0

你想传递给制作者多少cookie值? – LightGuard 2013-04-08 16:08:27

回答

1

如果你能够计算生产方法中一个独特的价值没有任何额外的参数,那么所有你需要做的就是标注有方法返回值NewCookie

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

如果你需要创建它受到一些外部参数,那么这个生产方法可以像任何其他方法的参数 - 但是,所有的这些都是注射点,必须obtai由容器命名。

@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以获取更多信息。