2014-11-25 9 views
1

Я настраиваю два экземпляра SymmetricDS 3.6.12. Экземпляр сервера работает на сервере Glassfish 3, используя порт 8181 как https. Экземпляр клиента работает как служба (в причале) с портом https в 31417. Эти два экземпляра настроены и запущены. Символы на клиенте были обновлены данными с сервера, однако ни одна из таблиц, которые я хочу синхронизировать, работает. Я получаю эту ошибку в сервере:SymmetricDS MalformedURLException

2014-11-25 23:34:31,493 WARN [ERPServer] [FileSyncService] [erpserver-file_push-1] Could not communicate with node 'PDV:19742872000153:19742872000153' at https://fe80:0:0:0:0:5efe:c0a8:18f%net10:31417/sync/19742872000153 because of unexpected error 
java.net.MalformedURLException: Stream handler unavailable due to: For input string: "0:0:0:0:5efe:c0a8:18f%net10:31417" 
at java.net.URL.<init>(URL.java:619) 
at java.net.URL.<init>(URL.java:482) 
at java.net.URL.<init>(URL.java:431) 
at org.jumpmind.symmetric.transport.http.HttpTransportManager.getFilePushTransport(HttpTransportManager.java:217) 
at org.jumpmind.symmetric.service.impl.FileSyncService.pushFilesToNode(FileSyncService.java:606) 
at org.jumpmind.symmetric.service.impl.FileSyncService.execute(FileSyncService.java:593) 
at org.jumpmind.symmetric.service.impl.NodeCommunicationService$2.run(NodeCommunicationService.java:307) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:744) 
Caused by: java.lang.IllegalStateException: Stream handler unavailable due to: For input string: "0:0:0:0:5efe:c0a8:18f%net10:31417" 
at org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:431) 
at java.net.URL.<init>(URL.java:614) 
... 9 more 

Дополнительная информация

Сервер настроен таким образом:

engine.name=ERPServer 
group.id=ERP 
external.id=19742872000153ERP 
registration.url= 
sync.url=https://$(ipAddress):8181/symmetric_ds/sync/$(engineName) 

Клиент настроен таким образом:

engine.name=19742872000153 
group.id=PDV 
external.id=19742872000153 
registration.url=https://192.168.1.150:8181/symmetric_ds/sync/ERPServer 
sync.url=https://$(ipAddress):31417/sync/$(engineName) 

Я проверил IPv6, который использует клиент (fe80: 0: 0: 0 : 0: 5efe: c0a8: 18f% net10) и проверено, что это действительный IP-адрес. Глядя на эту часть сообщения об ошибке:

java.net.MalformedURLException: Stream handler unavailable due to: For input string: "0:0:0:0:5efe:c0a8:18f%net10:31417" 

мы можем видеть, что URL не имеет первую часть IP (fe80), а порт присутствует в URL (31417). Является ли это ошибкой SymmetricDS? Я могу что-то сделать, чтобы решить эту проблему?

+0

Что такое sync.url и registration.url на клиенте? можно найти в каталоге двигателей в файле .properties –

+0

это не похоже на действительный URL: https: // fe80: 0: 0: 0: 0: 5efe: c0a8: 18f% net10 –

+0

проблема с ipAddress переменная подстановка. каково значение, которое записывается в файл? –

ответ

0

Проблема была решена просто с использованием квадратных скобок в файле конфигурации. Как @ dave_thompson_085 сказал в комментарии

Colon: в URL власти отделяет порт (и пароль, если используется), но также используется в «буквальном» формате IPv6, так что нужно квадратные скобки.

Так я настроил Синхронизирующий URL-адрес следующим образом:

sync.url=https://[$(ipAddress)]:31417/sync/$(engineName) 

и сделал то же самое в таблице узлов.

0

Регистрация Ссылка зашиты:

registration.url=https://192.168.1.150:8181/symmetric_ds/sync/ERPServer 

и это причина, почему клиент успешно регистрирует. Проблема заключается в замене переменных ipAddress. Проверьте, почему он заменен на fe80:0:0:0:0:5efe:c0a8:18f%net10 у клиента и исправил его.

+0

IPv6 правильный. Я считаю, что SymmetricDS использует порт как часть IP. – brevleq

+0

Взгляните на комментарий dave_thompson_085 –