스프링 시큐리티 관련 문의드립니다.
- 작성자 :
- 김*일
- 작성일 :
- 2016-05-16 11:54:56
- 조회수 :
- 1,967
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
안녕하세요.
환경 : spring security 2.0.4, jdk 1.6.0_45, apache-tomcat-6.0.44, weblogic 10.3.6.0, jenkins 2.0, maven 3.2.6.RELEASE
스프링 시큐리티 및 라이브러리 참조에 대해..많이 검색해봤는데 해결을 하지 못해서 문의 합니다.
1. EgovComCrossSiteHndlr class에서 BodyTagSupport를 상속 받게 되는데 톰캣(로컬)에서는 이상이 없는데
웹로직(테스트서버)에서는
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 22 in the generated java file
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
-> 메이븐에 jsp-api dependency를 추가하면 메이블 컴파일 시 문제는 없는데 톰캣에서 jsp를 서블릿으로 컴파일 할 수 없다고 나옵니다.
라이브러리 충돌이라는 글이 많아 프로젝트 프로퍼티 빌드패스에서 톰캣 Server Runtime 라이브러리는 제거 및 WEB-INF/lib servlet-api.jar 파일 삭제했는데 해결이 되지 않았습니다.
2. EgovComCrossSiteHndlr class를 삭제 후 웹로직(테스트서버)에서 기동을 하면 해당 첨부파일처럼 빈 생성을 실패한다고 나옵니다.
톰캣(로컬)에서는 빈 생성 실패하지 않고 정상적으로 서버 기동되고 스프링 시큐리티 롤 권한도 얻어오는 것을 디버깅으로 확인했습니다.. WAS가 다르고 라이브러리 참조하는게 달라서 그런건인지..어떤 차이가 있는것인지 궁금합니다.
감사합니다.
환경 : spring security 2.0.4, jdk 1.6.0_45, apache-tomcat-6.0.44, weblogic 10.3.6.0, jenkins 2.0, maven 3.2.6.RELEASE
스프링 시큐리티 및 라이브러리 참조에 대해..많이 검색해봤는데 해결을 하지 못해서 문의 합니다.
1. EgovComCrossSiteHndlr class에서 BodyTagSupport를 상속 받게 되는데 톰캣(로컬)에서는 이상이 없는데
웹로직(테스트서버)에서는
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 22 in the generated java file
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
-> 메이븐에 jsp-api dependency를 추가하면 메이블 컴파일 시 문제는 없는데 톰캣에서 jsp를 서블릿으로 컴파일 할 수 없다고 나옵니다.
라이브러리 충돌이라는 글이 많아 프로젝트 프로퍼티 빌드패스에서 톰캣 Server Runtime 라이브러리는 제거 및 WEB-INF/lib servlet-api.jar 파일 삭제했는데 해결이 되지 않았습니다.
2. EgovComCrossSiteHndlr class를 삭제 후 웹로직(테스트서버)에서 기동을 하면 해당 첨부파일처럼 빈 생성을 실패한다고 나옵니다.
톰캣(로컬)에서는 빈 생성 실패하지 않고 정상적으로 서버 기동되고 스프링 시큐리티 롤 권한도 얻어오는 것을 디버깅으로 확인했습니다.. WAS가 다르고 라이브러리 참조하는게 달라서 그런건인지..어떤 차이가 있는것인지 궁금합니다.
감사합니다.
첨부파일
A
김태일님, 안녕하세요.
servlet 라이브러리의 충돌로 인한 오류로 보입니다.
언급해주신 EgovComCrossSiteHndlr 클래스의 경우 servlet-api를 import하여 사용합니다.
servlet 라이브러리의 경우 was별로 각자 제공되기 때문에, 메이븐에 servlet dependency를 추가하실 경우, scope를 provided로 지정해야 메이븐을 통한 디플로이시 오류가 발생하지 않습니다. 실제로, 표준프레임워크에서 제공하는 샘플(예제)의 경우 톰캣 라이브러리 기준으로 provided로 scope가 지정되어 있습니다.(실제 운영에 올라갈 때는 운영 was의 servlet을 이용하도록)
테스트서버에 프로젝트를 디플로이하신 후, 웹로직의 servlet 라이브러리를 프로젝트의 WEB-INF/lib에 복사하신 후 테스트를 진행해 보시기 바랍니다.
감사합니다.
servlet 라이브러리의 충돌로 인한 오류로 보입니다.
언급해주신 EgovComCrossSiteHndlr 클래스의 경우 servlet-api를 import하여 사용합니다.
servlet 라이브러리의 경우 was별로 각자 제공되기 때문에, 메이븐에 servlet dependency를 추가하실 경우, scope를 provided로 지정해야 메이븐을 통한 디플로이시 오류가 발생하지 않습니다. 실제로, 표준프레임워크에서 제공하는 샘플(예제)의 경우 톰캣 라이브러리 기준으로 provided로 scope가 지정되어 있습니다.(실제 운영에 올라갈 때는 운영 was의 servlet을 이용하도록)
테스트서버에 프로젝트를 디플로이하신 후, 웹로직의 servlet 라이브러리를 프로젝트의 WEB-INF/lib에 복사하신 후 테스트를 진행해 보시기 바랍니다.
감사합니다.