diff --git a/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java b/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java index 31bdaa979b..a4423c37dc 100644 --- a/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java +++ b/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java @@ -325,6 +325,10 @@ public class RemoteEnvPane extends BasicBeanPane { this.remoteWorkspaceURL = Strings.isNullOrEmpty(connection.getUrl()) ? RemoteWorkspaceURL.createDefaultURL() : new RemoteWorkspaceURL(connection.getUrl()); + //判断一下IP地址是不是IPV6的格式,如果是的话在拆分地址和端口的时候需要调整一下格式,用[ 或者 ] 判断 + if (!Strings.isNullOrEmpty(connection.getUrl()) && connection.getUrl().contains("[")) { + this.remoteWorkspaceURL.refreshIPV6Format(); + } String username = fromNullable(connection.getUserName()).or(StringUtils.EMPTY); String pwd = fromNullable(connection.getPassword()).or(StringUtils.EMPTY); String certPath = fromNullable(connection.getCertPath()).or(StringUtils.EMPTY); diff --git a/designer-base/src/main/java/com/fr/env/RemoteWorkspaceURL.java b/designer-base/src/main/java/com/fr/env/RemoteWorkspaceURL.java index 4ea950e845..b37bc4d051 100644 --- a/designer-base/src/main/java/com/fr/env/RemoteWorkspaceURL.java +++ b/designer-base/src/main/java/com/fr/env/RemoteWorkspaceURL.java @@ -129,6 +129,31 @@ public class RemoteWorkspaceURL implements FCloneable { return this.url; } + /** + * IPV6地址格式不同,处理字符串的方式不同,需要处理的是port和host + * 形如 http://[XXXX::XXXX:XXXX:XXXX:XXXX]:8080/webroot/decision + */ + public void refreshIPV6Format() { + String url = this.url; + // 第三次出现"/"的地方 + int webIndex = url.indexOf("/", url.indexOf("://") + 3); + int hostIndex = url.indexOf("["); + int portIndex = url.indexOf("]"); + isContainsRelatedIndex(webIndex, hostIndex, portIndex); + this.host = url.substring(hostIndex, portIndex + 1); + this.port = url.substring(portIndex + 2, webIndex); + } + + /** + * + * @param webIndex web指针 + * @param hostIndex 主机指针 + * @param portIndex 端口指针 + * @return 三个指针是否都存在 + */ + public boolean isContainsRelatedIndex(int webIndex, int hostIndex, int portIndex) { + return webIndex != -1 && hostIndex != -1 && portIndex != -1; + } public void setHttps(boolean https) { isHttps = https;