2012-02-08 3 views
0

나는 Serializable 클래스를 구현하는 데스크탑 애플리케이션을 가지고 있지만, 이제 서블릿이있는 웹 애플리케이션으로 변환하고있다.이 작업을 위해 Netbeans를 사용하고있다. 다음 코드가있다. 데스크톱 응용 프로그램에서 나는 내 수업을했다 같은 디렉토리에 넣어 때문에이 파일을 넣어해야하는 위치 file_input 전에 직렬화 객체에서 바이트 코드 fyle입니다프로젝트 netbeans에 직렬화 된 파일 객체 넣기

InputStream input = ClassLoader.getSystemResourceAsStream(file_input); 

는 나도 몰라.

(파일이 있으므로 생성 할 필요가 없습니다.)

답변

0

먼저 Java EE 웹 응용 프로그램에서 ClassLoader#getSystemResourceAsStream()을 사용하지 마십시오. 대신 ClassLoader#getResourceAsStream()을 사용하십시오. 또한 Java SE 데스크톱 응용 프로그램에서 ClassLoader#getSystemResourceAsStream()을 사용하여 큰 물음표를 넣을 것입니다.

ClassLoader은 궁극적으로 클래스 경로에서 자원을로드합니다. 따라서 파일이 웹 응용 프로그램의 런타임 클래스 경로 인 또는에 의해 기본적으로 덮여있는 경로 중 하나에 배치되어 서버를 통해 웹 응용 프로그램의 런타임 클래스 경로에 파일의 새 경로를 추가하기 만하면됩니다. Tomcat의 /conf/catalina.properties 속성과 같은 특정 구성 설정 (예 : shared.loader)

웹 응용 프로그램의 런타임 클래스 경로에서 다루는 기본 경로 중 하나는 WAR의 /WEB-INF/classes 폴더입니다. IDE 프로젝트의 관점에서 "Java Source"(src) 폴더의 루트 폴더에 파일을 놓습니다. 여기에 모든 Java 패키지와 클래스가 있습니다. IDE는 궁극적으로 빌드 된 WAR 파일의 /WEB-INF/classes으로 끝납니다.

나는 아직도 당신이 이 아니라고 가정합니다. 명시 적으로 말했듯이, webapp 내부에서 파일을 생성합니다. 그건 효과가 없을거야. 실제로에 쓰기 액세스 권한이 필요하면 절대 디스크 파일 시스템 경로가 필요합니다. VM 인수 또는 환경 변수로 제공하여 구성 가능하게 만들 수 있습니다.