• JBoss EAP 为应用项目配置PostgreSQL数据源


    一、前言

    客户在计划将业务向云平台迁移,这些天也在测试将数据库由Oracle替换为开源的PostgrSQL。为什么选PostgreSQL?因为这是对应用程序代码修改最小的方案,没有之一!

    PostgreSQL数据库的简要信息为:服务器loacalhost,端口5432,数据库projadm,用户名/密码:projadm/proj2013。

    开始前,在https://jdbc.postgresql.org/download.html下载与JBoss版本和JDK版本匹配的JDBC驱动包,存放某目录(最好不含汉字或特殊字符,因为随后用到的jboss-cli对复制粘贴太差劲),假设为D:PostgreSQLpostgresql-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.0in

    standalone.bat

     3) 另外打开一个cmd窗口,在jboss-cli命令行增加PostgreSQL数据源相关设置:

    cd D:JBOSS-EAP-7.0in

    jboss-cli.bat

    进入jboss-cli命令行模式后,依次执行:

    #连接jboss实例
    connect
    # 增加PostgreSQL模块
    module add --name=com.postgresql --resources=D:PostgreSQLpostgresql-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)
    data-source remove --name=OracleDS

    三、检验

    用文本编辑器打开D:JBOSS-EAP-7.0standaloneconfigurationstandalone.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.0modulescom目录多出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代码或者调整表字段类型。
  • 相关阅读:
    【cs231n笔记】assignment1之KNN
    【数据】常用卫星遥感数据下载地址整理
    ArcGIS中重采样栅格像元匹配问题
    python调用HEG工具批量处理MODIS数据
    Google Earth Engine学习资源分享
    地表温度反演的单通道方法辩异
    Android Studio无法下载sdk的问题
    Anaconda常用命令
    AMSR-E/AMSR-2数据介绍与下载
    NASA HEG tool安装心得
  • 原文地址:https://www.cnblogs.com/wggj/p/7778999.html
Copyright © 2020-2023  润新知