获取第一个应用程序设置的HttpSession属性会在第二个应用程序中引发ClassCastException



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

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

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

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

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

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

希望对有所帮助

相关内容

  • 没有找到相关文章

最新更新