2012-02-24 50 views
1

新泽西,如果我们提供(在一个单独的jar)外战的EJB资源文件(或POJO资源文件)和打包的耳朵里面的战争和罐子,泽西岛是不是能找到他们。当放置在战争的classes文件夹中时,相同的EJB(或POJO)资源文件很容易被发现。由于将EJB封装在单独的jar中并将战争和jar放在耳边是一种常见的做法,为什么Jersey不提供对它的支持? Here是一些代码。为什么REST Web服务在战争之外不支持EJB资源类?

RESTEasty也从同一个问题的困扰时,我们指定的应用程序文件中的EJB或POJO资源类(或当我们使用它的自动扫描功能),但提供了一个非标准方式,使用在web.xml文件中列出所有EJB类的resteasy.jndi.resources,但仍然没有办法在战争之外提供POJO资源类?

回答

0

我不认为这是一个泽西岛问题每说,更多的是一个Java EE Classloader设计问题... 我不确定你是什么意思的POJO资源,但我分享POJO类跨子项目的方式是通过创建一个单独的JAR项目,我捆绑在我的EAR的lib /目录中。这样,我所有的WAR和EJB都可以看到它们。

+0

在EAR的lib中绑定POJO是一种很好的做法,但即使我们在战争之外放置一个简单的POJO放在另一个jar中,我们也能够在没有任何额外配置的情况下从战争中访问它。但是在Jersey的情况下,如果我们列出一个类作为资源类(即带有@Resource注解的类)并将其放置在战争之外的另一个jar中,则不会找到它。 – Daud 2012-02-27 10:36:47

+0

EJB JAR是一种特殊类型的归档。我认为Jersey \ @Resources需要成为战略管理的一部分。如果一个\ @Resource类放在EAR的通用JAR中,我不认为泽西将扫描父类加载器来注释类来进行工具和管理。 – TheArchitect 2012-02-27 17:12:01

+0

但即使如此,泽西州甚至无法访问存在于战争之外的jar中的EJB,这一事实令人感到不安,因为它采用了这种通用的打包方案。为什么我们必须在战争中包装我们的EJB类?在EE6之前,EJB需要处于战争之外。 – Daud 2012-02-28 10:47:04