1. 程式人生 > >【dubbo】dubbo-admin與JDK1.8的不相容

【dubbo】dubbo-admin與JDK1.8的不相容

【問題概述】

    最近在學習dubbo,用dubbo-admin原始碼打成的war包,安裝dubbo管理平臺,部署到本機的tomcat遇到了問題,提示如下:

ERROR context.ContextLoader - Context initialization failed  
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uriBrokerService': Cannot create inner bean '(inner bean)' of type
[com.alibaba.citrus.service.uribroker.impl.URIBrokerServiceImpl$URIBrokerInfo] while setting bean property 'brokers' with key [0]; nested excepti on is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#25': Cannot create inner bean 'server' of type
[com.alibaba.citrus.service.uribroker.uri.GenericURIBroker] while setting constructor argument; nested exception is org.springframework.beans.fact ory.BeanCreationException: Error creating bean with name 'server': Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property
'URIType' of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]: Bean property 'URIType' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:230) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:287)

【環境概述】

    · windows8 作業系統

    · Java version “1.8.0_73”

    · dubbo-admin 2.5.3

    · apache-tomcat-7.0.57

【解決方案】

    修改dubbo-admin的pom依賴,重新打一個war包,部署。

        1、webx的依賴改為3.1.6版;

<dependency>
        <groupId>com.alibaba.citrus</groupId>
        <artifactId>citrus-webx-all</artifactId>
        <version>3.1.6</version>
</dependency>

        2、新增velocity的依賴,版本為1.7;

<dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>1.7</version>
</dependency>

        3、對依賴項dubbo新增exclusion,避免引入舊spring;

<dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>${project.parent.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
        </exclusions>
</dependency>

        4、webx已有spring3以上的依賴,因此註釋掉dubbo-admin裡面的spring依賴

<!--<dependency>-->
        <!--<groupId>org.springframework</groupId>-->
        <!--<artifactId>spring</artifactId>-->
<!--</dependency>-->

【總結】

    通過對原始碼做以上修改後,從Eclipse中重新生成的war包,便解決了不相容的問題。資源連結地址:dubbo-admin war包檔案,可在jdk1.8環境下直接部署到tomcat。