Repository: seata/seata
Issue: Instance will cause RMClientAT.init to execute twice

Once in the main method
// 一次是main 方法里面

>  String applicationId = "dubbo-demo-account-service";
>         String txServiceGroup = "my_test_tx_group";
>         RMClientAT.init(applicationId, txServiceGroup);

Once is the xml inside GlobalTransactionScanner
// 一次是xml 里面GlobalTransactionScanner

> if ((AT_MODE & mode) > 0) {
            RMClientAT.init(applicationId, txServiceGroup);

Will cause the AsyncWorker.init() method timerExecutor to be created 2 times and call the doBranchCommits() method.
// 会造成AsyncWorker.init()方法timerExecutor 创建2次，并调用doBranchCommits()方法

The author intended that the RMClient could be created by code or xml's GlobalTransactionScanner method, but the document did not specify the information.
// 作者本意是可以通过代码或者xml 的GlobalTransactionScanner方式去创建RMClient，但是文档没有说明该条信息

*** WE STRONGLY SUGGEST YOU TO DESCRIBE YOUR ISSUE IN ENGLISH ***

Changed files:
examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/AccountServiceImpl.java, examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/StorageServiceImpl.java, examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/OrderServiceImpl.java

diff --git a/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/AccountServiceImpl.java b/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/AccountServiceImpl.java
index ed22f2a4a..401fa22f3 100644
--- a/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/AccountServiceImpl.java
+++ b/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/AccountServiceImpl.java
@@ -56,8 +56,6 @@ public class AccountServiceImpl implements AccountService {
         String applicationId = "dubbo-demo-account-service";
         String txServiceGroup = "my_test_tx_group";
 
-        RMClientAT.init(applicationId, txServiceGroup);
-
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"dubbo-account-service.xml"});
         context.getBean("service");
         JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
diff --git a/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/OrderServiceImpl.java b/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/OrderServiceImpl.java
index 5a655b9ca..4093415ee 100644
--- a/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/OrderServiceImpl.java
+++ b/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/OrderServiceImpl.java
@@ -106,8 +106,6 @@ public class OrderServiceImpl implements OrderService {
         String applicationId = "dubbo-demo-order-service";
         String txServiceGroup = "my_test_tx_group";
 
-        RMClientAT.init(applicationId, txServiceGroup);
-
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"dubbo-order-service.xml"});
         context.getBean("service");
         JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
diff --git a/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/StorageServiceImpl.java b/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/StorageServiceImpl.java
index c67bc3d27..c6a00357f 100644
--- a/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/StorageServiceImpl.java
+++ b/examples/src/main/java/com/alibaba/fescar/tm/dubbo/impl/StorageServiceImpl.java
@@ -55,8 +55,6 @@ public class StorageServiceImpl implements StorageService {
         String applicationId = "dubbo-demo-storage-service";
         String txServiceGroup = "my_test_tx_group";
 
-        RMClientAT.init(applicationId, txServiceGroup);
-
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"dubbo-storage-service.xml"});
         context.getBean("service");
         JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");