{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.xmlJBOSS_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.xmlJBOSS_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方言の指定


HibernateSQL方言を吸収しているようで、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 <==に変更