{EJB] JBossのDBをPostgreSQL 8.0へ変更する。
1. JBOSS_HOME/serversにpostgresディレクトリを作成
2. JBOSS_HOME/servers/defaultの内容をコピーする。
3. JBOSS_HOME/servers/postgres/conf/standardjaws.xmlを編集する。
<datasource>java:/DefaultDS</datasource> <type-mapping>Hypersonic SQL</type-mapping> <debug>false</debug> の部分を <datasource>java:/DefaultDS</datasource> <type-mapping>PostgreSQL 8.0</type-mapping> <debug>false</debug> と、する。
4. JBOSS_HOME/servers/postgres/deploy/hsqldb-ds.xmlを削除する。
5. JBOSS_HOME/docs/examples/jca/postgres-ds.xmlをJBOSS_HOME/servers/postgres/deployへコピーする。
6. コピーしたpostgres-ds.xmlを編集する。
<local-tx-datasource> <jndi-name>PostgresDS</jndi-name> <connection-url>jdbc:postgresql://[servername]:[port]/[databasename] </connection-url> <driver-class>org.postgresql.Driver</driver-class> <user-name>x</user-name> <password>y</password> を <local-tx-datasource> <jndi-name>DefaultDS</jndi-name><===ここと <connection-url>jdbc:postgresql://[servername]:[port]/[databasename] </connection-url><==ここ <driver-class>org.postgresql.Driver</driver-class> <user-name>x</uer-name> <password>y</password> に変更する 接続URLとuser名とpassも忘れずに変更する。 <metadata> <type-mapping>PostgreSQL 7.2</type-mapping><==ここを </metadata> <metadata> <type-mapping>PostgreSQL 8.0</type-mapping><==こちらに </metadata>
7. JBOSS_HOME/servers/postgres/deploy/jms/hspldb-jdbc2-service.xml
8. JBOSS_HOME/servers/postgres/deploy/jms/hspldb-jdbc-state-service.xmを削除する。
9. JBOSS_HOME/doc/examples/jms/postgres-jdbc3-service.xmlをJBOSS_HOME/servers/postgres/deploy/jms/へコピーする。
<mbean code="org.jboss.mq.pm.jdbc3.PersistenceManager" name="jboss.mq:service=PersistenceManager"> <dependsoptional-attribute-name="ConnectionManager"> jboss.jca:service=DataSourceBinding,name=PostgresDS</depends><==ここ <dependsoptional-attribute-name="ConnectionManager"> jboss.jca:service=DataSourceBinding,name=DefaultDS</depends><==これに
10. JBOSS_HOME/servers/postgres/libにJDBCドライバーをコピーしhsqldb.jaを削除する。
で、PostgreSQL側に以下のテーブルが作成されました。
ejbtest=> \dt
List of relations
Schema | Name | Type | Owner
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
public | hilosequences | table | tester1
public | jms_message_log | table | tester1
public | jms_reference_log | table | tester1
public | jms_transaction_log | table | tester1
public | timers | table | tester1
(5 rows)
追記EJB3.0をインストールした場合
JBoss 4.0.3 SP1をEJB3.0を使用する為にインストーラを用いてインストールした場合、上記を行ったあとは hilodequencesテーブルは作成されてませんでした。
postgres-jdbc3-service.xmlにはCreate Table文が4つしかなかったので問題ないと思います。
追記SQL方言の指定
HibernateでSQL方言を吸収しているようで、Create Table文でエラーになったのでJBOSS_HOME/server/postgres/deploy/ejb3.deployer/META-INF/persistence.propertiesの下記部分を修正
hibernate.dialect=org.hibernate.dialect.HSQLDialect <==ここを
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect <==に変更