Мне нужно отправить план лечения для клиента с помощью RMI. Сервер и клиент находятся в отдельных проектах, оба имеют определенные классы (сущности и удаленный интерфейс):
public class Plan implements Serializable {
private Integer id;
private Date periodStart;
private Date periodEnd;
private Integer patientId;
private Medication medications;
}
public class Medication implements Serializable {
private Integer id;
private String name;
private Integer dosage;
private Integer intakeInterval;
}
public interface PillService extends Remote {
public Plan getPlan(int id) throws RemoteException;
}
Приведенный выше код работает нормально, но мне нужно иметь список лекарств в Plan
как это:
public class Plan implements Serializable {
...
private List<Medication> medications;
}
Если я бегу с этим Plan
классом, я получаю это исключение:
Client exception: java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: org.hibernate.collection.internal.PersistentBag (no security manager: RMI class loader disabled)
После этого я добавил SecutiryManager
к System
, я получаюошибка:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
Итак, все отлично работает без List<Medication>
в Plan
. Разве RMI не любит составные объекты? Должен ли я определить новый дистанционный метод для получения списка лекарств отдельно?