1. 程式人生 > >dubbo 初始化兩次的錯誤 Duplicate application configs

dubbo 初始化兩次的錯誤 Duplicate application configs

這是錯誤提示:Duplicate application configs: <dubbo:application name="demo-provider" id="demo-provider" /> and <dubbo:application name="demo-provider" id="demo-provider2" />

最近在eclipse上搭建dubbo+spring+mybatis。provider啟動是這樣的。用註釋段啟動沒問題,非註釋段啟動就報這個錯了。

public class DemoProviderTest {


//    public static void main(String[] args) throws Exception {
//        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
//                new String[] {"META-INF/spring/serviceApplicationContext.xml"});
//        context.start();
//        
//        System.out.println("Hello!");
//        
//        System.in.read(); // press any key to exit
//        context.close();
//    }
public static void main(String[] args) throws Exception {
com.alibaba.dubbo.container.Main.main(args);
}
}

在日誌裡有這麼一段,相當於載入了兩次。

Pre-instantiating singletons in @16eabae: defining beans [com.alibaba.dubbo.config.spring.AnnotationBean,demo-provider,com.alibaba.dubbo.config.ConsumerConfig,com.alibaba.dubbo.config.RegistryConfig,dubbo,org.springframework.context.support.PropertySourcesPlaceholderConfigurer#0,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.event.internalEventListenerProcessor,org.springframework.context.event.internalEventListenerFactory,com.alibaba.dubbo.config.spring.AnnotationBean2,demo-provider2,com.alibaba.dubbo.config.ConsumerConfig2,com.alibaba.dubbo.config.RegistryConfig2,dubbo2,

org.springframework.context.support.PropertySourcesPlaceholderConfigurer#1,dataSource_mysql,sqlSessionFactory,org.mybatis.spring.mapper.

我的pom檔案build段是這樣的。再次說明,是用dubbo的main方法啟動才出現的這個錯誤。

<build>
  <resources>
 
<resource>  
<!-- project開頭的變數為maven內建變數
  - ${project.build.directory}代表target目錄
-->
<targetPath>${project.build.directory}/classes</targetPath>  
<directory>src/main/resources</directory>  
<filtering>true</filtering>  
<includes>  
<include>**/*.xml</include> 
<include>**/*.properties</include>  
</includes>  
</resource>  
<!-- dubbo的main方法啟動用到的配置檔案最後需要在target/classess/META-INF/spring目錄下生成
  - 若配置檔案已在src/main/resources/META-INF/spring目錄下,則可省略targetPath
-->   
<resource>  
            <targetPath>${project.build.directory}/classes/META-INF/spring</targetPath>  
            <directory>src/main/resources</directory>  
            <filtering>true</filtering>  
            <includes>  
                <include>serviceApplicationContext.xml</include>  
            </includes>  
        </resource>  
     
  </resources>
 
  <!-- 這裡是為了在使用maven-dependency-plugin時,預防maven版本不一致導致的環境衝突 -->
<pluginManagement>  
<plugins>  
<plugin>  
<groupId>org.eclipse.m2e</groupId>  
<artifactId>lifecycle-mapping</artifactId>  
<version>1.0.0</version>  
<configuration>  
<lifecycleMappingMetadata>  
<pluginExecutions>  
<pluginExecution>  
<pluginExecutionFilter>  
<groupId>org.apache.maven.plugins</groupId>  
<artifactId>maven-dependency-plugin</artifactId>  
<versionRange>[2.0,)</versionRange>  
<goals>  
<goal>copy-dependencies</goal>  
</goals>  
</pluginExecutionFilter>  
<action>  
<ignore />  
</action>  
</pluginExecution>  
</pluginExecutions>  
</lifecycleMappingMetadata>  
</configuration>  
</plugin>  
</plugins>  
</pluginManagement> 

<plugins>
<!-- 將專案所需依賴打包到指定位置target/lib -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>  
<artifactId>maven-dependency-plugin</artifactId>  
<executions>  
<execution>  
<id>copy-dependencies</id>  
<phase>package</phase>  
<goals>  
<goal>copy-dependencies</goal>  
</goals>  
<configuration>  
<type>jar</type>  
<includeTypes>jar</includeTypes>  
<useUniqueVersions>false</useUniqueVersions>  
<outputDirectory>  
${project.build.directory}/lib  
</outputDirectory>  
</configuration>  
</execution>  
</executions>  
</plugin>

<!-- 打包jar檔案時,配置manifest檔案,加入lib包的jar依賴  -->  
<plugin>  
<groupId>org.apache.maven.plugins</groupId>  
<artifactId>maven-jar-plugin</artifactId>  
<configuration>  
<archive>
<manifest>
<mainClass>com.alibaba.dubbo.container.Main</mainClass>  
<useUniqueVersions>false</useUniqueVersions>  
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>  
</manifest>
<manifestEntries>
<!-- 在Class-Path中增加當前目錄 --> 
<Class-Path>.</Class-Path>  
</manifestEntries>
</archive>  
</configuration>  
</plugin>  

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>  
</configuration>
</plugin>

</plugins>     
         
  </build>

原因:dubbo相關的xml資源被 了兩次,在這裡。

<resource>  
<!-- project開頭的變數為maven內建變數
  - ${project.build.directory}代表target目錄
-->
<targetPath>${project.build.directory}/classes</targetPath>  
<directory>src/main/resources</directory>  
<filtering>true</filtering>  
<includes>  
<include>**/*.xml</include> 
<include>**/*.properties</include>  
</includes>  
</resource>

然後在serviceApplicationContext.xml是這樣的,注意加粗部分。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans.xsd 
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-4.2.xsd">
    
    <context:property-placeholder location="classpath*:*.properties" ignore-unresolvable="true"/>   
    <context:component-scan base-package="com.sail.demo.dubbomybatis.service"/>   
    <import resource="classpath:META-INF/spring/dubbo.xml"/>


    <import resource="classpath*:dataAccessContext.xml"/>


</beans>  

當dubbo的main方法執行時,會去讀取jar包中的配置檔案,dubbo.xml和serviceApplicationContext.xml分別讀取了一遍。

我這裡是將serviceApplicationContext.xml裡的<import resource="classpath:META-INF/spring/dubbo.xml"/>這段刪除,問題解決。

相關推薦

dubbo 初始錯誤 Duplicate application configs

這是錯誤提示:Duplicate application configs: <dubbo:application name="demo-provider" id="demo-provider" /> and <dubbo:application name=

spring context 初始導致dubbo埠被佔用

背景:一個剛開發完的小專案部署到測試環境,總是部署失敗,直觀的報錯是error日誌中有dubbo埠被佔用。專案為springmvc框架+tomcat。 錯誤日誌為: [0518 19:36:41 354 ERROR] [main] web.context.Context

Tomcat啟動時項目重復加載,導致資源初始的問題

n) water term clas pps webapps eclips jsb nts 最近在項目開發測試的時候,發現Tomcat啟動時項目重復加載,導致資源初始化兩次的問題 導致該問題的原因: 如下圖:在Eclipse中將Server Locations設置為“Us

Tomcat啟動時項目重復加載,導致資源初始

ati 解決 class onf dep alt doc ack div 一、現象: 每次啟動Tomcat 的時候,工程會被加載兩次 二、原因: 在tomcat/conf/server.xml配置虛擬目錄引起,如下配置: 我們在Host標簽裏配置了appBase="w

Android應用安裝完成後開啟應用出現初始解決方案

 啟動介面加上 if (!isTaskRoot()) { finish(); return; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(

【問題記錄】eclipse啟動web專案時,spring會初始

背景:一個tomcat,一個eclipse,一個SSM框架的web專案。在eclipse中新建tomcat伺服器,預設配置,然後在伺服器配置中將Server Locations改成Use Tomcat

eclipse中tomcat啟動時專案重複載入,導致資源初始的問題

      在eclise中啟動tomcat發現同一個專案被重複載入了兩次,一直很納悶哪裡出了問題,網上大家各種要去修改appBase之類的方法也不起作用,最後偶然間發現是eclipse中tomcat設定的問題,見圖中: 勾上標紅的選項,就OK了!!!

專案部署到tomcat Webapps中後導致 WebApplicationContext 初始問題

現象: 之前使用 @PostConstruct方法執行了兩次,原以為是包掃描了兩次導致的,後來發現配置都是正確的。通過eclipse控制檯看到日誌中WebApplicationContext 初始化兩次 原因: 釋出的時候是以根路徑訪問的從而導致tomcat 會發布

陣列的初始種方式?初始常見錯誤

陣列是儲存同一種資料型別多個元素的集合。 a:動態初始化 只指定長度,由系統給出初始化值 格式: * 資料型別[] 陣列名 = new 資料型別[陣列長度]; * int[] arr = new int[5]; b:靜態

WCF中的ServiceHost初始種方式

wcf pre res body BE world typeof OS words 1 代碼方式 using(ServiceHost host=new ServiceHost(typeof(HelloWordService))) { host.AddSe

dubbo應用既當提供者又當消費者java.lang.IllegalStateException: Duplicate application configs

AR def 原因 art ati tee nco tail name 一個dubbo的應用啟動時報錯:java.lang.IllegalStateException: Duplicate application configs。原因如下: 當一個應用既當提供者和消費者時,

python單例模式控制成只初始,常規型的python單例模式在新式類和經典類中的區別。

spa alt let __main__ python2 urn 時間 div 分享 單例模式的寫法非常多,但常規型的單例模式就是這樣寫的,各種代碼可能略有差異,但核心就是要搞清楚類屬性 實例屬性,就很容易寫出來,原理完全一模一樣。 如下: 源碼: class

初始虛擬機器錯誤 - Error occurred during initialization of VM

文章目錄 1 環境配置資訊 1.1 伺服器配置資訊 1.2 Tomcat啟動引數 2 問題描述 3 問題解決 4 關於vm.overcommit_memory引數的說明 4.1 vm.overcommit

執行SQL報ORA-01810格式程式碼出現錯誤

出現這個錯誤是由於ORACLE對HH和mm這種格式支援的不好。  可以修改成如下格式 yyyy-MM-dd hh24:mi:ss 這種格式出現多少次都不會報錯。 SQL如下: select to_char(to_date(to_char(to_date(to_char(s

SQL安裝服務起不來,報錯TDSSNICLIENT初始失敗,錯誤0X80092004

TDSSNIClient初始化失敗,錯誤0x80092004,狀態程式碼0x80。原因:無法初始化SSL支援。 TDSSNIClient初始化失敗,錯誤0x80092004,狀態程式碼0x1。原因:初始化因基礎結構錯誤而失敗。由於網路庫中的內部錯誤,無法啟動網路庫。   經過幾天的搜尋

HorizontalScrollView 初始第一時使用smoothScrollTo無效的解決辦法

最近使用HorizontalScrollView 來封裝水平滾動佈局時 在初始化後第一次呼叫smoothScrollTo時 沒有發生滾動 通過post時發現可行 在此做為筆記 post(new Runnable() { @Override public void

深入理解java虛擬機器(三)(一個類載入器只初始類物件,不同類載入器可以對同一類物件進行初始

package com.ygl; class Final{public static final int x=6/3;//此處x在編譯時能計算出值,是編譯時的常量,則System.out.println(Final.x);直接輸出值,不再執行下面static(前提是fina

sql 更新date欄位報“格式程式碼出現錯誤解決方法.

原來報錯的語句:update COMPANY_RECORD t set t.valid_date = to_date('2014/11/13 12:00:00','yyyy/MM/dd HH:mm:ss ');        正確的語句:update COMPANY_REC

Java執行時環境初始時出現錯誤,你可能需要重灌Flash

安裝了Adobe Flash CS4的版本,由於是漢化綠化版,再加之之前一直用慣了flash8.0,很不習慣的是他的操作介面,特別可惡的是經常出現假死狀態。於是放棄這個版本,安裝了CS3的,畢竟8.0版的ActionScript 2.0已經逐漸被拋棄。3.0的已經在很大程度上

分散式任務排程平臺XXL-JOB--原始碼解析三:xxl-job-admin排程中心原始碼解析之初始個Thread工作執行緒

 xxl-job-admin初始化工作 1.1 啟動時, 載入applicationcontext-xxl-job-admin.xml, 初始化spring容器 <!-- 這個排程中心,在啟動的時候,會做很多初始化的工作 ,比如:執行器資訊,註冊機器列表等資訊 --