ATG-如何从基于GenericService的服务访问部署的文件?

ATG-如何从基于GenericService的服务访问部署的文件?,atg,Atg,我有一个服务(GenericService的子类),它需要在运行时找到部署目录[在应用服务器的安装目录下]的路径,而无需硬编码;这条道路因我们每天工作的许多环境而异 我在JSP文件中找到了如何做到这一点,下面给出了我所需要的内容,但我找不到ServletContext: ServletContext context = session.getServletContext(); String path = context.getRealPath("/my/path"); 但是,我在服务中没有请求

我有一个服务(GenericService的子类),它需要在运行时找到部署目录[在应用服务器的安装目录下]的路径,而无需硬编码;这条道路因我们每天工作的许多环境而异

我在JSP文件中找到了如何做到这一点,下面给出了我所需要的内容,但我找不到ServletContext:

ServletContext context = session.getServletContext();
String path = context.getRealPath("/my/path");
但是,我在服务中没有请求会话对象,或者我有吗?我一直在看

getAdminServlet().getServletConfig().getServletContext().getRealPath("/my/path");
但我没有得到背景信息

我们在JBoss4.2上使用ATG9.1


非常感谢您的帮助。

任何实现
GenericService
的服务都可以访问
getNucleus()
,从而让您可以访问
getRealPath(String str)

由于我不确定为什么需要使用
context.getRealPath(String str)
,您应该注意,在某些情况下,它可能并不最适合您的需要。如果在.war中部署应用程序,您将无法访问它

也就是说,这可能是一种更简单的方法,它不关心您将其部署到哪个环境:

private String getBasePath() {
    String basePath = DynamoEnv.getProperty("atg.dynamo.server.home");
    return basePath;
}

它与环境无关,因为没有主文件夹就无法运行ATG。。。应该会产生奇迹。

radimpe-感谢您的回复。我使用了getNucleus().getRealPath(“xxx”),结果是(在Windows上):“C:\ATG\ATG9.1\home\doc\xxx”和ATG.dynamo.server.home返回(在Windows上)“C:\ATG\ATG9.1\home”。这两个都不能让我进入“deploy”目录,它位于应用服务器下。你在什么上运行你的ATG实例?您是否有一个dynamo.env文件错误地指定了atg.dynamo.server.home值?启动期间,此属性是否显示在dynamo.log中?我正在运行WebSphere,并仔细检查了我没有在任何地方指定它,并且它正确解析。