使用 java.lang.ClassCastException 调用本地 EJB 方法失败
Call local EJB method failds with java.lang.ClassCastException
我有一个实现以下接口的本地 Ejb class :
public interface LocalEjbService {
public String saveOrders(String request);
public SaveOrdersResponse saveOrders(Integer request);
}
当我调用 public String saveOrders(String request) 方法时,一切正常。并且没有异常地返回响应,但是当我尝试调用第二个方法时,调用正常但是当方法返回 EjbResponse 时,异常返回到 ejb 客户端,如下所示
java.lang.ClassCastException: com.thegroup.common.beans.ejb.response.oms.SaveOrdersResponse cannot be cast to com.thegroup.common.beans.ejb.response.oms.SaveOrdersResponse
如果 SaveOrdersResponse 由两个不同的类加载器加载,就会发生这种情况。一次由客户端进行调用,一次由实现返回响应。我会确保两个库都可以访问包含传输对象和 EJB 接口的 jar。不要把它放在那里两次。例如,在 EAR 的 lib 文件夹中是共享库的好地方。
我有一个实现以下接口的本地 Ejb class :
public interface LocalEjbService {
public String saveOrders(String request);
public SaveOrdersResponse saveOrders(Integer request);
}
当我调用 public String saveOrders(String request) 方法时,一切正常。并且没有异常地返回响应,但是当我尝试调用第二个方法时,调用正常但是当方法返回 EjbResponse 时,异常返回到 ejb 客户端,如下所示
java.lang.ClassCastException: com.thegroup.common.beans.ejb.response.oms.SaveOrdersResponse cannot be cast to com.thegroup.common.beans.ejb.response.oms.SaveOrdersResponse
如果 SaveOrdersResponse 由两个不同的类加载器加载,就会发生这种情况。一次由客户端进行调用,一次由实现返回响应。我会确保两个库都可以访问包含传输对象和 EJB 接口的 jar。不要把它放在那里两次。例如,在 EAR 的 lib 文件夹中是共享库的好地方。