Dubbo Admin 2.5.3における「Bean property 'URIType' is not writable」エラーの解決策

Dubbo Admin 2.5.3をJDK 1.8環境で実行すると、内部で使用されているSpringおよびCitrusフレームワークの互換性の問題により、Bean property 'URIType' is not writable or has an invalidというエラーが発生することがあります。この問題は、JDK 1.8でのリフレクションの挙動変化に起因するものです。

最も確実な回避策は、Dubbo Adminを実行するTomcatのランタイムをJDK 1.7に固定することです。システム全体の環境変数を変更せずに、特定のTomcatインスタンスのみJDK 1.7を使用するように設定する方法を説明します。

1. catalina.batの編集

Tomcatのbinディレクトリ内にあるcatalina.batを開き、実行時に使用されるJava環境を明示的に指定します。ファイルの冒頭付近、または実行コマンドの直前に以下の設定を追加します。

rem ---------------------------------------------------------------------------
rem Set JDK 1.7 for Dubbo Admin Compatibility
rem ---------------------------------------------------------------------------
set "JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80"
set "JRE_HOME=C:\Program Files\Java\jdk1.7.0_80\jre"

echo Using JAVA_HOME: %JAVA_HOME%

2. setclasspath.batの編集

次に、同じくbinディレクトリにあるsetclasspath.batを修正します。このファイルはJavaの実行バイナリを定義する箇所です。既存の_RUNJAVAなどの定義を、JDK 1.7のパスへ直接書き換えます。

rem ---------------------------------------------------------------------------
rem Overwrite Java Executable Paths
rem ---------------------------------------------------------------------------
set "_RUNJAVA=%JAVA_HOME%\bin\java.exe"
set "_RUNJDB=%JAVA_HOME%\bin\jdb.exe"
set "_RUNJAVAC=%JAVA_HOME%\bin\javac.exe"

これらの変更を保存した後、startup.batを実行すると、ログにコンポーネントの初期化成功(WebxComponents: initialization completed)が表示され、正常に起動します。

3. Dubbo Adminの設定確認

起動に失敗する場合は、WEB-INF/dubbo.properties内のレジストリ設定が正しいかどうかも併せて確認してください。特にZookeeperのアドレス指定に誤りがないかチェックします。

# zookeeperの接続設定例
dubbo.registry.address=zookeeper://127.0.0.1:2181

# 管理コンソールのログインパスワード
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest

なお、スキーマファイルの読み込みエラー(dubbo.xsdが見つからない等)が発生する場合は、XML設定内のURLパスに特殊文字や予期しないディレクトリ構造が含まれていないかを確認してください。

タグ: Dubbo Java Tomcat ZooKeeper Spring

11月4日 14:13 投稿