На межпроцессных коммуникациях Java говорит:
Для облегчения связи между процессами, большинство операционных систем
поддержка межпроцессных коммуникаций (IPC), таких как каналы и
розетки . IPC используется не только для связи между процессами на
та же система, но процессы в разных системах.
Я бы предпочел пойти на трубы или розетки. Это сделает вашу жизнь намного проще, а ваши веб-службы - более гибкими, поскольку они могут работать на двух отдельных компьютерах, по-прежнему имея возможность общаться друг с другом, как если бы они устанавливались рядом.
Это говорится, вернемся к практике. Скажем, например, у вас есть набор объектов {a,b,c}
, которыми вы хотите поделиться между своими службами. Создайте класс хранилища данных, содержащий объекты {a,b,c}
, и всякий раз, когда происходит обновление, делайте это в хранилище данных dataStore.setA(A new_a)
. За сценой и при каждом обновлении локальное хранилище данных уведомляет удаленное хранилище данных, находящееся в другом приложении, и передает все только что сделанные обновления. Следующее DTO может использоваться для передачи всех изменений из одного хранилища данных в другое:
public class ObjectUpdateEvent<Source> implements Serializable {
private String fieldName;
private Object previousValue;
private Object newValue;
private Source source;
// Constructor...
}
Обновление объекта "а" может быть выполнено следующим образом
public class DataStore{
// .....
public setA(A new_a){
ObjectUpdateEvent<DataStore> updateDto = new ObjectUpdateEvent<DataStore>();
updateDto.setPreviousValue(a);
updateDto.setNewValue(new_a);
sendUpdateDto();
a = new_a;
}
}
РЕДАКТИРОВАТЬ: Это именно то, что @duffymo упомянул выше.