window 下 对 JBOSS / WildFly 使用 jndi 配置oracle连接并 部署 springboot项目

参考链接
https://blog.csdn.net/qq_17058993/article/details/83106182

一 背景:

springboot项目、oracle数据库、jboss-eap7.1(或者wildfly-18.0.1.Final都介意)、jdk8

1 springboot有内置tomcat,若是要用jboss jndi部署,则他设置为provide,防止打包打入 pom.xml

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-tomcat</artifactId>
	<scope>provided</scope>
</dependency>

2 由于采用JNDI配置数据源,因此原本在application.properties设置的连接数据库信息spring.datasource这些都可以注释掉,选择在jboss的standlone.xml中配置

3 Application.java要改为继承SpringBootServletInitializer才可以部署

@SpringBootApplication
public class Application extends SpringBootServletInitializer{

    public static void main(String[] args) {
        final SpringApplication application = new SpringApplication(com.foresealife.pm.Application.class);
        application.run(args);
    }
    
    @Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
	{
		return application.sources(Application.class);
	}

}

4 由于采用JNDI配置,因此我程序要加入数据源JNDI的引入信息,我选择在Application.java的同级目录下新增一个文件 RootConfig.java
这是第一种方式。也可以直接在properties加个配置,两种方式都行
第一种方式在application.properties添加

spring.datasource.jndi-name=java:/TxLife

第二种方式新增一个文件 RootConfig.java


import org.springframework.boot.autoconfigure.quartz.SchedulerFactoryBeanCustomizer;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.annotation.Order;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jndi.JndiObjectFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;

@Configuration
@EnableTransactionManagement
@EnableCaching
@Order(0)
public class RootConfig {
    private static final String JNDI_NAME = "java:/TxLife";
	@Bean
	@Primary
	public JndiObjectFactoryBean jndiDataSource(){
	JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
	jndiObjectFactoryBean.setJndiName(JNDI_NAME);
	return jndiObjectFactoryBean;
	}
    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean
    public SchedulerFactoryBeanCustomizer customizeQuartz(DataSource dataSource)
    {
        return schedulerFactoryBean -> schedulerFactoryBean.setDataSource(dataSource);
    }
}

==================================================

以上是java项目要做的准备,接下来是jboss部署的配置

二 添加连接oracle用的jar包依赖

在这里插入图片描述
在modules下新增com/oracle/main文件夹,新增数据库驱动包ojdbc,这个驱动包在自己安装的oracle本地路径中:oraclexe\app\oracle\product\xxx版本号\server\jdbc\lib

module.xml文件内容为

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.oracle">
    <resources>
        <resource-root path="ojdbc8-12.2.0.1.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.resource.api"/>
        <module name="javax.transaction.api"/> <!-- See * below -->
   </dependencies>
</module>

三、配置数据源与驱动

jdbc:oracle:thin:@127.0.0.1:1521:XE // 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名

打开文件%JBOSS_HOME%/standalone/configuration/standalone.xml,全文搜索”datasources”,可以找到如下标签: h2可以不用管,直接加在他前面,加一个DataSource以及driver

<subsystem xmlns="urn:jboss:domain:datasources:5.0">
            <datasources>
				<datasource jndi-name="java:/TxLife" pool-name="TxLife">
                    <connection-url>jdbc:oracle:thin:@127.0.0.1:1521:XE</connection-url>
                    <driver>oracle</driver>
                    <pool>
                        <min-pool-size>1</min-pool-size>
                        <max-pool-size>50</max-pool-size>
                    </pool>
                    <security>
                        <user-name>adsffdsa</user-name>
                        <password>fdsafdsa</password>
                    </security>
                    <validation>
                        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
                        <validate-on-match>true</validate-on-match>
                        <background-validation>false</background-validation>
                        <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
                        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
                    </validation>
                </datasource>
                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                <drivers>
					<driver name="oracle" module="com.oracle">
                        <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
                    </driver>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>

添加部分为
在这里插入图片描述
在这里插入图片描述

四启动服务器

1 将生成的war放\jboss-eap-7.1\standalone\deployments 下
2 双击-eap-7.1\bin\standalone.bat即可完成启动

很多时候数据库源配置不成功,导致部署一直出问题,我们可以选择先不部署单元,直接启动jboss服务器,在控制台查看是否服务器启动成功即可。(即少掉放在deployment部署文件,你也可以选择不。。)
双击-eap-7.1\bin\standalone.bat即可完成启动后,打开127.0.0.1:8080
进入
在这里插入图片描述
3 点击Administration Console.第一次进入由于可能没有创建用户,进不去,可以双击\jboss-eap-7.1\bin\add-user.bat按照提示创建,就可以进入管理界面了

4找到自己配置的数据源进行测试。由于我界面都有水印,这张图片是网上,不同版本有一点点不一样。在这里插入图片描述

出现下面表示连接成功
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值