我正在使用JBoss 4和Spring。在Web应用程序中,我使用Quartz调度程序来执行一些调度的任务。在Quartz作业中,我想获取服务器路径是否可以?如果是,怎么办?
PS:一些背景
我需要Quartz作业中的服务器路径,因为该作业将发送电子邮件。电子邮件包含指向我的应用程序服务的网站的链接,并且要构建正确的URL,我需要一个服务器路径。硬编码服务器路径是不行的,因为应用程序已部署在各种服务器上。
最佳答案
没有从Quartz作业内部获取数据的明智方法,因此必须采取另一种方法。有一个全局配置Bean,将其称为ServerConfig或其他名称。让它实现ServletContextAware
,然后在启动Web上下文时自动通知它。
public class ServerConfig implements ServletContextAware{
private String serverRootUrl;
public String getServerRootUrl(){ return serverRootUrl; }
public void setServletContext(ServletContext servletContext){
this.serverRootUrl=servletContext.getRealPath("/");
}
}
现在,只需将该Bean注入您的Quartz作业类中,并使用
serverConfig.getServerRootUrl()
检索根URL。关于java - Spring应用程序:在Quartz作业中获取服务器路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6147671/