gpt4 book ai didi

java - 静态成员是否在 Java EE 兼容的 servlet 容器中跨应用程序共享?

转载 作者:搜寻专家 更新时间:2023-11-01 01:56:57 26 4
gpt4 key购买 nike

如果我有一个 Servlet 类,并且这个类在两个应用程序中使用 - 的静态成员是否在两个应用程序之间共享?此行为是由 Java EE 指定的还是特定于容器的?

最佳答案

If I have a Servlet class, and this class is used in two applications - are static members of shared across both applications?

不,静态成员不会跨应用程序共享。通常,每个应用程序都与其自己的类加载器相关联,因此,Servlet 类将在容器中加载两次。据推论,静态成员不会在应用程序之间共享。

如果您需要跨应用程序共享数据,建议根据您的需要使用文件、JMS 队列或数据库。

Is this behaviour specified by Java EE or container specific?

Java EE 6 平台规范没有定义类加载行为。规范在这方面规定如下:

EE.8.3 Class Loading Requirements

The Java EE specification purposely does not define the exact types and arrangements of class loaders that must be used by a Java EE product. Instead, the specification defines requirements in terms of what classes must or must not be visible to components.

组件可见的类和资源,不包括来自其他应用程序中其他网络模块的类。它们可能包括同一应用程序的其他网络模块中的类和资源:

EE.8.3.1 Web Container Class Loading Requirements

...

Components in the web container may have access to the following classes and resources. Portable applications must not depend on having or not having access to these classes or resources.

•The classes and resources accessible to any other web modules included in the same ear file, as described above.

...

由此推断,Servlet类如果部署在两个不同的应用程序中,将无法访问另一个应用程序中的另一个类。

关于java - 静态成员是否在 Java EE 兼容的 servlet 容器中跨应用程序共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6733326/

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