Spring应用程序:在Quartz作业中获取服务器路径

Mon*_*key 2 java spring quartz-scheduler

我正在使用JBoss 4和Spring.在Web应用程序中,我使用Quartz调度程序来执行某些计划任务.在Quartz作业中,我想获得服务器路径是否可能?如果有,怎么样?

PS:某些上下文我需要Quartz作业中的服务器路径,因为该作业会发送电子邮件.电子邮件包含我的应用程序所服务的网站的链接,为了构建正确的URL,我需要一个服务器路径.硬编码服务器路径是禁忌,因为应用程序部署在各种服务器上.

Sea*_*oyd 10

从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("/");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在只需将Bean注入Quartz作业类并用于serverConfig.getServerRootUrl()检索根URL.

  • 可能一个servlet可以提供多个主机名(比如虚拟主机),因此无法从ServletContext获取主机名.以为我应该尝试运行该方法来找出:-) (2认同)