【问题标题】:Getting HttpSession attribute set by first app throws ClassCastException in second app获取第一个应用程序设置的 HttpSession 属性会在第二个应用程序中引发 ClassCastException
【发布时间】:2015-12-21 18:12:10
【问题描述】:

我在同一台服务器上运行了两个不同的应用程序。 第一个应用程序将对象设置为HttpSession。当我从第二个应用程序中获取此对象时,它会抛出 ClassCastException

该类在jar 文件中定义,两个应用程序都可以访问我在HttpSession 中设置的类。

【问题讨论】:

标签: jakarta-ee cluster-computing classcastexception httpsession


【解决方案1】:

我假设 ClassCastException 是由于存储在 HttpSession 中的对象的类是从两个不同的类加载器加载的情况造成的。

如果您的第一个应用程序创建存储在 HttpSession 中的对象,则使用第一个应用程序的类加载器加载对象的类。 如果您的第二个应用程序尝试从 HttpSession 访问对象,则第二个应用程序还必须加载该对象的类。但是第二个应用程序使用自己的类加载器,它与第一个应用程序的类加载器不同。

第二个应用程序中的转换导致 ClassCastException,因为存储在 HttpSession 中的对象的类由另一个类加载器加载,而不是转换结果的对象的类。

您必须将 jar 文件与存储在 HttpSession 中的对象的类放在两个应用程序相同的类加载器中。您可以实现的方式取决于您使用的应用程序服务器。检查您的应用服务器的文档,尤其是您的应用服务器如何组织其类加载器。

希望有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 2019-05-19
    • 2019-10-05
    • 1970-01-01
    相关资源
    最近更新 更多