我有一个服务(GenericService的子类),它需要在运行时找到 deploy 目录[在应用程序服务器的安装目录下]的路径,而不需要对其进行硬编码;在我们日常工作的许多环境中,这条路径会有所不同。
我在JSP文件中发现了这个怎么做,下面给出了我需要的内容,但我找不到ServeLetContext:
ServletContext context = session.getServletContext();
String path = context.getRealPath("/my/path");
但是,我在服务中没有请求或会话对象,或者我?我一直在看
getAdminServlet().getServletConfig().getServletContext().getRealPath("/my/path");
但我没有回复上下文。
我们在JBoss 4.2上使用ATG 9.1。
我感谢任何帮助。
答案 0 :(得分:0)
任何实施GenericService
的服务都可以访问getNucleus()
,从而可以访问getRealPath(String str)
。
由于我不确定您为何需要使用context.getRealPath(String str)
,因此您应该注意,有时可能不适合您的需要。 For example如果您在.war中部署应用程序,则无法访问它。
也就是说,这可能是一种更简单的方法,不关心您将其部署到哪个环境:
private String getBasePath() {
String basePath = DynamoEnv.getProperty("atg.dynamo.server.home");
return basePath;
}
它与环境无关,因为你不能在没有主文件夹的情况下运行ATG ......应该可以创造奇迹。