環境によってJBoss AS5.1が起動しない場合の対処方法
java.lang.IllegalArgumentException: Wrong arguments. new for target java.lang.reflect.Constructor expected=[java.net.URI] actual=[java.io.File]
突然JBossサーバーが上記のエラーを出して起動しなくなってしまいました。検索したところ、以下に解決策が示されていました。
[JBAS-6981] AttachmentStore MC bean (org.jboss.system.server.profileservice.repository.AbstractAttachmentStore) configuration does not specify the parameter type for constructor - JBoss Issue Tracker
修正手順を以下にメモします。
サーバーディレクトリー\conf\bootstrap
配下にあるprofile.xmlの146行目を以下のように修正します。
<!-- <bean name="AttachmentStore" class="org.jboss.system.server.profileservice.repository.AbstractAttachmentStore"> <constructor><parameter><inject bean="BootstrapProfileFactory" property="attachmentStoreRoot" /></parameter></constructor> <property name="mainDeployer"><inject bean="MainDeployer" /></property> <property name="serializer"><inject bean="AttachmentsSerializer" /></property> <property name="persistenceFactory"><inject bean="PersistenceFactory" /></property> </bean> --> <bean name="AttachmentStore" class="org.jboss.system.server.profileservice.repository.AbstractAttachmentStore"> <constructor><parameter class="java.io.File"><inject bean="BootstrapProfileFactory" property="attachmentStoreRoot" /></parameter> <property name="mainDeployer"><inject bean="MainDeployer" /></property> <property name="serializer"><inject bean="AttachmentsSerializer" /></property> <property name="persistenceFactory"><inject bean="PersistenceFactory" /></property> </bean>
現状の実装だとコンストラクターが複数オーバーロードされており、環境によってランダムに選択されてしまうため、運が悪いとこの例外が発生して、JBossが起動しなくなってしまうようです。JDKのバージョンやインストールパスなどの環境面に依存するようですが、詳しい再現条件は不明です。