diff --git a/pom.xml b/pom.xml
index d12ed89ac..f1a119f82 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,10 +5,12 @@
com.codingapi
tx-lcn
- 4.0.0
+ 4.0.3.M1
pom
tx-lcn
+ https://github.com/codingapi/tx-lcn
+ tx-lcn project for LCN
tx-client
@@ -77,14 +79,6 @@
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- ${java.version}
- ${java.version}
-
-
org.apache.maven.plugins
maven-compiler-plugin
@@ -108,6 +102,8 @@
+
+
org.sonatype.plugins
nexus-staging-maven-plugin
@@ -132,21 +128,24 @@
-
-
- org.apache.maven.plugins
- maven-gpg-plugin
- 1.6
-
-
- sign-artifacts
- verify
-
- sign
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/transaction-dubbo/pom.xml b/transaction-dubbo/pom.xml
index 5146d4280..e5cb7369f 100644
--- a/transaction-dubbo/pom.xml
+++ b/transaction-dubbo/pom.xml
@@ -8,7 +8,7 @@
com.codingapi
tx-lcn
- 4.0.0
+ 4.0.3.M1
com.codingapi
diff --git a/transaction-motan/pom.xml b/transaction-motan/pom.xml
index 15b14cc2f..1acc4b0f7 100644
--- a/transaction-motan/pom.xml
+++ b/transaction-motan/pom.xml
@@ -8,7 +8,7 @@
com.codingapi
tx-lcn
- 4.0.0
+ 4.0.3.M1
com.codingapi
diff --git a/transaction-springcloud/pom.xml b/transaction-springcloud/pom.xml
index 3be3fb924..7b33184bf 100644
--- a/transaction-springcloud/pom.xml
+++ b/transaction-springcloud/pom.xml
@@ -6,7 +6,7 @@
com.codingapi
tx-lcn
- 4.0.0
+ 4.0.3.M1
com.codingapi
diff --git a/tx-client/pom.xml b/tx-client/pom.xml
index 6c155b5ff..6df8b15a1 100644
--- a/tx-client/pom.xml
+++ b/tx-client/pom.xml
@@ -6,7 +6,7 @@
com.codingapi
tx-lcn
- 4.0.0
+ 4.0.3.M1
com.codingapi
@@ -123,78 +123,4 @@
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- 1.7
- 1.7
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- ${maven-compiler-plugin.version}
-
- ${maven.compile.source}
- ${maven.compile.target}
- ${project.build.sourceEncoding}
-
-
-
- org.apache.maven.plugins
- maven-source-plugin
- 2.4
-
-
- attach-sources
-
- jar-no-fork
-
-
-
-
-
- org.sonatype.plugins
- nexus-staging-maven-plugin
- 1.6.3
- true
-
- ossrh
- https://oss.sonatype.org/
- true
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- 2.10.3
-
-
- attach-javadocs
-
- jar
-
-
-
-
-
- org.apache.maven.plugins
- maven-gpg-plugin
- 1.6
-
-
- sign-artifacts
- verify
-
- sign
-
-
-
-
-
-
-
diff --git a/tx-client/src/main/java/com/codingapi/tx/aop/service/impl/TxStartTransactionServerImpl.java b/tx-client/src/main/java/com/codingapi/tx/aop/service/impl/TxStartTransactionServerImpl.java
index e3938de4b..d2956504a 100644
--- a/tx-client/src/main/java/com/codingapi/tx/aop/service/impl/TxStartTransactionServerImpl.java
+++ b/tx-client/src/main/java/com/codingapi/tx/aop/service/impl/TxStartTransactionServerImpl.java
@@ -83,50 +83,56 @@ public Object execute(ProceedingJoinPoint point,final TxTransactionInfo info) th
new Thread(new HookRunnable() {
@Override
public void run0() {
- if(task.isAwait()) {
- int rs = txManagerService.closeTransactionGroup(groupId, resState);
+ while (!task.isAwait() && !Thread.currentThread().interrupted()) {
+ try {
+ Thread.sleep(1);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
- int lastState = rs==-1?0:resState;
+ int rs = txManagerService.closeTransactionGroup(groupId, resState);
- int executeConnectionError = 0;
+ int lastState = rs==-1?0:resState;
- //控制本地事务的数据提交
- final TxTask waitTask = TaskGroupManager.getInstance().getTask(groupId, type);
- if(waitTask!=null){
- waitTask.setState(lastState);
- waitTask.signalTask();
+ int executeConnectionError = 0;
- while (!waitTask.isRemove()){
- try {
- Thread.sleep(1);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
+ //控制本地事务的数据提交
+ final TxTask waitTask = TaskGroupManager.getInstance().getTask(groupId, type);
+ if(waitTask!=null){
+ waitTask.setState(lastState);
+ waitTask.signalTask();
- if(waitTask.getState()== TaskState.connectionError.getCode()){
- //本地执行失败.
- executeConnectionError = 1;
-
- lastState = 0;
+ while (!waitTask.isRemove()){
+ try {
+ Thread.sleep(1);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
}
}
+ if(waitTask.getState()== TaskState.connectionError.getCode()){
+ //本地执行失败.
+ executeConnectionError = 1;
- if (compensateLocal == null) {
- long end = System.currentTimeMillis();
- long time = end - start;
- if (executeConnectionError == 1||(lastState == 1 && rs == 0)) {
- //记录补偿日志
- txManagerService.sendCompensateMsg(groupId, time, info,executeConnectionError);
- }
+ lastState = 0;
}
+ }
- task.setState(lastState);
- task.signalTask();
+ if (compensateLocal == null) {
+ long end = System.currentTimeMillis();
+ long time = end - start;
+ if (executeConnectionError == 1||(lastState == 1 && rs == 0)) {
+ //记录补偿日志
+ txManagerService.sendCompensateMsg(groupId, time, info,executeConnectionError);
+ }
}
+
+ task.setState(lastState);
+ task.signalTask();
}
+
}).start();
task.awaitTask();
diff --git a/tx-client/src/main/java/com/codingapi/tx/framework/utils/IpAddressUtils.java b/tx-client/src/main/java/com/codingapi/tx/framework/utils/IpAddressUtils.java
new file mode 100644
index 000000000..8845bc4cd
--- /dev/null
+++ b/tx-client/src/main/java/com/codingapi/tx/framework/utils/IpAddressUtils.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2017. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
+ * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
+ * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
+ * Vestibulum commodo. Ut rhoncus gravida arcu.
+ */
+
+package com.codingapi.tx.framework.utils;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * create by lorne on 2017/12/12
+ */
+public class IpAddressUtils {
+
+
+ public static boolean isIpAddress(String ipAddress){
+ String ipAddressRegex = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}:([0-9]|[1-9]\\d{1,3}|[1-5]\\d{4}|6[0-5][0-9][0-3][0-5])";
+ Pattern ipAddressPattern = Pattern.compile(ipAddressRegex);
+ Matcher matcher = ipAddressPattern.matcher(ipAddress);
+ return matcher.matches();
+ }
+
+ public static boolean isIpFormat(String ipAddress){
+ return ipAddress.contains(":");
+ }
+
+ public static String getIpByDomain(String domain){
+ InetAddress ip= null;
+ try {
+ ip = InetAddress.getByName(domain);
+ } catch (UnknownHostException e) {
+ return null;
+ }
+ return ip.getHostAddress();
+ }
+
+
+ public static boolean isIp(String ipString) {
+ String ipRegex = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}";
+ Pattern pattern = Pattern.compile(ipRegex);
+ Matcher matcher = pattern.matcher(ipString);
+ return matcher.matches();
+ }
+
+
+}
diff --git a/tx-client/src/main/java/com/codingapi/tx/netty/service/impl/NettyControlServiceImpl.java b/tx-client/src/main/java/com/codingapi/tx/netty/service/impl/NettyControlServiceImpl.java
index dfc1f081c..5934e1bcd 100644
--- a/tx-client/src/main/java/com/codingapi/tx/netty/service/impl/NettyControlServiceImpl.java
+++ b/tx-client/src/main/java/com/codingapi/tx/netty/service/impl/NettyControlServiceImpl.java
@@ -7,7 +7,7 @@
import com.codingapi.tx.netty.service.MQTxManagerService;
import com.codingapi.tx.netty.service.NettyControlService;
import com.codingapi.tx.netty.service.NettyService;
-import com.codingapi.tx.netty.utils.IpAddressUtils;
+import com.codingapi.tx.framework.utils.IpAddressUtils;
import com.lorne.core.framework.utils.task.ConditionUtils;
import com.lorne.core.framework.utils.task.IBack;
import com.lorne.core.framework.utils.task.Task;
diff --git a/tx-client/src/main/java/com/codingapi/tx/netty/service/impl/NettyServiceImpl.java b/tx-client/src/main/java/com/codingapi/tx/netty/service/impl/NettyServiceImpl.java
index 5f00e0452..96655682f 100644
--- a/tx-client/src/main/java/com/codingapi/tx/netty/service/impl/NettyServiceImpl.java
+++ b/tx-client/src/main/java/com/codingapi/tx/netty/service/impl/NettyServiceImpl.java
@@ -79,6 +79,7 @@ public void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast(new LengthFieldPrepender(4, false));
ch.pipeline().addLast(new LengthFieldBasedFrameDecoder(Integer.MAX_VALUE, 0, 4, 0, 4));
+
ch.pipeline().addLast(transactionHandler);
}
});
diff --git a/tx-client/src/main/java/com/codingapi/tx/netty/utils/IpAddressUtils.java b/tx-client/src/main/java/com/codingapi/tx/netty/utils/IpAddressUtils.java
deleted file mode 100644
index a5adaf4f0..000000000
--- a/tx-client/src/main/java/com/codingapi/tx/netty/utils/IpAddressUtils.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.codingapi.tx.netty.utils;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * create by lorne on 2017/12/12
- */
-public class IpAddressUtils {
-
- private final static String ipAddressRegex = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}:([0-9]|[1-9]\\d{1,3}|[1-5]\\d{4}|6[0-5]{2}[0-3][0-5])";
-
- private final static Pattern pattern = Pattern.compile(ipAddressRegex);
-
- public static boolean isIpAddress(String ipAddress){
- Matcher matcher = pattern.matcher(ipAddress);
- return matcher.matches();
- }
-
-}
diff --git a/tx-manager/pom.xml b/tx-manager/pom.xml
index 974563d27..5d6e431a6 100644
--- a/tx-manager/pom.xml
+++ b/tx-manager/pom.xml
@@ -80,6 +80,16 @@
+
+
+ org.apache.maven.plugins
+ maven-deploy-plugin
+ 2.8.2
+
+ true
+
+
+
org.apache.maven.plugins
maven-jar-plugin
diff --git a/tx-manager/src/main/java/com/codingapi/tm/framework/utils/IpAddressUtils.java b/tx-manager/src/main/java/com/codingapi/tm/framework/utils/IpAddressUtils.java
new file mode 100644
index 000000000..3f219f2a5
--- /dev/null
+++ b/tx-manager/src/main/java/com/codingapi/tm/framework/utils/IpAddressUtils.java
@@ -0,0 +1,46 @@
+package com.codingapi.tm.framework.utils;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * create by lorne on 2017/12/12
+ */
+public class IpAddressUtils {
+
+
+ public static boolean isIpAddress(String ipAddress){
+ String ipAddressRegex = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}:([0-9]|[1-9]\\d{1,3}|[1-5]\\d{4}|6[0-5][0-9][0-3][0-5])";
+ Pattern ipAddressPattern = Pattern.compile(ipAddressRegex);
+ Matcher matcher = ipAddressPattern.matcher(ipAddress);
+ return matcher.matches();
+ }
+
+ public static boolean isIpFormat(String ipAddress){
+ return ipAddress.contains(":");
+ }
+
+ public static String getIpByDomain(String domain){
+ InetAddress ip= null;
+ try {
+ ip = InetAddress.getByName(domain);
+ } catch (UnknownHostException e) {
+ return null;
+ }
+ return ip.getHostAddress();
+ }
+
+
+ public static boolean isIp(String ipString) {
+ String ipRegex = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}";
+ Pattern pattern = Pattern.compile(ipRegex);
+ Matcher matcher = pattern.matcher(ipString);
+ return matcher.matches();
+ }
+
+
+
+
+}
diff --git a/tx-manager/src/main/java/com/codingapi/tm/manager/service/impl/MicroServiceImpl.java b/tx-manager/src/main/java/com/codingapi/tm/manager/service/impl/MicroServiceImpl.java
index 04c980131..34da55993 100644
--- a/tx-manager/src/main/java/com/codingapi/tm/manager/service/impl/MicroServiceImpl.java
+++ b/tx-manager/src/main/java/com/codingapi/tm/manager/service/impl/MicroServiceImpl.java
@@ -2,6 +2,7 @@
import com.codingapi.tm.Constants;
import com.codingapi.tm.config.ConfigReader;
+import com.codingapi.tm.framework.utils.IpAddressUtils;
import com.codingapi.tm.framework.utils.SocketManager;
import com.codingapi.tm.manager.service.MicroService;
import com.codingapi.tm.model.TxServer;
@@ -18,8 +19,6 @@
import java.util.ArrayList;
import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
/**
* create by lorne on 2017/11/11
@@ -43,19 +42,10 @@ public class MicroServiceImpl implements MicroService {
private EurekaClient eurekaClient;
-
-
/** logger */
private static final Logger logger = LoggerFactory.getLogger(MicroServiceImpl.class);
- private boolean isIp(String ipAddress) {
- String ip = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}";
- Pattern pattern = Pattern.compile(ip);
- Matcher matcher = pattern.matcher(ipAddress);
- return matcher.matches();
- }
-
public List getConfigServiceInstances() {
Application application = eurekaClient.getApplication(tmKey);
@@ -70,10 +60,7 @@ public TxState getState() {
TxState state = new TxState();
//String ipAddress = EurekaServerContextHolder.getInstance().getServerContext().getApplicationInfoManager().getEurekaInstanceConfig().getIpAddress();
- String ipAddress = discoveryClient.getLocalServiceInstance().getHost();
- if(!isIp(ipAddress)){
- ipAddress = "127.0.0.1";
- }
+ String ipAddress = getIp(discoveryClient.getLocalServiceInstance().getHost());
state.setIp(ipAddress);
state.setPort(Constants.socketPort);
state.setMaxConnection(SocketManager.getInstance().getMaxConnection());
@@ -90,18 +77,28 @@ public TxState getState() {
}
+ private String getIp(String ipAddress){
+ if(!IpAddressUtils.isIp(ipAddress)){
+
+ ipAddress = IpAddressUtils.getIpByDomain(ipAddress);
+
+ if(ipAddress==null||!IpAddressUtils.isIp(ipAddress)) {
+ ipAddress = "127.0.0.1";
+ }
+ }
+ return ipAddress;
+ }
+
private List getServices(){
List urls = new ArrayList<>();
List instanceInfos =getConfigServiceInstances();
for (InstanceInfo instanceInfo : instanceInfos) {
String url = instanceInfo.getHomePageUrl();
String address = instanceInfo.getIPAddr();
- if (isIp(address)) {
- urls.add(url);
- }else{
- url = url.replace(address,"127.0.0.1");
- urls.add(url);
- }
+ String ipAddress = getIp(address);
+
+ url = url.replace(address,ipAddress);
+ urls.add(url);
}
return urls;
}
diff --git a/tx-manager/src/main/java/com/codingapi/tm/netty/service/impl/NettyServerServiceImpl.java b/tx-manager/src/main/java/com/codingapi/tm/netty/service/impl/NettyServerServiceImpl.java
index 3f458cf35..c77b42f87 100644
--- a/tx-manager/src/main/java/com/codingapi/tm/netty/service/impl/NettyServerServiceImpl.java
+++ b/tx-manager/src/main/java/com/codingapi/tm/netty/service/impl/NettyServerServiceImpl.java
@@ -2,10 +2,8 @@
import com.codingapi.tm.Constants;
import com.codingapi.tm.config.ConfigReader;
-import com.codingapi.tm.manager.service.TxManagerService;
import com.codingapi.tm.netty.handler.TxCoreServerHandler;
import com.codingapi.tm.netty.service.NettyServerService;
-
import com.codingapi.tm.netty.service.NettyService;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelInitializer;
diff --git a/tx-plugins-db/pom.xml b/tx-plugins-db/pom.xml
index 37706a102..214de51a6 100644
--- a/tx-plugins-db/pom.xml
+++ b/tx-plugins-db/pom.xml
@@ -6,7 +6,7 @@
com.codingapi
tx-lcn
- 4.0.0
+ 4.0.3.M1
com.codingapi
diff --git a/tx-plugins-nodb/pom.xml b/tx-plugins-nodb/pom.xml
index 2a3a4f0ec..e40ef0d56 100644
--- a/tx-plugins-nodb/pom.xml
+++ b/tx-plugins-nodb/pom.xml
@@ -6,7 +6,7 @@
com.codingapi
tx-lcn
- 4.0.0
+ 4.0.3.M1
diff --git a/tx-plugins-redis/pom.xml b/tx-plugins-redis/pom.xml
index ca9bf5b38..0433c20cd 100644
--- a/tx-plugins-redis/pom.xml
+++ b/tx-plugins-redis/pom.xml
@@ -7,7 +7,7 @@
com.codingapi
tx-lcn
- 4.0.0
+ 4.0.3.M1
com.codingapi
@@ -15,6 +15,7 @@
${lcn.last.version}
tx-plugins-redis
+ https://github.com/codingapi/tx-lcn
tx-plugins-redis project for Spring Boot