我一直致力于实体实施远程服务。 我在EntityServiceImpl中创建了一个自定义服务方法,创建了通过InstitutionServiceUtil提供服务的自定义服务方法。 在部署了portlet之后,在从浏览器窗口发送请求到服务方法的同时,我得到了Exception
exception":"java.lang.ClassCastException: com.institutions.model.impl.InstitutionImpl
cannot be cast to com.institutions.model.Institution
注意:如果我在重启服务器后发送请求,我没有得到上述异常。
如何解决上述异常?
答案 0 :(得分:3)
我假设InstitutionImpl
实现了接口Institution
。如果是这样,那么异常的根本原因是类加载:类加载器A加载Institution
但InstitutionImpl
是从不同的类加载器加载的。如果完全限定名称和类加载器相同,则Java中的两个类只是等效的。
我对liferay的了解不足以告诉你它的类加载是如何工作的。但是要解决这个问题,您需要确定当您尝试加载实现时可能已经存在Institution
接口(可能来自之前的部署尝试)。
答案 1 :(得分:1)
在部署抛出类强制转换异常的portlet时,请执行以下操作:
或......对我有用的是
或者如果您已经构建了服务,请执行以下步骤
只需删除从服务构建器创建的5个包, 即
model.impl
service.base
service.http
service.impl
service.persistence
删除META-INF文件夹中生成的.xml,文件ext-spring.xml除外