getAnnotations()在ejb jar中为空

时间:2014-02-18 17:45:52

标签: java maven annotations ejb-3.1

重现的步骤:

  1. 创建ejb项目。 (例如:Project1)
  2. 创建注记类(例如:Test.class):

    @Retention(RetentionPolicy.RUNTIME)
    public @interface Test {
    
    }
    
  3. 创建一个简单的java项目。 (例如:Project2)

  4. 将Project1作为ejb依赖项添加到Project2。
  5. 创建简单类(例如:TestModel)并将@Test注释应用于它:

    @Test
    public class TestModel {
        ...
    }
    
  6. 创建耳朵项目。 (例如:Project3)

  7. 在Project3中创建ejb-module。 (例如:Project3-ejb)

  8. 将Project2作为jar依赖项添加到Project3-ejb。
  9. 在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);
            }
        }
    }
    
  10. 清理,构建Project3并将其部署到glassfish 3或4。
  11. 在服务器输出中,您会看到0.为什么?

1 个答案:

答案 0 :(得分:0)

我发现此问题仅适用于glassfish服务器。如果我将Project3部署到Jboss服务器,我将在服务器输出中看到1。好像,这是玻璃鱼虫。我创建了票证:https://java.net/jira/browse/GLASSFISH-20990 另外,如果在步骤4中将Project1添加为jar依赖项,则在服务器输出中看到1。