我在尝试在liferay 中的portlet 之间发送共享自定义对象时遇到了严重问题。我有一个带有 servlet 过滤器的 Hook 插件,它加载 MyCustomClass 类型的对象并将其作为参数插入到请求对象中。
当我尝试在 portlet 的 render() 中读取这个对象时,我得到了一个 ClassCastException,尽管我正在将该对象转换为同一个类。
我知道 liferay 插件有不同的上下文,我已经尝试在将对象加载到 bean 和 portlet 之前更改类加载器,如下所示:
ClassLoader portalcl = PortalClassLoaderUtil.getClassLoader();
ClassLoader currentcl = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(portalcl);
//do my stuff
Thread.currentThread().setContextClassLoader(currentcl);
但是,它并没有解决问题,我发现解决问题的唯一方法是将对象序列化为 json 字符串,并在需要时对其进行反序列化。
这不是有点蹩脚吗?有谁知道更好的解决方案?
问候, DS