Liberty 外部支持
Liberty 的外部函数和资源可以直接使用,而且在下一个发行版中可以依赖。应用服务或升级到未来发行版时,Liberty 的内部或附带方面可能会改变。
我可以直接使用 Liberty 中的哪些内容并在下一个发行版中依赖这些内容?
下列资源可以直接使用,而且在下一个发行版中仍可以使用:- ${wlp.install.dir}/dev 目录中的 JAR 文件内容定义的应用程序编程接口 (API) 和系统编程接口 (SPI)。
- 应用程序类装入器可以看见由服务器配置中的功能部件所提供的 API。产品扩展功能部件可以看见服务器配置中的功能部件所提供的所有 API 和 SPI。
- 针对 ${wlp.install.dir}/dev 目录中的 JAR 文件编译代码。在 ${wlp.install.dir}/dev 目录中提供 JAR 文件只是为了编译应用程序和功能部件,系统不支持将它们用于运行时。不要在应用程序、库或测试中使用这些 JAR 文件。
- 服务器配置,包括具有 public 或 protected 可视性的功能部件。可在 server.xml 文件和所包含文件中指定公共功能部件和配置元素;受保护功能部件可包括在您自己的功能部件中。
- ${wlp.install.dir}/bin 目录和子目录中的命令、脚本和归档。
- ${wlp.install.dir}/clients 目录和子目录中的客户机实用程序。
我应该避免依赖哪些内容?
不要构建对产品附带方面的依赖性。构建对附带方面的依赖性可能会在您应用服务或升级到将来的发行版时对产品产生负面影响。避免依赖的产品内部内容示例包括但不限于下列情况:
- 产品二进制 JAR 文件的名称,例如,${wlp.install.dir}/dev 目录中的那些 JAR 文件的名称。使用工具或 javac -extdirs 选项针对这些 JAR 文件来编译代码。如果您要使用 Apache Ant 编译代码,请使用通配符以避免与特定 JAR 版本产生依赖关系;例如:
或者,可使用 featureManager classpath 命令来为一组特定功能生成类路径。有关更多信息,请参阅Liberty:featureManager 命令。<fileset dir="${wlp.install.dir}/dev/api/spec" includes="com.ibm.ws.javaee.servlet.3.0_*.jar"/>
- 直接使用 ${wlp.install.dir}/lib 目录中的产品二进制文件。可以直接调用的 JAR 文件仅位于 ${wlp.install.dir}/bin/tools 目录中。
- 由服务器在运行时输出的消息。消息的文本及插入会随服务和版本的升级而改变。只要实践上可能,产品将在特定操作点输出的消息标识方面保持一致,但这无法保证,因为底层实现可能会改变。
- 产品安装的布局,而不是 ${wlp.install.dir}/bin 和 ${wlp.install.dir}/dev 目录。
- ${wlp.install.dir}/templates 目录中的示例和模板文件。将服务应用到安装时可修改这些文件。
- 未显式提供为 API 的专用或第三方 Java™ 包。这些对于运行时的应用程序类装入器不可视。
- 未记录的配置属性。Liberty 代码库与 WebSphere® Application Server 传统版 代码库一样。因此,可能未记录 Liberty 代码库中的某些配置属性,但是,如果指定了这些配置属性,那么可能会影响 Liberty 的行为。由于这些配置属性不适用于 Liberty,因此 Liberty 不支持这些配置属性。未针对 Liberty 测试这些配置属性,因此,现在或将来可能无法将它们可靠地用于 Liberty。由于未将这些属性作为产品外部对象进行记录,因此随时可以将它们移除。
应用服务或升级时可修改那些内容?
应用服务或升级时可修改下列目录及其子目录的内容。不要自行修改下列位置中的文件,否则它们可能会为产品维护或升级所覆盖:
- ${wlp.install.dir}/bin
- ${wlp.install.dir}/clients
- ${wlp.install.dir}/dev
- ${wlp.install.dir}/java
- ${wlp.install.dir}/lib
- ${wlp.install.dir}/templates
下列目录的内容不会加以修改。这些是您的文件,应用服务或升级将不会修改这些文件:
- ${wlp.install.dir}/etc(您可能在此目录中添加了 server.env 或 jvm.options 文件)。
- ${wlp.install.dir}/usr(用户配置和应用程序的缺省位置)。
- 通过 WLP_USER_DIR 环境变量指定的任何非缺省目录。
有关对 ${wlp.install.dir}/etc
内容不进行修改的策略存在例外。使用 Installation Manager 在 IBM®
iSeries 平台上安装 Liberty 时,会创建 ${wlp.install.dir}/etc/default.env 文件。在归档以及作业管理器安装期间,此文件也会由 iAdmin POSTINSTALL 命令创建或替换。iAdmin 命令位于 ${wlp.install.dir}/lib/native/os400/bin 目录中。请参阅iAdmin 命令。
第三方 API 可能随时间的推移而更改,但未考虑向后兼容性问题。这些是 Java 包,视为开放式源代码社区所开发功能部件实现的一部分,且作为 Liberty 的一部分来提供。第三方 API 在缺省情况下对于应用程序不可视;具有显式允许第三方访问的类装入器配置的 Java EE 应用程序将可以看见应用程序类装入器上的那些包,并且 OSGi 应用程序必须显式导入那些包。决定使用第三方 API 之前,请考虑不兼容更改的影响。