JBoss EAP 為應用項目配置PostgreSQL資料來源

來源:互聯網
上載者:User

標籤:load   一個   char   複製   cli   html   main   使用者名稱   期望   

一、前言

客戶在計劃將業務向雲平台遷移,這些天也在測試將資料庫由Oracle替換為開源的PostgrSQL。為什麼選PostgreSQL?因為這是對應用程式代碼修改最小的方案,沒有之一!

PostgreSQL資料庫的簡要資訊為:伺服器loacalhost,連接埠5432,資料庫projadm,使用者名稱/密碼:projadm/proj2013。

開始前,在https://jdbc.postgresql.org/download.html下載與JBoss版本和JDK版本匹配的JDBC驅動包,存放某目錄(最好不含漢字或特殊字元,因為隨後用到的jboss-cli對複製粘貼太差勁),假設為D:\PostgreSQL\postgresql-42.1.4.jar。

二、JBoss EAP配置

1)  設定環境變數JBOSS_HOME

如果電腦上安裝了多個JBoss,此步驟不可忽略,否則後續步驟更改的是該環境變數所指JBoss執行個體的配置,而很可能不是期望的應用項目。假設為D:\JBOSS-EAP-7.0。

2) 開啟一個cmd視窗,啟動JBoss(假設為standalone模式):

cd D:\JBOSS-EAP-7.0\bin

standalone.bat

 3) 另外開啟一個cmd視窗,在jboss-cli命令列增加PostgreSQL資料來源相關設定:

cd D:\JBOSS-EAP-7.0\bin

jboss-cli.bat

進入jboss-cli命令列模式後,依次執行:

#串連jboss執行個體connect# 增加PostgreSQL模組module add --name=com.postgresql --resources=D:\PostgreSQL\postgresql-42.1.4.jar --dependencies=javax.api,javax.transaction.api# 增加jdbc-driver驅動描述/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=com.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)# 增加jndi描述data-source add --name=PostgresDS --jndi-name=java:jboss/PostgresDS --driver-name=postgresql --connection-url=jdbc:postgresql://localhost:5432/projadm --user-name=projadm --password=proj2013 --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter#刪除Oracle資料來源(OracleDS)xa-data-source remove --name=OracleDS
三、檢驗

用文字編輯器開啟D:\JBOSS-EAP-7.0\standalone\configuration\standalone.xml,會尋找到關於PostgreSQL的jndi和driver的描述資訊,內容大致為:

<profile>…<subsystem xmlns="urn:jboss:domain:datasources:4.0">    <datasources>        <datasource jndi-name="java:jboss/PostgresDS" pool-name="PostgresDS">          <connection-url>jdbc:postgresql://localhost:5432/projadm</connection-url>          <driver>postgresql</driver>          <security>              <user-name>projadm</user-name>              <password>proj2013</password>          </security>          <validation>              …          </validation>       </datasource>       <drivers>          …          <driver name="postgresql" module="com.postgresql">          <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>          </driver>       </drivers>    </datasources> </subsystem>        …</profile>

此外,在D:\JBoss-EAP-7.0\modules\com目錄多出postgresql檔案夾,其下的main子檔案夾包含驅動包postgresql-42.1.4.jar和module.xml設定檔,內容大致為:

    <resources>        <resource-root path="postgresql-42.1.4.jar"/>    </resources>    <dependencies>        <module name="javax.api"/>        <module name="javax.transaction.api"/>    </dependencies>
四、應用修改

這部分會因所使用的架構不同而有很大差異,只列出本項目所涉及到一些內容。

  • maven工程修改pom,增加對驅動檔案的依賴:
   <dependency>          <groupId>org.postgresql</groupId>          <artifactId>postgresql</artifactId>          <version>${postgresql.version}</version>      </dependency>  
  • 某些情況下,可能需要手工拷貝驅動檔案postgresql-42.1.4.jar到相應的lib目錄;
  • JPA工程修改persitense.xml,替換原來與Oracle有關的部分:
<persistence-unit name="jpaUnit" transaction-type="JTA">    <provider>org.hibernate.ejb.HibernatePersistence</provider>    <!-- <jta-data-source>java:jboss/datasources/HSOracleDS</jta-data-source> -->    <jta-data-source>java:jboss/PostgresDS</jta-data-source>    <properties>        <!-- <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect" /> -->        <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />    …
  • 應用程式中涉及到的其它配置,具體項目具體分析吧;
  • java代碼中,除一些明顯之處(如使用nvl函數、decode函數、sysdate)以外,令人更頭疼的是類型匹配。由於PostgreSQL對類型匹配要求嚴格,不像Oracle那樣默許decimal與varchar、decimal與boolean等相互間的隱式轉換,需要修改Java代碼或者調整表欄位類型。

JBoss EAP 為應用項目配置PostgreSQL資料來源

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.