1

我正在配置 SymmetricDS 3.6.12 的两个实例。服务器实例在 Glassfish 3 服务器中工作,使用 8181 端口作为 https。客户端实例作为服务(在码头)运行,https 端口位于 31417。这两个实例已配置并正在运行。客户端的 sym_tables 已使用来自服务器的数据进行了更新,但是我想要同步的表都没有工作。我在服务器中收到此错误:

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 错误吗?我能做些什么来解决这个问题吗?

4

2 回答 2

0

只需在配置文件中使用方括号即可解决问题。正如@dave_thompson_085 在评论中所说

冒号:在 URL 权限中分隔端口(和密码,如果使用),但也用于 IPv6“文字”格式,因此需要方括号。

所以我以这种方式配置了同步 url:

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

并在节点表中做了同样的事情。

于 2014-11-27T21:37:34.667 回答
0

注册网址是硬编码的:

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

这就是客户成功注册的原因。问题在于ipAddress变量替换。检查为什么它在客户端被替换fe80:0:0:0:0:5efe:c0a8:18f%net10并修复它。

于 2014-11-26T13:17:32.923 回答