JBoss AS 5.1.0でHSQLDBをサーバーモードで起動するための手順

JBoss AS 5.1.0でHSQLDBをサーバーモードで起動するための手順を以下にメモします。

1 hsqldb-ds.xmlを修正する

[サーバーディレクトリー]\deploy\hsqldb-ds.xml

を開き、ファイル内のコメントを参考にしてインメモリーモード設定をサーバーモードに切り替えます。修正箇所は3箇所あります。修正後のファイルを添付します。hsqldb-ds.xml 直

2 bindings-jboss-beans.xmlを修正する

[サーバーディレクトリー]\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml

の353行目あたりのコメントアウトされている以下の部分を有効にします。

            <bean class="org.jboss.services.binding.ServiceBindingMetadata">
               <property name="serviceName">jboss:service=Hypersonic</property>
               <property name="port">1701</property>
               <property name="description">TCP/IP socket for remote connection to Hypersonic database</property>
            </bean>

特に2番目の手順を忘れると以下の例外となりサーバーが起動しないため注意が必要です。

12:40:56,927 ERROR [AbstractKernelController] Error installing to Configured: name=jboss:service=Hypersonic state=Instantiated mode=Manual requiredState=Configured
org.jboss.deployment.DeploymentException: Error configuring attribute Port
	at org.jboss.deployment.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:52)
	at org.jboss.system.metadata.ServiceAttributeMetaData.getValue(ServiceAttributeMetaData.java:155)
	at org.jboss.system.ServiceConfigurator.configure(ServiceConfigurator.java:151)
	at org.jboss.system.ServiceConfigurator.configure(ServiceConfigurator.java:114)
	at org.jboss.system.microcontainer.ConfigureAction.installAction(ConfigureAction.java:58)
	at org.jboss.system.microcontainer.ConfigureAction.installAction(ConfigureAction.java:42)
	at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
	at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
	at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
	at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
	at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:286)
	at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
	at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
	at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
	at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
	at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
	at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
	at org.jboss.system.ServiceController.doChange(ServiceController.java:688)
	at org.jboss.system.ServiceController.install(ServiceController.java:274)
	at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:90)
	at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)
	at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
	at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
	at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
	at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
	at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
	at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
	at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
	at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
	at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
	at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
	at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
	at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
	at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
	at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
	at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
	at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
	at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
	at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
	at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
	at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:361)
	at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
	at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
	at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
	at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
	at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
	at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
	at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
	at org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:306)
	at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271)
	at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
	at org.jboss.Main.boot(Main.java:221)
	at org.jboss.Main$1.run(Main.java:556)
	at java.lang.Thread.run(Thread.java:619)
Caused by: org.jboss.services.binding.NoSuchBindingException: No binding null found for service jboss:service=Hypersonic in set ports-default
	at org.jboss.services.binding.impl.PojoServiceBindingStore.getServiceBinding(PojoServiceBindingStore.java:98)
	at org.jboss.services.binding.ServiceBindingManager.getIntBinding(ServiceBindingManager.java:217)
	at org.jboss.services.binding.ServiceBindingManager.getIntBinding(ServiceBindingManager.java:193)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
	at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
	at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
	at org.jboss.beans.info.plugins.AbstractBeanInfo.invoke(AbstractBeanInfo.java:300)
	at org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext.invoke(AbstractKernelControllerContext.java:286)
	at org.jboss.system.metadata.ServiceValueFactoryValueMetaData.getValue(ServiceValueFactoryValueMetaData.java:154)
	at org.jboss.system.metadata.ServiceAttributeMetaData.getValue(ServiceAttributeMetaData.java:151)
	... 52 more

なにやら、5.1.0からポート設定を一元管理できるようにServiceBindingManagerというのが増えているようなのです。
http://community.jboss.org/wiki/AS5ServiceBindingManager
オープンソース徹底活用JBossSeamによるWebアプリケーション開発などの古い本(ほんの数年前発行のものですが)を参照する場合はこうした違いに注意する必要があります。
なお、IDE関連の設定についてはid:ryoasai:20100923:1285230696でメモしています。