我正在使用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/

10-11 22:35
查看更多