gpt4 book ai didi

java - 在应用程序 javaee5 中加载共享类

转载 作者:行者123 更新时间:2023-11-30 05:11:14 25 4
gpt4 key购买 nike

我正在尝试在 java ee 5 应用程序中加载我耳中所有 Web 应用程序通用的一些类。

我尝试通过将类(而不是 jar)放入a) 名为“lib”的目录

b) 也在 application.xml 中指定

   <module><java>lib/common.jar</java></module> 

并且选项 a 或 b 均未成功

但是当我将这些类打包到 common.jar 中时,我能够通过方法 b) 加载这些类

  1. 这两种方法都需要对类进行 jar 吗?
  2. 通过上述两种方法提供类有什么区别?为什么好像有两种方式来指定加载公共(public)类?

最佳答案

我不确定这里指的是哪个应用程序服务器,以及 common.jar 文件的性质。现在,我假设应用程序服务器是任何 Java EE 5 容器,并且 common.jar 文件是实用程序 jar(而不是 EJB 或类似模块)。

Java EE 5 平台规范实际上定义了容器提供库支持的方式:

A .ear file may contain a directory that contains libraries packaged in JAR files. The library-directory element of the .ear file’s deployment descriptor contains the name of this directory. If a library-directory element isn’t specified, or if the .ear file does not contain a deployment descriptor, the directory named lib is used. An empty library-directory element may be used to specify that there is no library directory.All files in this directory (but not subdirectories) with a .jar extension must be made available to all components packaged in the EAR file, including application clients. These libraries may reference other libraries, either bundled with the application or installed separately, using any of the techniques described herein.

这并不意味着方法B是错误的,它是用于application servers like JBoss 4的方法。 ,不支持 application.xml 中的库目录元素。我相信,Glassfish 也支持 lib 目录概念,但没有相应的库目录元素。

回到问题,将类单独放置在 EAR 文件的目录中似乎仅在 WebLogic Server 中通过 APP-INF\classes 结构受支持(不用说,这不是平台标准)。因此,建议将公共(public)类打包并使用应用程序服务器支持的机制使这些公共(public)类可供应用程序中的其他模块使用。

关于java - 在应用程序 javaee5 中加载共享类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3304461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com