如何在没有HttpServlet或HttpServletRequest的情况下获取服务器/ Servlet上下文?

时间:2018-11-08 11:12:48

标签: java-ee web-applications

假设,我在Payara / Glassfish(或与此相关的任何其他WebContainer)上托管JavaEE WebApp。 如果VirtualServer-Config默认指向应用程序,我将以地址https://a.b/appname/myservleturlpatternhttps://a.b/myservleturlpattern到达Servlet。

通常,我可以在任何HttpServlet(ServletContext)中轻松获取该地址。

但是现在,当我在非servlet类中运行后台任务(@Schedule)时,如何获得该地址?

我想要的:从任何类(尤其是非Servlet类)获取应用的基本地址https://a.b/appname/或作为https://a.b/。 (因为我不在servlet中,所以无法获得myservleturlpattern,因此无法获得。)

到目前为止,我唯一的想法是监听我的所有Servlet(无论如何都扩展同一个自定义HttpServlet),并且在第一次调用时设置了一个静态变量,但是那真的很不干净并且很容易被破解。

任何更好的主意

1 个答案:

答案 0 :(得分:1)

ServletContextListener正是出于这个目的,但根据您要使用的功能,可能会有更好的解决方案