我有两个不同的应用程序在同一台服务器上运行。第一个应用程序将对象设置为HttpSession
。当我从第二个应用程序获得这个对象时,它抛出ClassCastException
。
该类在jar
文件中定义,两个应用程序都可以访问我在HttpSession
中设置的类。
我假设ClassCastException是由存储在HttpSession中的对象的类从两个不同的类加载器加载的情况引起的。
如果您的第一个应用程序创建了存储在HttpSession中的对象,那么该对象的类将使用第一个应用的类加载器加载。如果第二个应用程序试图从HttpSession访问对象,那么第二个程序还必须加载对象的类。但是第二个应用程序使用它自己的类加载器,该类加载器与第一个应用程序的类加载器不同。
第二个应用程序中的强制转换会导致ClassCastException,因为存储在HttpSession中的对象的类是由另一个类加载器加载的,而不是强制转换结果中对象的类。
您必须将jar文件和存储在HttpSession中的对象的类放在两个应用程序相同的类加载器中。实现这一点的方式取决于您使用的应用程序服务器。请查看应用程序服务器的文档,尤其是应用程序服务器如何组织其类加载器。
希望对有所帮助