quartz 配置jndi读取
时间: 2025-05-15 18:08:36 浏览: 13
Quartz 是一个功能强大的作业调度框架,在实际应用中可以将其配置通过 JNDI(Java Naming and Directory Interface,Java 命名和目录接口)的方式读取。这种方式常用于将 Quartz 的数据源、线程池等资源从外部容器(如 Tomcat 或其他 Java EE 容器)注入。
以下是关于如何配置 Quartz 使用 JNDI 来读取资源配置的具体步骤:
### 步骤 1: 配置 `quartz.properties`
`quartz.properties` 文件是 Quartz 调度器的核心配置文件。为了支持 JNDI 数据源绑定,需要指定以下属性:
```properties
# 指定 Quartz 的 JobStore 类型为 JDBCJobStore
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
# 启用对 JNDI 的支持
org.quartz.dataSource.myDS.jndiName = java:/comp/env/jdbc/MyDataSource
org.quartz.dataSource.myDS.provider = jndi
# 设置其它必要的配置项
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
```
其中关键部分在于:
- `myDS`: 这是你自定义的数据源名称。
- `java:/comp/env/jdbc/MyDataSource`: 表示你在服务器环境中配置的 JNDI 名称。
### 步骤 2: 在应用服务器上设置 JNDI 数据源
例如在 Tomcat 中,可以在 `context.xml` 或者 `server.xml` 文件中添加类似如下内容:
```xml
<Resource name="jdbc/MyDataSource" auth="Container"
type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000"
username="your_username" password="your_password" driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/quartz_db"/>
```
这里需要注意的是,JNDI 名字必须与 `quartz.properties` 中引用的名字完全匹配。
### 步骤 3: 初始化 Quartz Scheduler
初始化时无需额外操作,只要正确设置了上述两个地方即可自动加载所需的配置信息。如果一切正常运行,则 Quartz 将会利用由 JNDI 提供的数据源连接到数据库,并按照设定计划执行任务。
#### 注意事项:
- 确保你的 Web 应用程序有权限访问所配置好的 JNDI 对象;
- 测试环境下的所有路径及凭据应准确无误;
阅读全文
相关推荐








