Я пытаюсь встроить в приложение Java, которое использует базу данных H2. Приложение является клиентским узлом и использует класс ClientSymmetricEngine
из API SymmetricDS.Создание таблиц SYM в Embedded SymmetricDS
Главный узел запускает автономный сервер симметричных сигналов, и мне удалось синхронизировать данные, когда я использовал уже настроенные databsae из предыдущих тестов в приложении.
При запуске приложения на новую базу данных, она выдает это исключение:
java.lang.IllegalStateException: This node has not been configured.Could not find a row in the identity table
at
org.jumpmind.symmetric.service.impl.RegistrationService.openRegistration(RegistrationService.java:562)
at
org.jumpmind.symmetric.service.impl.RegistrationService.openRegistration(RegistrationService.java:530)
at
org.jumpmind.symmetric.service.impl.RegistrationService.openRegistration(RegistrationService.java:519)
at
org.jumpmind.symmetric.AbstractSymmetricEngine.openRegistration(AbstractSymmetricEngine.java:890)
at syncdemo.ClientNode.<init>(ClientNode.java:32)
at syncdemo.SyncDemo.main(SyncDemo.java:37)
Как создать SYM таблицы в узле клиента через API?
Я получил код для синхронизации от here. Который используется в классе ClientNode следующим образом:
public class ClientNode {
private ClientSymmetricEngine cEngine;
private File propFile;
public ClientNode(File file) throws FileNotFoundException, IOException {
propFile = file;
Properties propertiesFile = new Properties();
propertiesFile.load(new FileReader(propFile));
cEngine = new ClientSymmetricEngine(propertiesFile, true);
getcEngine().openRegistration("store", "001");
getcEngine().setup();
getcEngine().start();
}
public ClientSymmetricEngine getcEngine() {
return cEngine;
}
public void setcEngine(ClientSymmetricEngine cEngine) {
this.cEngine = cEngine;
}
}
Calling класс clientNode отсюда:
public class SyncDemo {
public static void main(String[] args) {
try
{
new ClientNode(new File("/client.properties"));
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Содержание client.properties файла:
external.id=001
engine.name=store-001
sync.url=http://192.168.1.107:31415/sync/corp-000
group.id=store
db.url=jdbc:h2:./syncdata/store001;AUTO_SERVER=TRUE;LOCK_TIMEOUT=60000
db.driver=org.h2.Driver
db.user=symmetric
registration.url=http://192.168.1.107:31415/sync/corp-000
db.password=
auto.config.database=true
Я просто заметил, что даже если SYM-таблицы присутствуют в базе данных клиентского узла, такое же исключение выдается, если в таблицы SYM_NODE и SYM_NODE_IDENTITY не вставлены соответствующие данные.
Можете ли вы добавить исключение? И показать код, используемый для синхронизации вашей БД? – Riduidel