重现的步骤:
创建注记类(例如:Test.class):
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
}
创建一个简单的java项目。 (例如:Project2)
创建简单类(例如:TestModel)并将@Test注释应用于它:
@Test
public class TestModel {
...
}
创建耳朵项目。 (例如:Project3)
在Project3中创建ejb-module。 (例如:Project3-ejb)
在Project3-ejb中创建无状态计时器:
@Stateless
@LocalBean
public class Timer {
@Schedule(minute = "*", second = "*", hour = "*")
public void myTimer() {
try {
System.out.println(TestModel.class.getAnnotations().length);
} catch (SecurityException ex) {
logger.log(Level.SEVERE, null, ex);
}
}
}
在服务器输出中,您会看到0.为什么?
答案 0 :(得分:0)
我发现此问题仅适用于glassfish服务器。如果我将Project3部署到Jboss服务器,我将在服务器输出中看到1。好像,这是玻璃鱼虫。我创建了票证:https://java.net/jira/browse/GLASSFISH-20990 另外,如果在步骤4中将Project1添加为jar依赖项,则在服务器输出中看到1。