Образец SymmetricDS: клиент использует неправильный порт

Я пытаюсь заставить работать пример из учебника SymmetricDS. Я использую файлы конфигурации corp-000.properties и store-001.properties, найденные в каталоге примеров загружаемого zip-файла. Я поместил их в каталог двигателя и отредактировал так, чтобы corp-000 использовал базу данных MySQL, а store-001 использовал базу данных H2, обе на моей локальной машине.

Вот URL-адреса регистрации и синхронизации из corp-000.properties:

registration.url=
sync.url= http : // localhost : 31415 / sync / corp-000

Вот те, что есть в магазине-001:

registration.url= http: // localhost : 31415 / sync / corp-000
sync.url= http : // localhost : 31415 / sync / corp-000

Когда я запускаю bin/sym, он находит две базы данных. Но тут магазин-001 сообщает:

[store-001] - DefaultOfflineClientListener - Failed to connect to the transport: http: // localhost : 8080 / sync / corp-000
[store-001] - PushService - Could not communicate with corp:000:000 at http: // localhost : 8080 / sync / corp-000 because: Connection refused

Это загадка, поскольку порт 8080 нигде не указан в двух файлах свойств.

Примечание. В приведенных выше URL-адресах нет пробелов в файлах свойств. Мне пришлось сделать это, чтобы Stackoverflow позволил мне включить их в свой вопрос.

Заранее спасибо за помощь.


person user1519054    schedule 01.04.2015    source источник


Ответы (3)


Довольно поздно публиковать ответ, но в файле свойств store-001 есть ошибка:

Registration.url должен указывать на ваш корневой узел (корп-000), а не на локальный хост.

Я предлагаю заменить localhost на IP-адрес или сетевое имя corp-000: registration.url=http://<Corp-000-IPAddress>:31415/sync/corp-000

person Gautier    schedule 17.06.2015

Попробуйте заменить:

sync.url= http : // localhost : 31415 / sync / corp-000

с

sync.url=http://localhost:31415/sync/corp-000

тогда:

registration.url= http: // localhost : 31415 / sync / corp-000

с

registration.url=http://localhost:31415/sync/corp-000

а также

sync.url= http : // localhost : 31415 / sync / corp-000

с

sync.url=http://localhost:31415/sync/corp-000

то есть удалить все пробелы (пробелы) из URL-адресов.

person Boris Pavlović    schedule 01.04.2015
comment
Борис, у меня нет пробелов в URL-адресах в моем файле свойств. Они есть только в том, что я задал в вопросе Stackoverflow. Когда я вставил их как есть, Stackoverflow пометил это как ошибку и не позволил мне сохранить вопрос. В нем говорилось, что я не имею права размещать ссылки в своих вопросах, которые я публикую. Итак, мне пришлось обмануть его, добавив пробелы. Так что не обращайте внимания на пробелы. Как заставить работать пример? Вы как бы говорите, что порт и пути все правильные (без пробелов, конечно). - person user1519054; 02.04.2015
comment
Возможно, порт 31415 нельзя использовать. Не могли бы вы попробовать с 8080, например? - person Boris Pavlović; 02.04.2015
comment
Борис - теперь это частично работает после того, как я переключил все порты на 8080 и запустил банку с --port 8080 и с sudo. Я пока не вижу правильной синхронизации, но, по крайней мере, ошибок не отображается. Благодарю вас! - person user1519054; 02.04.2015

Я тоже пытался заставить работать руководство по SymmetricDS.

Все это в новинку для меня, и я столкнулся с рядом проблем, решение которых заняло много времени из-за моей неопытности с базами данных Java, драйверами баз данных Java и т. д., в дополнение к тому, что SymmeticDS также был для меня новым.

  1. Проблема с портами
  2. Проблема с драйвером JDBC
  3. Проблема управления базой данных JDBC H2
  4. Проблема капитализации таблицы
  5. Проблема с базой данных H2 *.mv.db
  6. Проблема с общим доступом к базе данных

Проблема с портами

Описание

Есть такие инструкции

../bin/sym --port 8080 --server

но в других местах порт по умолчанию 31415, который я помню, думая о пи, 3.1415926....

Решение

У меня есть веб-сервер Apache, работающий на локальном хосте, поэтому для тестирования SymmeticDS я адаптировал инструкцию порта 8080 для использования 31415, хотя для большинства людей, живущих с брандмауэрами и т. д., может иметь смысл наоборот. Поскольку оба движка (corp и store-001) работают на той же машине, брандмауэры и т. д. не являются проблемой для руководства, хотя я ожидаю, что они могут беспокоить меня позже.

Проблема с драйвером JDBC

Описание и решение

Мне нужно было загрузить и установить некоторые драйверы базы данных JDBC H2, чтобы все заработало.

Проблема управления базой данных JDBC H2

Описание

В некоторых местах учебник просит вас выполнить некоторые команды SQL для базы данных H2 corp-000 или store-001. Я привык к MySQL WorkBench и MS SQL Server Management Studio, и мне нужно было что-то похожее, чтобы позволить мне открывать базы данных, просматривать их содержимое и запускать команды SQL.

Решение

Я использовал что-то (называемое консольным просмотрщиком, я думаю), которое работает в обычном веб-браузере. Я загрузил и установил вещи с веб-сайта базы данных H2.

Проблема капитализации таблицы

Некоторые команды аварийно завершали работу с сообщениями об ошибках, такими как таблица ITEM (верхний регистр) не найдена. Проверка моей базы данных показала, что существует таблица с именем item (нижний регистр). Проблема возникает из-за того, что имена таблиц и полей в стандартном SQL по умолчанию используются в верхнем регистре, если только они не заключены в кавычки. Итак, в SQL

элемент

означает ПУНКТ, тогда как

'предмет'

означает пункт. Так (например) эта строка из учебника

insert into item (item_id, price_id, name) values (110000055, 55, 'Soft Drink');

неверно, если имена таблиц в нижнем регистре, например. для таблицы под названием «item».

Решение

Я просмотрел и преобразовал имена таблиц и имена столбцов в верхний регистр в файлах, прилагаемых к учебнику. Это было больше работы, чем я ожидаю от других людей. Я хотел внести свои изменения в SymmetricDS, но сдался, когда прочитал о подписании и публикации соглашений об авторских правах. Я выбрал заглавные буквы в качестве стандарта для имен, чтобы любая небрежность со стороны меня или SymmetricDS по поводу цитирования имен больше не мешала показу. Кроме того, любые плохие реализации SQL, которые либо настаивали на наличии кавычек, либо настаивали на отсутствии кавычек в некоторых местах, все еще могли работать. Например, если плохо реализованный драйвер не любит кавычки, то ITEM вместо «ITEM» все равно будет работать, а item или ITEM вместо «item» — нет.

Проблема с базой данных H2 *.mv.db

Описание

Изменения в программном обеспечении базы данных H2, похоже, продолжаются, и некоторые по умолчанию, по-видимому, используют файлы *.mv.db.

jdbc:h2:file:C:/Work/symmetric-server-3.7.34/tmp/h2/corp;MV_STORE=FALSE;AUTO_SERVER=TRUE

Решение

Добавление

;MV_STORE=FALSE

к моим строкам подключения в моем браузере, похоже, это исправило.

Проблема с общим доступом к базе данных

Описание

Я не мог запускать команды SQL для баз данных H2 (для создания новых данных для синхронизации), когда базы данных уже были открыты SymmetricDS, которая пыталась их синхронизировать.

Решение

jdbc:h2:file:C:/Work/symmetric-server-3.7.34/tmp/h2/corp;MV_STORE=FALSE;AUTO_SERVER=TRUE

Добавление

;AUTO_SERVER=TRUE

в строках подключения консоли/браузера это исправлено. Вы могли заметить, что у меня также есть полные пути к моей базе данных. Я не уверен, нужно ли мне это, или я просто добавил его при попытке исправить одну из проблем, перечисленных выше.

person Ivan    schedule 23.06.2016