2011-08-03 2 views
2

배포 된 Tomcat 6 서버에서 WAR 파일을 실행할 때 변환 된 XML (xsls로 변환 됨)을 표시 할 수 없지만 내 시스템의 Tomcat에서 실행할 때 그것은 잘 작동합니다.배포 된 Apache 6.0에서 XML을 변형 할 때 오류가 발생할 수 있습니다.

코드 :

경로가 GET 요청을 통해 사용할 수있는 배치 Tomcat 서버에 XSL 파일의 URL입니다
StringReader xmlInput = new StringReader(xmlString); 
    InputStream xslInput = new URL(path).openStream(); 

    Source xmlSource = new StreamSource(xmlInput); 
    Source xslSource = new StreamSource(xslInput); 

    // XML result will be written to HTTP response. 
    Result xmlResult = new StreamResult(response.getOutputStream()); 
    try { 
     Transformer transformer = TransformerFactory.newInstance() 
       .newTransformer(xslSource); 
     transformer.transform(xmlSource, xmlResult); 
    } catch (Exception e) { 
     Log.err("xml xslt transform error"); 
     response.setStatus(HttpServletResponse.SC_BAD_REQUEST); 
     return ("return couldn't load file"); 
    } 

.

왜 배포 된 컴퓨터에서 작동하지 않습니까?

WAR 파일이 서버에서 실행되는 방법을 잘 모르겠습니다. Tomcat 6.0 서버에서 실행 중이며 서버의 출력을 볼 수 없습니다. 교수가 공유 할 수 없으므로 서버의 출력을 볼 수 없습니다. 이 정보.

그래서 내가 일반적으로이 문제를 일으킬 수있는 것은 무엇입니까?

편집

나는 문제에 대한 몇 가지 정보를 얻을 관리했습니다. 먼저 오류가 발생하지 않으면 서블릿은 200 상태를 반환합니다. 두 번째는 아무 것도 응답에 기록되지 않습니다. 즉 변환 함수가 변환 또는 응답에 대한 쓰기 작업의 일부를 수행하지 못했음을 의미합니다.

+0

여기서'xmlString'은 어디에서 왔습니까? 배포 된/로컬 머신간에 차이가 있습니까? –

+0

아무것도 생성하지 않았거나 결과를 볼 수 없다 (보기 소스보기)? XML 출력으로 변환하면 브라우저에 제대로 표시되지 않을 수 있습니다 ('text()'노드 만 렌더링하고 출력이없는 것처럼 보일 수 있습니다). –

+0

나는 xmlString을 혼자서 구성한다. 그것은 분명히 내 컴퓨터와 기계 모두에서 올바르게 생산됩니다. 변환이 내 로컬 컴퓨터에서 실행될 때 생성해야하는 것을 생산합니다. 실제로 배포 된 컴퓨터에서 아무 것도 반환하지 않습니다 (다시 한번 확인했습니다). . – Whitebear

답변

0

Servlet에서 리소스를 열어 처리, 일반적으로 당신에게 InputStream를 제공하고 서블릿 자원 주위에 얻을 것이다 ServletContextGetResourceAsStream는 여전히 WAR 파일 내부에 포장 될 수 있습니다 사용하는 것이 좋습니다.

GetResourceAsStream이 취하는 경로는 request.getContextPath()과 관련이 있습니다. 서버에 방화벽이있는 경우

당신은 오류가 발생할 수 있습니다 XSL 파일을 받고하는 Servletthis.getServletContext()를 통해

+0

나는 이것을 시도했다. 같은 문제가 ... – Whitebear

0

에서 현재 ServletContext를 얻을 수 있습니다.

관련 문제