爲了項目中可以定期定時的生成某些報表。比如定期生成貨幣匯率表,國家之間的話費通訊費用。於是運用了
Quartz
框架,以任務調度的方式來完成這些任務。
但是在輸出報表的時候,發現
ServletActionContext.getServletContext().getRealPath("/")
獲取不到本
web
的根目錄。後來搜索很多資料,才了解到。
Quartz
是獨立與另個線程,它的上下文不是
struts2
中類
ServletActionContext
的上下文
(
本項目用
struts2
框架
)
,而是自己類
JobExecutionContext
的上下文。所以是取不到本項目的根目錄。
後來,我采用的方法是,
ClassLoader
类提供的一些方法解決的。
先獲得
classpath
的路徑,然後解析出本項目的根目錄,也許這樣編碼兼容性不是很好,但是暫時是這么解決的。部分代碼如下:
String temp = Constant.class.getResource("/").getPath();
//
獲取
classpath
路徑
temp = temp.substring(0, temp.lastIndexOf("WEB-INF"));
//WEB-INF
上一級就是項目的根目錄
File f = new File(temp);
……
應該有更好的解決辦法,希望大家能給出一點建議。
這篇文章
http://louisyoo.blog.ccidnet.com/blog-htm-do-showone-uid-41414-type-blog-itemid-217488.html
,對路徑問題做了比較詳細的說明。
1
,
Constant.class.getResource("").getPath()
得到的是当前类
FileTest.class
文件的
URI
目录。如
\E:\6.0\workspace\28TEL_service\WEB-INF\classes\com.top.tel.constant
2
,
Constant.class.getResource("/").getPath()
得到的是当前的
classpath
的绝对
URI
路径。如:
\E:\6.0\workspace\28TEL_service\WEB-INF\classes
3
,
Constant.currentThread().getContextClassLoader().getResource("").getPath()
得到的也是当前
ClassPath
的绝对
URI
路径。如:
\E:\6.0\workspace\28TEL_service\WEB-INF\classes
4
,
Constant.class.getClassLoader().getResource("").getPath()
得到的也是当前
ClassPath
的绝对
URI
路径。如:
\E:\6.0\workspace\28TEL_service\WEB-INF\classes
5
,
ClassLoader.getSystemResource("").getPath()
得到的也是当前
ClassPath
的绝对
URI
路径。如:
\E:\6.0\workspace\28TEL_service\WEB-INF\classes
分享到:
相关推荐
选择合适的版本取决于项目的需求和兼容性,而使用这些jar包,开发者可以将精力集中在业务逻辑上,而不是担心如何控制任务的执行时间。无论是在小型项目还是大型企业系统中,Quartz都能展现出其灵活性和实用性。
【QUARTZ项目实练】 QUARTZ是一个开源的作业调度框架,广泛应用于Java环境中的任务调度。在本次实练中,我们将利用QUARTZ来实现一个基于数据表配置的定时任务轮询执行。这个练习将涵盖QUARTZ的核心概念、Cron表达式...
Quartz是一款广泛使用的开源任务调度框架,它允许开发者在Java应用程序中定义和执行定时任务。在Quartz 2.2.3版本中,初始化数据库是使用Quartz的关键步骤,因为Quartz依赖于一个持久化存储来保存作业和触发器的信息...
在这个"quartz小项目"中,我们可能会遇到以下关键知识点: 1. **Quartz介绍**:Quartz是一个完全由Java编写的开源作业调度框架,它可以用来执行定时任务。Quartz的核心是Job和Trigger,Job代表要执行的任务,...
Quartz是一款广泛应用于Java环境中的开源任务调度框架,它允许开发者定义、安排和执行复杂的定时...同时,根据项目需求,可能需要了解并配置Quartz的各种配置选项,如数据源、触发器策略等,以实现最佳的定时任务调度。
博客代码---- Quartz2D中还有以CGPath开头的API,Path我们称之为路径,我们之前用Quartz2D画出的东西都是沿着一条路径去画的。 而这次我们将来学一下如何先将路径定好之后,再将路径放入图层上下文中。
在SpringBoot项目中集成Quartz,首先需要在`pom.xml`文件中添加Quartz和SpringBoot对Quartz的支持依赖。接着,在配置文件(如`application.yml`或`application.properties`)中配置Quartz的相关参数,如数据库连接...
"PathTest"很可能是项目中的一个测试文件,可能包含了创建和使用路径的代码示例。通常,这样的代码会创建一个CGPath对象,添加必要的点,然后在视图的`drawRect:`方法中使用`CGContextAddPath()`和`...
此外,Quartz提供了丰富的API和配置选项,使得开发者可以根据项目需求定制化任务调度策略。例如,可以通过XML配置文件来定义作业和触发器,或者使用编程方式动态添加和修改任务。 总的来说,Quartz 2.2.3版本的jar...
这个"Quartz.NET Demo 项目源码"提供了对Quartz.NET功能的一个直观展示,帮助开发者更好地理解和应用这个强大的任务调度库。 在Quartz.NET中,作业是执行的具体任务,而触发器则是决定何时执行这些任务的规则。通过...
【标题】"Spring+Quartz+Maven项目实例"是一个基于Spring框架集成Quartz作业调度库的实战项目,采用Maven作为构建工具。这个实例旨在展示如何在Java应用程序中实现定时任务,支持两种运行模式,既可以直接以独立的...
升级到这个版本时,用户需要注意与旧版本之间的兼容性问题,以及可能需要调整的代码或配置。 总的来说,Quartz是一个强大的作业调度库,通过提供针对不同数据库的脚本,确保了其在多样的IT环境中都能高效运行。了解...
本项目案例是关于Quartz动态任务设置的一个实践,旨在帮助开发者更好地理解和运用Quartz进行灵活的任务调度。 首先,Quartz的核心概念包括作业(Job)、触发器(Trigger)和计划程序(Scheduler)。作业是你想要...
在这个"quartz 项目学习源码"中,你可以深入理解 Quartz 的工作原理和实现方式。 1. **Quartz 基本概念**: - **Job**:Quartz 中的 Job 是执行任务的基本单元,代表一个待执行的工作。 - **Trigger**:触发器...
综上,Quartz持久化是保证定时任务不因系统重启而丢失的关键技术,它与Spring的集成使得配置更为灵活,而Quartz版本间的兼容性则保证了项目的平滑升级。在实际开发中,理解并掌握这些知识点对于充分利用Quartz的功能...
Quartz的库可以通过Maven或者直接下载JAR文件添加到项目的类路径中。 接下来,我们需要创建一个Job类,实现Job接口并编写execute方法。例如,你可以创建一个简单的打印消息的Job: ```java public class MyJob ...
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表
在开始配置之前,首先需要在项目的`pom.xml`或`build.gradle`文件中引入Quartz和Spring相关的依赖库。对于Maven项目,可以添加如下依赖: ```xml <groupId>org.quartz-scheduler <artifactId>quartz ...
使用这个JAR包,开发者无需额外管理依赖,可以更方便地在项目中快速引入Quartz。 Spring与Quartz的集成是另一个重要的知识点。Spring框架提供了一种优雅的方式来管理和配置Quartz,使得我们可以利用Spring的依赖...
Quartz 是一个开源的作业调度框架,广泛应用于Java应用程序中,用于执行定时任务。Quartz 2.2.2 版本是其在特定时间的一个稳定版本,它提供了丰富的功能来帮助开发者创建、安排和管理任务。在描述中提到的"数据库...