JDBC 테스트 중 sqljdbc.jar가 포함된 runnable jar 파일을 실행하면 아래와 같은 Exception을 일으키며 파일이 실행되지 않는다.
Exception in thread "main" java.lang.SecurityException: invalid SHA1 signature f
ile digest for com/microsoft/sqlserver/jdbc/SQLServerException.class
at sun.security.util.SignatureFileVerifier.verifySection(Unknown Source)
at sun.security.util.SignatureFileVerifier.processImpl(Unknown Source)
at sun.security.util.SignatureFileVerifier.process(Unknown Source)
at java.util.jar.JarVerifier.processEntry(Unknown Source)
at java.util.jar.JarVerifier.update(Unknown Source)
at java.util.jar.JarFile.initializeVerifier(Unknown Source)
at java.util.jar.JarFile.getInputStream(Unknown Source)
at sun.misc.URLClassPath$JarLoader$2.getInputStream(Unknown Source)
at sun.misc.Resource.cachedInputStream(Unknown Source)
at sun.misc.Resource.getByteBuffer(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
내 나름대로 정의한 이유인즉 sqljdbc에 포함된 class 파일에 SHA1 방식으로 암호화 맵핑이 되어 있는데 JVM에서 풀지 못하여 Exception이 발생하지 않을까 한다.
그래서 간단한 해결 방법을 찾아보자~!
1. Microsoft 홈페이지로 들어가서 sqljdbc 파일을 다운로드 받는다.(해당 링크는 2.0 버젼)
http://www.microsoft.com/downloads/ko-kr/details.aspx?displaylang=ko&FamilyID=99b21b65-e98f-4a61-b811-19912601fdc9
2. 다운로드 받은 후 설치를 하면 디렉토리 안에 2.0 버젼의 경우 sqljdbc.jar와 sqljdbc4.jar 파일이 있음을 확인 할 수 있다.
3. sqljdbc.jar 또는 sqljdbc4.jar 파일을 압축 해제 한다.
3. 압축 해제한 디렉토리에서 META-INF 폴더로 이동한다.
4. 폴더에 있는 SIGNED.SF / SIGNED.RSA 파일을 삭제한다.
단, 2005 이하 버전용 sqljdbc의 경우 zigbert.sf / zigbert.rsa 이며 동일하게 삭제 한다.
5. MANIFEST.MF 파일을 열어보면 아래와 같은 내용을 확인 할 수 있다.
아래 부분의 1, 2, 3 Line 을 제외한 나머지 Line을 모두 지운 후 다시 sqljdbc.jar 파일로 압축을 한다.
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.2
Created-By: 1.5.0_15-b04 (Sun Microsystems Inc.)
Name: com/microsoft/sqlserver/jdbc/SQLServerException.class
SHA1-Digest: wJmi22LxY0sGSj6Fo/b+189olOA=
.....
6. sqljdbc.jar 파일을 해당 프로젝트에 다시 추가한후 runnable jar에 포함하여 실행 가능한지 테스트 한다.
'Database > SQL Server' 카테고리의 다른 글
SQL SERVER 데이터베이스(*.mdf)/로그(*.ldf) 파일 삭제 (0) | 2011.05.02 |
---|---|
MSSQL 간단 암호화(MSSQL 2000) (0) | 2011.04.20 |
MSSQL Session Kill (0) | 2010.11.25 |
MSSQL 2000 시스템 데이터 형식 (0) | 2010.08.15 |
MSSQL 시스템 통계, 텍스트 및 이미지 함수 그리고 행집합 (0) | 2010.08.15 |