diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index f9a42d48..aeb68351 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -32,14 +32,15 @@ jobs:
strategy:
matrix:
- java-version: [8, 11]
-
+ java-version: [8, 11, 17, 21]
+ fail-fast: false
steps:
- uses: actions/checkout@v2
- name: Set up JDK ${{ matrix.java-version }}
- uses: actions/setup-java@v1
+ uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java-version }}
+ distribution: 'temurin'
- name: Build with Maven
run: ./mvnw clean install -Dmaven.test.skip=true -B -U -e && bash ./.middleware-common/check_format.sh
- name: Test with Maven
diff --git a/pom.xml b/pom.xml
index 4fecc828..01ea5353 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,9 +80,10 @@
2.9.1
3.0.0
1.6.7
+
+
2.18.1
4.1.42.Final
-
UTF-8
1.7.21
1.4.0
@@ -198,7 +199,6 @@
${project.encoding}
-
com.googlecode.maven-java-formatter-plugin
maven-java-formatter-plugin
@@ -276,6 +276,8 @@
maven-surefire-plugin
${maven.surefire.plugin}
+ ${maven.surefire.argLine}
+ ${maven.surefire.excludes}
**/*Test.java
@@ -447,5 +449,22 @@
+
+ args-for-test-by-jdk17-and-above
+
+ [17,)
+
+
+ --add-opens java.base/java.lang=ALL-UNNAMED
+ --add-opens java.base/java.net=ALL-UNNAMED
+ --add-opens java.base/java.math=ALL-UNNAMED
+ --add-opens java.base/java.text=ALL-UNNAMED
+ --add-opens java.base/java.util=ALL-UNNAMED
+ --add-opens java.base/java.util.regex=ALL-UNNAMED
+ --add-opens java.base/java.util.concurrent=ALL-UNNAMED
+ --add-opens java.sql/java.sql=ALL-UNNAMED
+ --add-opens java.sql.rowset/javax.sql.rowset.serial=ALL-UNNAMED
+
+
diff --git a/src/main/java/com/alipay/remoting/util/RemotingUtil.java b/src/main/java/com/alipay/remoting/util/RemotingUtil.java
index 2b658686..b172afb2 100644
--- a/src/main/java/com/alipay/remoting/util/RemotingUtil.java
+++ b/src/main/java/com/alipay/remoting/util/RemotingUtil.java
@@ -193,16 +193,23 @@ private static String doParse(String addr) {
if (StringUtils.isBlank(addr)) {
return StringUtils.EMPTY;
}
- if (addr.charAt(0) == '/') {
- return addr.substring(1);
- } else {
- int len = addr.length();
- for (int i = 1; i < len; ++i) {
- if (addr.charAt(i) == '/') {
- return addr.substring(i + 1);
+ // Find the first and second '/' positions
+ int firstSlash = addr.indexOf('/');
+ int secondSlash = addr.indexOf('/', firstSlash + 1);
+ if (firstSlash != -1) {
+ if (secondSlash != -1) {
+ // Extract the IP address and port
+ String ip = addr.substring(firstSlash + 1, secondSlash);
+ String port = addr.substring(secondSlash + 1);
+ if (port.contains(":")) {
+ port = port.split(":")[1];
}
+ return ip + ":" + port;
+ } else {
+ // Only one slash, return the part after the slash
+ return addr.substring(firstSlash + 1);
}
- return addr;
}
+ return addr;
}
}