2014-01-20 8 views
0

우리는 WSO2 응용 프로그램 서버 버전 5.0.1을 사용하고 있습니다. JSP 페이지에서 javax.crypto 패키지를 사용하면 액세스 할 때 컴파일되지 않습니다. 이를 확인하기 위해 웹 어플리케이션의 WEB-INF/lib 폴더에 jce.jar 파일을 복사했습니다. jce.jar 파일이 WEB-INF/lib 폴더에있는 경우, JSP는 잘 컴파일하지만 난 거기에서 jce.jar를 제거하면, 컴파일은 다음과 같은 오류와 함께 실패합니다WSO2 응용 프로그램 서버 5.0.1 javax.crypto 패키지를 사용하는 JSP가 컴파일되지 않습니다.

Generated servlet error: 
The type javax.activation.DataHandler cannot be resolved. It is indirectly referenced from required .class files 

An error occurred at line: 10 in the jsp file: /processPassword.jsp 
Generated servlet error: 
PBEKeySpec cannot be resolved to a type 

An error occurred at line: 10 in the jsp file: /processPassword.jsp 
Generated servlet error: 
SecretKeyFactory cannot be resolved to a type 

An error occurred at line: 10 in the jsp file: /processPassword.jsp 
Generated servlet error: 
SecretKeyFactory cannot be resolved 

] with root cause 
org.apache.jasper.JasperException: Unable to compile class for JSP 

Generated servlet error: 
The type javax.activation.DataHandler cannot be resolved. It is indirectly referenced from required .class files 

An error occurred at line: 10 in the jsp file: /processPassword.jsp 
Generated servlet error: 
PBEKeySpec cannot be resolved to a type 

An error occurred at line: 10 in the jsp file: /processPassword.jsp 
Generated servlet error: 
SecretKeyFactory cannot be resolved to a type 

An error occurred at line: 10 in the jsp file: /processPassword.jsp 
Generated servlet error: 
SecretKeyFactory cannot be resolved 


    at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84) 
    at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328) 
    at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:414) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:297) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:276) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:264) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:260) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:172) 
    at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:701) 

궁금 어떤 원인이 될 수 이 컴파일 오류와 jce.jar을 WEB-INF/lib에 넣지 않고도이를 피할 수있는 방법

서블릿에서 javax.crypto 패키지를 사용하면 잘 컴파일되고 실행됩니다. WSO2 응용 프로그램 서버 버전 5.0.1에서 jsp 컴파일에 classpath 문제가 있다고 생각합니다.

제안 사항?

답변

0

이것은 앱 서버의 클래스 로딩 문제 일 수 있지만 5.1.0 버전에서 수정되었습니다. 클래스로드 문제를 피하기 위해 webapp-classloading.xml이라는 새로운 xml 파일을 도입했습니다.

jce.jar는 JRE의 일부이기 때문에 http://docs.wso2.org/display/AS510/Webapp+ClassLoading

0

, 그것은 JSP 컴파일 클래스 경로에 사용할 수 있어야 참조하십시오. 따라서 추가 웹 애플리케이션 별 클래스 로딩을 필요로하지 않아야합니다. webapp-classloading.xml을 통해.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@ page language="java" import="java.util.*" %> 
<%@ page language="java" import="org.apache.axiom.om.util.Base64"%> 
<%@ page language="java" import="java.security.SecureRandom"%> 
<%@ page language="java" import="java.security.spec.KeySpec"%> 
<%@ page language="java" import="javax.crypto.SecretKeyFactory"%> 
<%@ page language="java" import="javax.crypto.spec.PBEKeySpec"%> 

이이 웹 응용 프로그램 특정 클래스 경로를 설정하지 않고 5.1.0에서 작동 확인할 수 있습니다 : 다음은 5.0.1에 & 실행 컴파일에 실패 JSP 페이지의 시작인가?