Dubbo Admin 2.5.3 基於較老的 Spring 版本構建,與 JDK 1.8 存在兼容性問題,啟動時拋出 Bean property 'URIType' is not writable or has an invalid setter method。根因在於 JDK 1.8 對某些 Bean 属性描述符的處理變更導致 Spring 綁定失敗。
修改 Tomcat bin/ 目錄下兩個腳本,將 JAVA_HOME 指向 JDK 1.7 安裝路徑(如 D:\Java\jdk1.7.0_79)。
rem 原內容 echo Using JAVA_HOME: %JAVA_HOME% rem 修改為具體路徑 echo Using JAVA_HOME: D:\Java\jdk1.7.0_79
rem 原內容 set _RUNJAVA="%JAVA_HOME%\bin\java" set _RUNJAVAW="%JAVA_HOME%\bin\javaw" set _RUNJDB="%JAVA_HOME%\bin\jdb" set _RUNJAVAC="%JAVA_HOME%\bin\javac" rem 修改為具體路徑(.exe 後綴) set _RUNJAVA="D:\Java\jdk1.7.0_79\bin\java.exe" set _RUNJDB="D:\Java\jdk1.7.0_79\bin\jdb.exe" rem _RUNJAVAW、_RUNJAVAC 同理
保存後執行 startup.bat,控制台輸出 Server startup in xxx ms 表示成功。
INFO context.InheritableListableBeanFactory - Pre-instantiating singletons ... INFO velocity.VelocityEngine - SpringResourceLoaderAdapter : initialization complete. INFO servlet.WebxFrameworkFilter - WebxFrameworkFilter - webx: initialization completed 二月 21, 2016 8:43:23 下午 org.apache.catalina.startup.Catalina start 信息: Server startup in 32782 ms

URIType 轉換器(需深入源碼調試)。docker pull apache/dubbo-admin:2.6.0,隔離 JDK 環境。專案中引用 https://code.alibabatech.com/schema/dubbo/dubbo.xsd 導致啟動失敗,提示無法讀取 schema 文檔。

原因:Spring 嘗試遠程下載 XSD,網路不通或域名失效。
解決:將 XSD 文件下載至本地 src/main/resources/META-INF/schemas/,並在 spring.schemas 映射:
# spring.schemas http\://code.alibabatech.com/schema/dubbo/dubbo.xsd=META-INF/schemas/dubbo.xsd
注意:XSD 文件存放路徑**不能包含點(.)或以連字符(-)開頭的目錄**,否則 Spring 資源解析器會報錯。

參考:Spring 本地化 XSD 解析原理