2013-05-21 12 views
0

디렉토리 [응용 프로그램 서버의 설치 ​​디렉토리 아래]에 대한 경로를 하드 코딩하지 않고 런타임에 찾을 필요가있는 서비스 (GenericService의 하위 클래스)가 있습니다. 그 경로는 우리가 매일 작업하는 많은 환경에 따라 다릅니다.ATG - GenericService 기반 서비스에서 배포 된 파일에 액세스하는 방법?

나는 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

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를 실행할 수 없기 때문에 .. 경이로움을 가져야합니다.

+0

radimpe - 응답 해 주셔서 감사합니다. getNucleus(). getRealPath ("xxx")를 사용했으며 그 결과는 (Windows의 경우) "C : \ ATG \ ATG9.1 \ home \ doc \ xxx"이고 atg.dynamo.server.home은) "C : \ ATG \ ATG9.1 \ home". 둘 다 응용 프로그램 서버 아래에있는 "deploy"디렉토리로 이동하지 않습니다. – account4327

+0

ATG 인스턴스를 어떻게 실행하고 있습니까? atg.dynamo.server.home 값을 잘못 지정하는 dynamo.env 파일이 있습니까? 시동시이 속성이 dynamo.log에 나타 납니까? WebSphere를 실행 중이고 어디에서나 지정하지 않고 올바르게 확인하면 이중 확인합니다. – radimpe

관련 문제