제가 진행한 게시판 개발 과정을 전부 포스팅 하기에는 양도 많기도 하거니와 무엇보다 제가 개발을 잘 모르네요…;;;
제가 직접 포스팅 하기보다는 저의 게시판 프로젝트와 개발에 참고한 블로그를 올리겠습니다.
이 포스트가 Spring 게시판 개발 이야기의 마지막 포스트 입니다.
Spring 개발 참고 블로그
http://addio3305.tistory.com/category/Spring
http://lsk925.tistory.com/category/%EC%9B%B9%EC%96%B8%EC%96%B4/spring
아래는 제 프로젝트 압축 파일입니다.
아래는 SQL Query 입니다. 개발 도중 테이블을 수정한 게 있어서
VO를 참고해서 테이블의 구조를 손봐야합니다. Sequence 또한 마찬가지.
[developer]web develop_board.sql
Oracle 오류 해결
참고로 저는 oracle12.1 (oracle12c) 에서 진행 했습니다.
오류 :
java.lang.ClassNotFoundException: oracle/jdbc/oracledriver
java.lang.noclassdeffounderror: oracle/jdbc/oracledriver
해결:
Oracle JDBC Driver가 없어서 생기는 오류입니다.
라이선스 문제로 인해 Maven 저장소에서 받아오지 못한다고 하네요.
Maven에 Repository를 추가하는 방법과 로컬로 추가하는 방법 중
두 번째 방법으로 해결했습니다.
필요한 라이브러리 파일은 서버에 설치한 Oracle 디렉토리에서 구할 수 있습니다.
다만, Oracle 버전에 따라 위치가 다릅니다.
Oracle 홈페이지에서도 구할 수 있습니다.
http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html
무슨 파일을 사용해야 할 지 모른다면 아래를 참고하세요.
ojdbc7.jar : Certified with JDK7 and JDK 8; It contains the JDBC driver classes except classes for NLS support in Oracle Object and Collection types.
ojdbc6.jar : For use with JDK 6; It contains the JDBC driver classes except classes for NLS support in Oracle Object and Collection types.
JDK 버전에 맞게 ojdbc7.jar / ojdbc6.jar 파일을 개발자 PC로 옮긴 후
아래와 같이 입력합니다.
> mvn install:install-file -Dfile={Path/to/your/ojdbc.jar} -DgroupId=[그룹 이름]
-DartifactId=[ojdbc 파일 이름] -Dversion=[Oracle 버전] -Dpackaging=jar
Dgroup, DartifactId, Dversion 옵션은 프로젝트의 maven 설정인 pom.xml 에 추가할 내용입니다.
설정 내용이 정해진 것은 아니지만 관리하기 편하게 해주세요.
이제 pom.xml에서 dependencies의 끝에 다음 내용을 추가합니다.
<!-- ORACLE database driver --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc7</artifactId> <version>12.1</version> </dependency>
참고:
http://www.mkyong.com/maven/how-to-add-oracle-jdbc-driver-in-your-maven-local-repository/
이건 다른 방법 :
오류:
java.sql.SQLException: ORA-28040: No matching authentication protocol
해결:
Oracle 12c 부터 발생하는 오류로 서버와 클라이언트의 호환성을 맞춰줘야 하는 것 같습니다.
(포스팅을 미뤄서 하니 가물가물하네요;;;)
환경변수 $ORACLE_HOME/network/admin 에 있는
sqlnet.ora 파일을 수정합니다.
# su - oracle
$ cd $ORACLE_HOME/network/admin
$ vi sqlnet.ora
아래 내용 추가:
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
숫자에 해당하는 Oracle 버전부터 그 이후의 버전들과 호환됩니다.
(지금 설정은 Oracle 10 이상의 버전과 호환)
참고:
http://blog.daum.net/_blog/BlogTypeView.do?blogid=0TuGj&articleno=487&_bloghome_menu=recenttext
오류:
java.sql.SQLException: ORA-01950: no privileges on tablespace 'WEB_DB'
해결:
Table Space 사용에 대한 권한이 없어서 발생하는 오류입니다.
관리자 계정을 이용해서 사용할 USER에게 권한을 주어야 합니다.
ALTER USER 유저명 QUOTA 100M|unlimited(둘 중 택1) ON 테이블스페이스명; GRANT UNLIMITED TABLESPACE TO 유저명; (권한 제한이 없기 때문에 위험)
QUOTA: 사용량을 제한.
오류:
java.sql.SQLException: ORA-00904: "NOW": invalid identifier
해결:
부적합한 식별자 오류 입니다. 테이블에 없는 컬럼명을 사용하였거나 오타로 컬럼명이 옳지 않은 경우 발생합니다.
쿼리를 확인하세요.
기타
개발할 때는 뭐가 엄청 많았는데 기억이 안나 네요.
한 가지 중요한 것은
java 파일 이름을 바꾸거나 파일을 삭제할 경우 이클립스 프로젝트 폴더에서 target 폴더를 삭제해줘야 합니다.
build 시 target 폴더 안에 java가 컴파일 되어 class 파일이 저장되는 데,
java 파일 이름을 바꾸거나 파일을 삭제해도 이전에 생성된 class 파일을 변경 혹은 삭제하지 않아 이상하게 동작할 수 있습니다.
target 폴더는 지운 후 다시 build하면 재생성 됩니다.
프로젝트 구조와 실제 서버 구조 차이
mvc로 개발할 시 개발 프로젝트와 서버의 구조 차이 입니다.
Eclipse Project 구조:
서버 디렉토리 구조(Tomcat 기준):
참고:
http://www.datadisk.co.uk/html_docs/jsp/jsp_mvc_tutorial.htm