JavaServer Pages 문제점 해결 팁

이 팁을 사용하여 JavaServer 페이지의 문제점을 해결할 수 있습니다.

웹 서버에 의해 표시되는 JSP 소스 코드

웹 서버 문서 루트에서 WebSphere® Application Server의 문서 루트를 공유하는 경우 웹 서버가 JSP(JavaServer Pages) 소스 파일을 일반 텍스트로 표시하여 보안이 노출될 수 있습니다.

문제점
WebSphere 웹 서버 플러그인 규칙 세트를 사용하여 주어진 요청이 WebSphere Application Server에 의해 처리되는지 여부를 판별할 수 있습니다. 수신 요청이 이러한 규칙과 일치하지 않으면 웹 서버 플러그인은 웹 서버로 제어를 리턴하여 웹 서버가 요청을 이행할 수 있도록 합니다. 이 경우, 그 규칙은 WebSphere Application Server가 이를 처리해야 한다고 표시하지 않기 때문에 알 수 없는 호스트 헤더로 인하여 웹 서버 플러그인이 웹 서버로 제어를 리턴하게 됩니다. 따라서 웹 서버는 웹 서버 문서 루트에서 그 요청을 검색합니다. JSP 소스 파일은 웹 서버의 문서 루트에 저장되기 때문에 웹 서버는 그 파일을 찾아서 일반 텍스트로 표시합니다.
제안된 솔루션
WebSphere Application Server JSP 소스 파일을 웹 서버 문서 루트의 외부로 이동시키십시오. 그런 다음, 이 요청이 알 수 없는 호스트 헤더와 함께 나올 때 플러그인이 제어를 웹 서버로 리턴하며, JSP 소스 파일은 문서 루트에서 발견되지 않습니다. 따라서 웹 서버는 JSP 소스 파일이 아닌 404 파일을 찾을 수 없음 오류를 리턴합니다.

@include 지시문 사용시 2바이트 문자 세트(DBCS) 문자 표시 문제점

@include 지시문을 사용하는 JavaServer 페이지 파일은 2바이트 문자 세트(DBCS) 문자를 표시할 때 문제점을 경험할 수 있습니다. WebSphere Application Server 버전 6.0 이상으로 마이그레이션되는 일부 애플리케이션은 역방향 호환성 문제의 결과로 JSP 2.0 스펙을 준수하기 위해 수정해야 할 수 있습니다. JSP 2.0 스펙은 각 파일의 문자 인코딩이 별도로 결정되기 때문에 한 파일이 include 지시문을 사용하여 다른 파일을 포함하더라도 정적으로 포함된 각 자원이 페이지 인코딩 또는 컨텐츠 유형을 설정해야 합니다.

JSP(JavaServer Pages) 엔진 사용 문제점

JSP(JavaServer Pages) 엔진을 사용하는 데 어려움이 있는 경우, 다음 단계를 수행하십시오.
  1. .html 파일 또는 서블릿과 같은 기타 자원이 올바르게 요청되고 표시되는지 판별하십시오. 그렇지 않은 경우, 문제점은 HTTP Server와 같은 더 깊은 레벨에 있을 수 있습니다.
  2. 기타 자원이 올바르게 표시되는 경우, JSP 프로세서이 정상적으로 시작되었는지 판별하십시오.
    • [AIX Solaris HP-UX Linux Windows][IBM i]액세스 중인 JSP 파일을 호스트하는 서버의 JVM 로그를 찾아보십시오. 다음 메시지는 JSP 프로세서가 정상적으로 시작되었음을 표시합니다.
      Extension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] 
      was initialized successfully. 
      Extension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] 
      has been associated with patterns [*.jsp *.jspx *.jsw *.jsv ].
      JSP 프로세서가 로드되지 못하면, 다음과 같은 메시지가 표시됩니다.
      No Extension Processor found for handling JSPs.
      JSP Processor not defined. Skipping : jspfilename.
      root_dir/logs/server_name/SystemOut.log 파일에서
    • [z/OS]액세스 중인 JSP 파일을 호스트하는 서버의 로그를 찾아보십시오. 다음 메시지는 JSP 프로세서가 정상적으로 시작되었음을 표시합니다.
      Extension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] 
      was initialized successfully. 
      Extension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] 
      has been associated with patterns [*.jsp *.jspx *.jsw *.jsv ].
      JSP 프로세서가 로드되지 못하면, 다음과 같은 메시지가 표시됩니다.
      No Extension Processor found for handling JSPs.
      JSP Processor not defined. Skipping : jspfilename.
      서버 로그 파일에서
  3. JSP 엔진이 정상적으로 시작된 경우, 문제점은 JSP 파일 자체에 있을 수 있습니다.
    • [AIX Solaris HP-UX Linux Windows][IBM i]JSP에 유효하지 않은 JSP 구문이 있어서 JSP 프로세서가 처리할 수 없습니다. 대상 애플리케이션의 root_dir/logs/server_name/SystemOut.log 파일에서 유효하지 않은 JSP 지시문 구문 메시지를 조사하십시오. 브라우저에서 다음과 유사한 오류가 이러한 문제 유형을 표시합니다.
      Message: /filename.jsp(2,1)JSPG0076E: Missing required attribute page for jsp 
                   element jsp:include 
      이 예는 이름 지정된 JavaServer Pages 파일의 2 행, 1 열에서 jsp:include 조치에 대한 필수 속성이 누락되었음을 표시합니다. 기타 구문 오류에 대해 유사한 메시지가 표시됩니다.
    • [z/OS]JSP에 유효하지 않은 JSP 구문이 있어서 JSP 프로세서가 처리할 수 없습니다. 대상 애플리케이션의 서버 로그 파일에서 유효하지 않은 JSP 지시문 구문 메시지를 조사하십시오. 브라우저에서 다음과 유사한 오류가 이러한 문제 유형을 표시합니다.
      Message: /filename.jsp(2,1)JSPG0076E: Missing required attribute page for jsp 
                  element jsp:include 
      이 예는 이름 지정된 JavaServer Pages 파일의 2 행, 1 열에서 jsp:include 조치에 대한 필수 속성이 누락되었음을 표시합니다. 기타 구문 오류에 대해 유사한 메시지가 표시됩니다.
    • 대상 애플리케이션 서버의 SystemErr.log 파일에서 유효하지 않은 Java™ 구문 문제점을 검사하십시오. 브라우저에 Message: Unable to compile class for JSP와 유사한 오류가 나타나면 이러한 종류의 문제점이 있는 것입니다.
      Javac 컴파일러의 오류 메시지 출력은 SystemErr.log 파일에 있습니다. 이 출력은 다음과 같습니다.
      JSPG0091E: An error occurred at line: 2 in the file: /myJsp.jsp 
      JSPG0093E: Generated servlet error: c:\WASROOT\temp\ ... 
      test.war\_myJsp.java:16: myInt is already defined in com.ibm.ws.jsp20._myJsp 
      int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; 
      int myInt=121;                    
               ^  1 error

      JSP 파일의 오류를 정정하고 파일을 재시도하십시오.

    • 대상 애플리케이션의 로그 파일에서 올바르지 않은 Java 구문 문제점을 검사하십시오. 브라우저에 Message: Unable to compile class for JSP와 유사한 오류가 나타나면 이러한 종류의 문제점이 있는 것입니다.
      [AIX Solaris HP-UX Linux Windows][IBM i]Javac 컴파일러의 오류 메시지 출력은 SystemErr.log에 있습니다. 이 출력은 다음과 같습니다.
      JSPG0091E: An error occurred at line: 2 in the file: /myJsp.jsp 
      JSPG0093E: Generated servlet error: c:\WASROOT\temp\ ... 
      test.war\_myJsp.java:16: myInt is already defined in com.ibm.ws.jsp20._myJsp 
      int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; 
      int myInt=121;                    
               ^  1 error
      [z/OS]Javac 컴파일러의 오류 메시지 출력은 서버 로그 파일에 있습니다. 이 출력은 다음과 같습니다.
      JSPG0091E: An error occurred at line: 2 in the file: /myJsp.jsp 
      JSPG0093E: Generated servlet error: c:\WASROOT\temp\ ... 
      test.war\_myJsp.java:16: myInt is already defined in com.ibm.ws.jsp20._myJsp 
      int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; 
      int myInt=121;                    
               ^  1 error

      JSP 파일의 오류를 정정하고 파일을 재시도하십시오.

참고: 이 주제는 하나 이상의 애플리케이션 서버 로그 파일을 참조합니다. 권장되는 대안은 분배 및 IBM® i 시스템에서 SystemOut.log, SystemErr.log, trace.logactivity.log 파일을 사용하는 대신 HPEL(High Performance Extensible Logging) 로그를 사용하고 인프라를 추적하도록 서버를 구성하는 것입니다. 원시 z/OS® 로깅 기능과 연계하여 HPEL을 사용할 수도 있습니다. HPEL을 사용하는 경우 서버 프로파일 바이너리 디렉토리의 LogViewer 명령행 도구를 사용하여 모든 로그에 액세스하고 정보를 추적할 수 있습니다. HPEL 사용에 대한 자세한 정보는 HPEL을 사용한 애플리케이션 문제점 해결 정보를 참조하십시오.

JavaServer 페이지의 사전 컴파일 사용시 컴파일 실패

증상 문제점 제안된 솔루션
사전 컴파일이 선택되었을 때 JavaServer 페이지는 관리 콘솔을 통한 배치 중에 컴파일에 실패합니다.
SystemErr R com.ibm.websphere
 .management.exception
 .AdminException: 
ADMA0021E: Error in compiling jsps - xyz.war (rc=1)
클래스 경로에서 사용할 수 없는 다른 JAR(Java Archive) 파일에 대한 종속성이 있는 경우 사전 컴파일이 선택되었을 때 JavaServer Pages는 관리 콘솔을 통한 배치 중에 컴파일에 실패합니다. wsadmin 스크립트를 사용하여 엔터프라이즈 애플리케이션 배치 중에 JSP 파일을 사전 컴파일할 수 있습니다. 그러나 관리 콘솔을 사용하려면 애플리케이션을 패키징하기 전에 모든 JSP 파일을 컴파일하십시오.
  1. 셀 환경에서 종속 jar를 배치 관리자에 추가하십시오.
    1. 콘솔 탐색에서 시스템 관리 > 배치 관리자 > Java 및 프로세스 관리 > 프로세스 정의 > JVM(Java Virtual Machine)을 클릭하십시오.
    2. 클래스 경로 필드에서 완전한 종속 jar를 추가하십시오.
    3. 확인을 클릭하십시오.
    4. 배치 관리자를 다시 시작하십시오.

JSPG0089E: 페이지 지시문 인코딩 Shift_JIS 및 xml prolog 인코딩 UTF-8 간에 불일치 발견

증상 문제점 제안된 솔루션
다음 오류가 표시됩니다.
JSP Processing Error

HTTP Error Code: 500

Error Message: /test.jsp(2,1) 
	/test.jsp(2,1) JSPG0089E: 
	Mismatch found between page 
	directive encoding Shift_JIS 
	and xml prolog encoding UTF-8
jsp:directive.page 요소의 pageEncoding 속성이 UTF-8이 아닙니다. JavaServer 페이지는 페이지 지시문에 지정된 인코딩과 일치하는 prolog를 지정해야 합니다. 예를 들어
<?xml version="1.0" encoding="Shift_JIS"?>
<jsp:root xmlns:jsp="http://java.sun.com/
 JSP/Page" version="2.0">
<jsp:directive.page language="java" contentType="text/html";
	charset=Shift_JIS pageEncoding=
	 "Shift_JIS"/>
<jsp:text>XXXXXjsp:text>XXXXX>
</jsp:root>

추가 정보는 JavaServer 페이지 스펙에서 섹션 JSP.4.1, 페이지 문자 인코딩과 XML(Extensible Markup Language) 스펙의 섹션 4.3.3 및 부록 F.1을 참조하십시오.

이러한 단계로도 문제점이 전혀 해결되지 않을 경우, 문제점 진단 및 수정: 학습 자원 주제에 있는 링크를 사용하여 문제점을 식별하고 문서화했는지 확인하십시오. 사용자의 문제점과 유사한 문제점이 없거나 제공된 정보로 사용자의 문제점을 해결할 수 없는 경우 IBM 지원에 문의하여 추가 지원을 받으십시오.

IBM 지원에서 제공하는 알려진 문제점과 해결책에 대한 최신 정보는 IBM 지원 페이지를 참조하십시오. IBM 지원은 이 문제점 해결에 필요한 정보 수집 시간을 줄일 수 있는 문서를 제공합니다.


주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_jspcomp
파일 이름:rtrb_jspcomp.html