2011-04-13 6 views
1

Java에서 개발 된 웹 서비스가 있습니다. 내 서비스 중 하나가 작동하지 않습니다. 문제를 조사한 후에 파일을로드하려고 할 때 [아마도] 발견되었으므로 예외가 발생하여 java.lang.reflect.InvocationTargetException이 발생합니다. 이 코드를 실행 해보았고 False가 생길 때마다 시도했습니다. Java 웹 서비스에서 파일을로드 할 수 없습니다.

java.io.File f = new java.io.File("svncache.collection"); 
System.out.println(f.exists()); 

나는 톰캣의 루트에있는 파일 ( \ webapps에 \ ROOT)를 복사 시도했지만 작동하지 않았다. 나는 이것을 달렸다 :

System.getProperty("user.dir") 

그리고이 기능에 의해 돌려주게되는 폴더에 파일을 베꼈다. 이 후 함수는 true을 반환 했으므로이 폴더는 내가 작업해야하는 루트 폴더입니다. 그러나 서비스를 다시 실행하면 같은 예외가 발생합니다. Windows 7 x64 및 Java EE Helios 용 Eclipse에서이 서비스를 실행합니다.

내가 뭘해야하는지에 대한 제안이 있으십니까?

감사합니다.

편집 : 이것은 원래 웹 프로젝트가 아닌 Java 프로젝트 였음을 언급해야합니다. 웹 서비스로 사용해야했습니다. 첫 번째 제안은 Endpoint.publish를 사용하는 것이 었습니다. 여기 :

Add a web service to a already available Java project

변환 [조금 편집] 후에는 아무 문제없이 완벽하게 실행. 하지만 사용자의 활동을 기록하는 데 필요한 및 제안 나는 동적 웹 프로젝트로 프로젝트를 변환하고 새 웹 서비스 생성 : Java - Create a web service from an available class

Java - Rich logging in web services 및 그래서 기본적으로 내가 원에서 실행 해요입니다. Endpoint.publish를 사용하면 로깅이 지원되지 않습니다. 웹 서비스를 사용하면 파일을로드 할 수 없으며 원래 Java 프로젝트를 Silverlight 응용 프로그램의 웹 서비스로 사용할 수 없습니다.

도와주세요. 나는 너무 좌절했다. 감사. 추신 : 죄송합니다. 내 문제와 그 제목을 명확히하기 위해 문제를 수정해야했습니다.

+0

**'svncache.collection' 파일이 어디에 존재할 것으로 예상합니까 **? 상대 파일 이름을 지정하면 대개 위험한 작업이됩니다. 이 파일이 웹 애플리케이션에 포함되어 있습니까? –

+0

답장을 보내 주셔서 감사합니다. 나는 그 파일이 어디에 있든 상관하지 않는다. 그 파일을로드하고 싶습니다. "C : \\ temp \\ svncache.collection"을 사용할 때도로드 할 수 없습니다. 두 번째 부분에 관해서는, 나는 당신의 질문을 완전히 이해하지 못합니다. 이것은 내 서비스에있어 매우 중요한 파일이며 요청에 응답하기 위해로드해야합니다. –

+1

글쎄, ** 당신이 읽고 싶은 곳이면 ** 어디 있는지 신경 써야합니다. webapp의 일부라면,'File'을 사용하지 말고,'ServletContext.getResource [AsStream]'또는'Class.getResource [AsStream]'을 사용하여로드하십시오 (여러분의 어딘가에 있는지 여부에 따라) webapp 또는'.jar' /'/ WEB-INF/classes' 디렉토리에 있습니다). –

답변

0

일반 Java 응용 프로그램 내에서뿐만 아니라 웹 응용 프로그램에서이 테스트를 실행해야합니다. 귀하의 webapp에서 작동하는 경우, 당신은 확실히 문제를 잘못 진단했습니다. 그렇지 않다면 ... 고칠 수 있습니다.

+0

이 모든 결과는 웹 서비스에 있습니다. 원래 Java 프로젝트는 완벽하게 실행됩니다. 질문을 다시 읽으십시오. 나는 그것을 편집했다. 감사. –

+0

UAC가 내 웹 서비스가 파일에 액세스하지 못하게한다고 생각합니다. 이 코드를 실행하고 false를 반환했습니다. 'System.out.println (f.renameTo (f2));'서비스 관리자에게 권한을 부여하는 방법을 알고 있다면 알려주십시오.창을 다시 시작하기 전에 (UAC를 비활성화하고 내 이론이 사실인지 테스트하기 위해) 몇 시간을 기다려야 할 것입니다. 그러나 UAC를 비활성화 할 필요없이이를 수행하는 것이 좋을 것입니다. 고맙습니다. –

+0

UAC를 비활성화했지만 문제가 여전히 있습니다. –

관련 문제