根本不影响它。类是类,对象是对象。他们没有管理,他们不受干扰,他们没有任何反应。他们不是特别的。
静态单例是静态单例,Java是java。
所有你需要知道的是你的容器的classloader布局,以及它如何与你部署的应用程序和资源相关联。 (例如,一个应用程序中的类无法在其他应用程序中看到类)。大多数情况下,这并不重要。有时候,事情变得更加复杂。
但大多数情况下,它只是Java。
附录:
一种更好的方式来看待这个是简单地组你的类起来局部性的块。
让我们来看一个简单的使用EJB的Web应用程序。
Web应用程序部署在WAR工件中,EJB可以单独部署,作为容器中的单个EJB部署,或者更可能在EAR中部署。将应用程序打包到EAR中时,您可能也会将WAR捆绑到EAR中。因此,最终EAR包含您的WAR和您的EJB。
现在在开发过程中,在这种情况下,您将有三类中的一类。
仅与EJB相关的类(例如会话Bean)。
仅与WAR相关的类(例如Servlet类)。
与两者(也许是数据库实体)相关的类。
因此,一个简单的打包方法是在三个jar文件中。 WAR的jar文件(实际上,这是WAR,包含WEB-INF/classes中的类),EJB文件的jar文件以及第三种类型的jar文件,我们称之为库。
就构建依赖性而言,WAR构建依赖于lib,而EJB构建依赖于lib。但是WAR和EJB都不依赖于对方,因为它们不直接共享任何内容,只是间接通过第三个库jar分享。 lib jar是独立的,因为它不依赖于WAR或EJB。请注意,您的EJB会话Bean接口类将进入库jar(因为两个层都依赖它们)。
在您的耳边,您只需将lib jar,WAR和EJB jar以及META-INF目录和application.xml文件捆绑在一起。 WAR有它自己的结构,使用WEB-INF和所有EJB jar都有它的META-INF和ejb-jar.xml。但值得注意的是,lib.jar不在WEB-INF/lib目录中,它位于EAR包中,因此由EJB和WAR使用容器负责的类加载器欺骗来共享。
这一点很重要。例如,如果你的lib jar中有一个简单的静态Singleton,那么WAR和EJB将共享这个Singleton,因为它们都是同一个类加载器的一部分。要使用这个Singleton,这只是普通的Java。没有什么特别的。
如果EJB和WAR单独部署,他们将需要有自己的lib.jar副本,并且在Singleton的情况下,他们不会共享它,因为每个模块都有自己的类加载器。
因此,除了一些真正的燃烧需要,否则将所有内容绑定到EAR并将EJB层和WAR层同时视为单个集成应用程序更为容易。
附录2:
的人就不多谈Java EE开发利用类,因为没有什么可谈的,他们只是使用它们,就像在任何Java程序。你在这里想这个。这3个jar成语:war,ejb,lib是我多年来使用的一个,因为它分离了3个关注点,并限制了依赖关系。客户端 - > lib - > EJB。它还简化了构建,因为客户端通常只需要lib jar和java。在Netbeans IDE中,这是微不足道的管理。通过小的工作,在其他IDE或甚至ant/maven中都很简单。这不是一个巨大的负担,但保持三个部分相对干净。
依赖和Jar管理是任何大型Java项目的噩梦,对于EJB来说,当您处理不同的可部署工件时更是如此。在我的书中,任何可以帮助缓解这种情况都是一种胜利,事实是,一个干净独立的lib jar有很多帮助,特别是需要将该lib与其他代码集成和使用。例如,如果稍后使用远程EJB或甚至Web服务编写外部GUI客户端,则lib jar是客户端唯一的依赖项。这个罐子的好处远远超过建立这种类型库的轻微痛苦。
最后,lib jar就像您希望在应用程序中使用的任何其他jar一样(比如日志记录或任何其他流行的第三方jar)。
您将需要提供更多详细信息。你的问题非常模糊和混乱。 – jtahlborn
这是模糊的问题,因为我期待一个模糊的答案。我正在寻找正确使用未注释并因此由java服务器容器管理的常规java对象。这对我很重要,因为我有一个项目,我认为该类不需要成为EJB,但是在我的所有书籍中,以及我在线阅读的内容中,他们从未涉及非EJB业务逻辑。 – Randnum