久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    SpringBoot使用JNDI數據源

     自由裸奔者 2020-10-21

    最近一個新項目準備使用SpringBoot,因為SpringBoot開發配置簡單些。但由于公司部署流程的原因,測試和生產環境需要將代碼打成WAR包部署到Tomcat下,并且數據庫連接使用JNDI數據源方式配置Tomcat里面。

    這種部署方式本沒有問題,但是在本地環境我們用main方式啟動的SpringBoot時就遇到問題,由于Tomcat是以內核的方式嵌入在SpringBoot里面的,那怎樣配置JNDI數據源呢?

    SpringBoot里使用JNDI數據源很簡單,只需在application.properties文件中配置一下就可以了,如:

    1. # JNDI數據源。開發環境在代碼中配置,測試、生產在容器中配置。
    2. spring.datasource.jndi-name=java:comp/env/jdbc/timcore/DefaultDS
    3. 復制代碼

    測試和生成環境,以WAR包方式部署在Tomcat里的情況,需要在Tomcat的conf/context.xml文件添加配置,如:

    1. <Resource
    2. name='jdbc/timcore/DefaultDS'
    3. url='jdbc:postgresql://30.31.0.14:7523/timc'
    4. username='timcopr'
    5. password='123456'
    6. type='javax.sql.DataSource'
    7. auth='Container'
    8. driverClassName='org.postgresql.Driver'
    9. maxIdle='30'
    10. maxWait='10000'
    11. maxActive='100'
    12. />
    13. 復制代碼

    本地以main方式啟動的需要修改Tomcat內核,打開JNDI數據源,并配置。比如我們項目是dev環境才是Main方式啟動,則需要:

    1,新增application-dev.properties文件:

    1. # DEV環境才會加載
    2. DataSource.jndiName=jdbc/timcore/DefaultDS
    3. DataSource.auth=Container
    4. DataSource.driverClassName=org.postgresql.Driver
    5. DataSource.url=jdbc:postgresql://30.31.0.14:7523/timc
    6. DataSource.username=timcopr
    7. DataSource.pwd=123456
    8. DataSource.maxActive=100
    9. DataSource.maxIdle=30
    10. DataSource.maxWait=10000
    11. 復制代碼

    2,創建一個PropConfig類,接收配置:

    1. @Getter
    2. @Setter
    3. @Component
    4. @ConfigurationProperties(prefix = 'DataSource')
    5. public class DataSourcePropConfig {
    6. private String jndiName;
    7. private String auth;
    8. private String driverClassName;
    9. private String url;
    10. private String username;
    11. private String pwd;
    12. private String maxActive;
    13. private String maxIdle;
    14. private String maxWait;
    15. }
    16. 復制代碼

    3,代碼的方式修改配置,加入數據源:

    1. @Configuration
    2. public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
    3. @Resource
    4. private DataSourcePropConfig dataSourcePropConfig;
    5. // 開發環境手工添加數據源。測試、生產環境部署在容器中,在容器中配置數據源。
    6. @ConditionalOnProperty(name = 'spring.profiles.active', havingValue = 'dev')
    7. @Bean
    8. public TomcatEmbeddedServletContainerFactory servletContainerFactory() {
    9. return new TomcatEmbeddedServletContainerFactory() {
    10. @Override
    11. protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) {
    12. tomcat.enableNaming(); // 打開JNDI數據源
    13. return super.getTomcatEmbeddedServletContainer(tomcat);
    14. }
    15. @Override
    16. protected void postProcessContext(Context context) {
    17. ContextResource resource = new ContextResource();
    18. resource.setType(DataSource.class.getName());
    19. resource.setName(dataSourcePropConfig.getJndiName());
    20. resource.setAuth(dataSourcePropConfig.getAuth());
    21. resource.setProperty('driverClassName', dataSourcePropConfig.getDriverClassName());
    22. resource.setProperty('url', dataSourcePropConfig.getUrl());
    23. resource.setProperty('username', dataSourcePropConfig.getUsername());
    24. resource.setProperty('password', dataSourcePropConfig.getPwd());
    25. // 連接池配置,和測試、生產配置一致。
    26. resource.setProperty('maxActive', dataSourcePropConfig.getMaxActive()); // 最大連接數
    27. resource.setProperty('maxIdle', dataSourcePropConfig.getMaxIdle()); // 空閑連接數
    28. resource.setProperty('maxWait', dataSourcePropConfig.getMaxWait()); // 最大等待時間
    29. context.getNamingResources().addResource(resource);
    30. }
    31. };
    32. }
    33. }
    34. 復制代碼

    這樣同一份代碼就可以兼容兩種方式了。

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 99久久精品费精品国产一区二| 成人欧美一区二区三区的电影| 国产黑色丝袜在线观看下| 伊人热热久久原色播放WWW| 西西午夜无码大胆啪啪国模 | 国产四虎永久免费观看| 国产乱码一区二区三区免费 | 成人免费无遮挡在线播放| 国产成人啪精品午夜网站| 狠狠做五月深爱婷婷伊人| 欧美人和黑人牲交网站上线| 中文字幕人妻日韩精品| 12裸体自慰免费观看网站| 国产精品亚洲二区在线播放| 婷婷成人丁香五月综合激情| 成人一区二区不卡国产| 久久人搡人人玩人妻精品首页| 少妇上班人妻精品偷人| 久久精品夜夜夜夜夜久久| 免费人成网站免费看视频| 精品无码一区二区三区电影| 亚洲人妻系列中文字幕| 18禁美女裸体爆乳无遮挡| 午夜免费无码福利视频麻豆| 国产精品自在欧美一区| 东京热人妻丝袜无码AV一二三区观| 天天做天天爱天天爽综合网| 小嫩批日出水无码视频免费| 日日摸日日碰夜夜爽亚洲| AV区无码字幕中文色| 国产AV影片麻豆精品传媒| A级大胆欧美人体大胆666 | 成人网站免费观看永久视频下载| 无码人妻少妇色欲AV一区二区| 成年女人碰碰碰视频播放| 国产精品中文字幕久久| 国产精品免费久久久久影院| 亚洲欧洲专线一区| 少妇高潮水多太爽了动态图| 欧洲国产精品无码专区影院| 少妇被粗大的猛进出69影院|