2012-07-24 2 views
0

웹 응용 프로그램에서 첨부 파일과 함께 정기적 인 전자 메일을 보내기 위해 cron 작업 일정을 구현 중입니다.QuartzJobBean의 하위 클래스에서 Session/Request 객체를 얻는 방법

문제 설명 : 자바 코드에서 파일을 (즉,이 메일에 첨부됩니다) 작성, 나는 파일의 절대 경로를 얻기 위해 세션 객체가 필요합니다. 예를 들어

:

request.getSession().getServletContext().getRealPath("/"); 

우리는 경로를 얻기 위해 사용합니다.

그래서 세션 객체를 구현하거나 가져올 수 있습니까? 또는 파일의 상대 경로를 가져 오는 다른 방법이 있습니까?

참고 : WebContent/MyFolder에 attachmnet 파일을 만들어야합니다.

답변

1

cron 작업에 HTTP 세션이 없으므로 HTTP 세션을 얻을 수 없습니다. 이 작업은 비동기식이며 자체 스레드에서 실행 중이며 세션과 관계가 없습니다. 사용자가 서버에 연결하지 않아도 실행됩니다.

그래서 질문은 실제로 파일 경로를 가져 오는 방법입니다.

그리고 대답은 여러분의 질문입니다. getServletContext()에 주목하십시오. 서블릿에서 서블릿 컨텍스트를 추출 할 수 있습니다 (servlet.getServletConfig().getServletContext()). 따라서 애플리케이션에 적어도 하나의 서블릿이 있다면 서블릿 컨텍스트 (또는 그로부터 추출 된 더 나은 파일 경로)를 정적 변수 또는 시스템 속성에 넣은 다음 cron 작업에서 사용할 수 있습니다.

+0

사실 저는 봄에 새로운 것이므로 어떻게 Servlet 객체를 얻을 수 있는지 알려주십시오. –

1

크론은 다른 스레드와 다른 시간에 작업을 시작하므로 작업이 실행되고 세션이 이미 존재하지 않을 수 있습니다. cron 작업을 모든 매개 변수 (예 : 문자열을 문자열로 사용)로 만들거나 다른 방법을 사용하여 경로를 검색해야합니다 (예 : resources 또는 명시 적으로 정의 된 경로 사용).

관련 문제