티스토리 뷰

우선 Servers 를 선택합니다..

 

없으면 상단 메뉴 Window > Show View > Server 를 선택해서.. Servers 항목을 생성합니다..

 

그리고 마우스 오른쪽 버튼 누르고 New > Server 생성!..

아니.. 톰켓 버전을 8.5, 9.0 까지 받았것만;.. 지원하는건 8.0 까지입니다;..

 

 

이것도 왜 그런지는 모르겠는데.. 제가 하던 프로젝트는 다 톰켓 6.0 버전을 사용하더군요..

 

저는 8.0 버전을 쓰겠습니다!..

 

 

그리고 생성한 프로젝트를 선택하고 Add > 를 눌러 왼쪽에서 오른쪽으로 이동시킵니다..

 

 

그리고 완료를 누르면 아무것도 없던 곳에 새로 생성한 톰켓 서버가 생겼고..

 

 

오른쪽 끝에 초록생 동그라미에 흰색 삼각형을 누르면 톰켓 서버가 시작됩니다..

 

 

리눅스 같으면 톰켓을 설치하면..

 

/usr/local/tomcat 에서 설치가 될테고..

 

시작할때는 /usr/local/tomcat/bin/startup.sh..

종료할때는 /usr/local/tomcat/bin/shutdown.sh..

 

명령어를 통해서 켰다 껐다 하겠죠..

 

대부분이 리눅스를 사용하곤 하는데..

 

제가 일부 대기업에 업무지원 가보면 윈도우서버도 많이 사용하시더라구요..

 

아무튼 톰켓 서버 추가 끝!..

 

 

예제 소스를 설치 했기 때문에.. 톰켓 서버를 실행하면..

 

 

저희가 지금까지 게시판 코딩했던것이 한번에;..

 

보통 톰켓 서버를 실행하고 http://localhost:8080 경로를 인터넷 창에 적어주시면 해당 페이지가 열리는데..

 

이건 열고 보니.. 에러가..

 

경로를 잘 모를때..

 

물론 직접 만드신 분들은 아시겠지만..

 

예제 경로가 어디로 지정되어있는지 찾기 귀찮아서 사용하는 방법;..

 

프로젝트 선택 후 마우스 오른쪽 버튼을 눌러서..

 

pandaStudy > Run As > Run on Server..

 

이미 톰켓 서버를 만들었으니까 Finish..

 

그러면 이클립스 안에 인터넷 창이 열리면서 경로와 함께 화면을 보여줍니다..

 

그 경로(http://localhost:8080/sample/)를 복사해서 익스플로러 창에 붙여넣으면..

 

당연히 똑같이 나오겠죠;..

 

가끔 프로젝트를 진행하다 보면.. 적게는 한개.. 많으면 10개까지 다른 경로를 설정해서 작업할 때가 있는데요..

 

물론 해당 경로를 직접 지정해 주기 때문에.. 모를 경우는 없지만.. 타이핑 하기 귀찮아서;..

 

간혹 쓰곤합니다;..

 

물론 개발할때는 즐겨찾기 해놓고 사용하니까.. 저 방법을 잘 안쓰긴 하죠..

 

 

 

자.. 이제는 오라클 연동!..

 

게시판 내용이 있다고 해서.. 오라클이 연동된게 아닙니다..

 

연동을 위해서 지금까지 작업한게 없어요;..

 

지금까지 예제소스에 들어있는 샘플 DB 파일을..

 

 

화면에 뿌려준거죠..

 

 

mysql, mssql, postgresql 등의 DB관리 프로그램이 있는데..

 

저는 공공기관, 공기관에서 많이 사용하는 oracle 을 기준으로 하도록 하겠습니다..

 

 

우선 집에다가 오라클 설치하는건 좀 부담이 됩니다;..

 

오라클 설치하면 PC가 많이 느려지거든요..

 

그래서 그런 문제들 때문에 하드 드라이브 별 저장하는게 다 틀린건데..

 

이때 가장 좋은 방법은..

 

가상 운영체제를 만들어서.. 해당 가상운영체제를 연결해서 사용하는거죠..

 

개발이 끝나면 싹 지워버리고..

 

회사 개발서버가 따로 있긴한데..

 

제가 데이터 싹 날렸다가 새로넣고 이것저것 작업을 많이 하다보니..

 

개발서버 DB 가지고 테스트 하는 경우.. 제가 데이터 날리면 작업을 하지 못해서..

 

제 개발 겸 테스트 전용으로 하나 만들어서 사용하곤 있는데..

 

기존에 제가 가상머신에다가 오라클 연동 뭐 그런 제목으로 올린 내용이 있더라구요..

 

[Linux] CentOS 5.5 오라클11gR2 설치 성공..

 

이거 참고 하시거나.. 다른 블로그에도 좋은 내용있는 부분들 많으니까..

 

무책임하지만;.. 그런 방법들을 통해서.. 오라클 서버를 하나 만들어줍니다;..

 

 

정말 옛날에 설치했던 오라클 서버라.. 오라클 9i 네요..

 

나중에 시간나면 11g 아니면 12c 로 바꿔봐야겠습니다..

 

 

우선 연동부터 하면.. DB가 없기 때문에 오류가 날테니..

 

DB부터 구성을 해주고 연동을 하겠습니다..

 

 

헐;.. 제가 언제 이걸 해보긴 했나봅니다;..

기억도 안나는데.. 이미 테이블이 만들어져있어서;..

 

 

 

우선 처음하는거다.. 라는 생각으로 싹 날리고.. 새로 만들어줍니다..

 

오라클인 경우 해당 샘플db.sql 에 있는 쿼리에서 MEMORY 만 빼고..

그리고 뒤에 세미콜론( ; ) 을 붙여서 사용하면 됩니다..

 

CREATE TABLE SAMPLE(ID VARCHAR(16) NOT NULL PRIMARY KEY,NAME VARCHAR(50),DESCRIPTION VARCHAR(100),USE_YN CHAR(1),REG_USER VARCHAR(10));


CREATE TABLE IDS(TABLE_NAME VARCHAR(16) NOT NULL PRIMARY KEY,NEXT_ID DECIMAL(30) NOT NULL);

 

INSERT INTO SAMPLE VALUES('SAMPLE-00001','Runtime Environment','Foundation Layer','Y','eGov');

 

이런식으로다가.. DB 를 구성해주시고..

 

이제 본격적인 연동을 시작해보죠..

 

pandaStudy > pom.xml 을 선택하여 열어줍니다..

 

 

친절하게.. 중간에 필요시 사용 이란 문구와 함께 주석처리가 되어있네요..

 

        <dependency>
            <groupId>com.googlecode.log4jdbc</groupId>
            <artifactId>log4jdbc</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
       
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
       

mysql 안쓸꺼니까 요것만 지워주시고..
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.31</version>
        </dependency>

 

        <dependency>
            <groupId>ojdbc</groupId>
            <artifactId>ojdbc</artifactId>
            <version>14</version>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ojdbc-14.jar</systemPath>
        </dependency>

 

오라클 11 버전 이하는 ojdbc-14 를 사용하시면 됩니다..

 

저장을 했더니만.. 빨간 X표와 함께 빨간 밑줄이 생기면서 Missing artifact ojdbc:ojdbc:jar:14 라고 나옵니다..

 

 

 

제가 예전에 듣기로 오라클 jdbc 는 오라클과 메이븐의 라이센스 문제 때문에 메이븐으로 다운로드 못받는다더군요..

 

http://www.java2s.com/Code/Jar/o/ojdbc14.htm .. 그래서 따로 받아줘야합니다..

 

받아서 메이븐 경로에 넣어줍니다..

 

이전에 옮겼던 메이븐 위치에 넣어주고..

 

D:/eGovFrameDev-3.5.1-64bit/workspace/repository/com/oracle/ojdbc14/10.2.0.4.0/ojdbc14-10.2.0.4.0.jar ..

 

메이븐 위치를 변경하지 않았다면..

 

C:\Users\pandaPC\.m2\repository\com\oracle\ojdbc14 에 넣어주시면 됩니다..

 

        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc14</artifactId>
            <version>10.2.0.4.0</version>
        </dependency>

 

 

빨간줄 안나오는것 확인하시고.. 다음 준비를 합니다..

pandaStudy > src/main/resources > egovframework > spring > context-datasource.xml 을 선택해서 열어줍니다..

 

 

여기도 필요한 부분 골라서 쓰라고 친절하게 주석처리가 각각 되어있네요..

 

샘플 안쓸꺼니까 또 오라클 빼고 나머지도 안쓸꺼니까 싹 지워버리셔도 됩니다..


 <jdbc:embedded-database id="dataSource" type="HSQL">
  <jdbc:script location= "classpath:/db/sampledb.sql"/>
 </jdbc:embedded-database>

    <!-- hsql
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="net.sf.log4jdbc.DriverSpy"/>
        <property name="url" value="jdbc:log4jdbc:hsqldb:hsql://localhost/sampledb"/>
        <property name="username" value="sa"/>
    </bean>
    -->  


    <!-- Mysql 
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/example" />
        <property name="username" value="user"/>
        <property name="password" value="password"/>
    </bean>
    -->
   
    <!-- oracle -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ora920" />
        <property name="username" value="study"/>
        <property name="password" value="study"/>
    </bean>

 

연동 설정은 끝났으니..

 

다시 톰켓 서버 실행 해서 데이터가 잘나오는지 봅시다..

 

여기까지 잘 따라 오셨다면.. 2가지 유형의 에러를 보실 수 있습니다..

 

에러가 발생했습니다.. 와..

 

 

sql 에러가 발생했습니다!..

 

우선 첫번째 에러 부터 확인해보죠..

 

그대로 따라하셨다면 발생하지 않을 확률이 높은데.. 발생했다면..

 

잘 아는 사람에게 물어봐서 해결하는게 가장 쉬운 방법이긴 한데..

 

에러 발생할때마다 물어볼수도 없고.. 에러를 확인하고 해결하는 방법까지..

 

같이 공부를 해나가는겁니다!..

 

 

하단 메뉴에 콘솔이라고 있는데..

톰켓 server 에서 실행되는 내용들을 보여줍니다..

 

톰켓의 로그를 찍는 catalina.out 인거죠..

 

우선 서버 실행 후 콘솔에 찍힌 오류를 확인해 봅니다..

 

ERROR [egovframework.example.sample.service.impl.EgovSampleServiceImpl]

Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'

 

캔낫 로드 JDBC 드라이버..

 

JDBC 드라이버를 읽을 수 없다.. 란 오류인데..

 

pom.xml 에서 수정은 이렇게 했지만..

 

        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc14</artifactId>
            <version>10.2.0.4.0</version>
        </dependency>

 

오류를 만들기 위해서 이렇게 설정을 해줬습니다..

 

        <dependency>
            <groupId>ojdbc</groupId>
            <artifactId>ojdbc</artifactId>
            <version>14</version>
            <scope>system</scope>
            <systemPath>D:/eGovFrameDev-3.5.1-64bit/workspace/repository/com/oracle/ojdbc14/10.2.0.4.0/ojdbc14-10.2.0.4.0.jar</systemPath>
        </dependency>

 

우선 groupId, artifactId, version 이 메이븐에 넣어준것과 맞지 않아서 그럴수도 있죠..

systemPath가 잘못되었을수도 있구요..

 

JDBC 파일 로드는 여러가지 문제가 있기 때문에.. 각각 해당 방법을 찾아서 적용해보셔야합니다..

 

어떤분은 pom.xml 에 이걸 추가했더니 된다.. 라고 하시는 분도 있고..

 

 <repositories>
 <repository>
  <id>oracle</id>
  <name>ORACLE JDBC Repository</name>
  <url>http://maven.jahia.org/maven2</url>
 </repository>
</repositories>

 

또 어떤분은 pom.xml 에 이걸 추가했더니 된다.. 라고 하시는 분도 있고..

 

 <repository>
  <id>mesir-repo</id>
  <url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>
 </repository>
</repositories>

 

여러가지 방법이 검색되어지는데..

 

아무튼 이클립스에서 ojdbc14 를 읽어오지 못해서 발생하는 문제로..

 

해당 파일을 경로에 맞게 넣어주던지 설정해 주면됩니다..

 

 

두번째 에러 보겠습니다..

 

sql 에러가 발생했습니다! error code: {0}, error msg: {1} ..

 

다시 콘솔을 확인해보니..

 

ERROR [egovframework.example.sample.service.impl.EgovSampleServiceImpl] SqlMapClient operation; bad SQL grammar [];

--- Check the sampleDAO.selectSampleList-InlineParameterMap.

ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다

 

라는 오류가 나왔습니다..

 

친철하게 sampleDAO.selectSampleList 를 확인해 보라고 하는군요..

 

ctrl + H 를 누르면 검색창이 나오는데..

 

File Search 에 sampleDAO.selectSampleList 를 입력하고 검색해보니..

SQL 부분이 검색이됩니다..

 

 

해당 부분을 더블클릭하면.. 자동으로 해당 부분으로 이동됩니다..

 

 <select id="sampleDAO.selectSampleList" parameterClass="searchVO" resultClass="egovMap">

   SELECT
    ID, NAME, DESCRIPTION, USE_YN, REG_USER
   FROM SAMPLE
   WHERE 1=1
   <isEqual prepend="AND" property="searchCondition" compareValue="0">
    ID LIKE '%' || #searchKeyword# || '%'
   </isEqual>
   <isEqual prepend="AND" property="searchCondition" compareValue="1">
    NAME LIKE '%' || #searchKeyword# || '%'
   </isEqual>
   ORDER BY ID ASC
   LIMIT #recordCountPerPage# OFFSET #firstIndex#  
 </select>

 

해당 부분이 오라클에 맞지 않아서 나는 오류로.. 해당 쿼리를 변경해 줍니다..

 

SELECT ID, NAME, DESCRIPTION, USE_YN, REG_USER, ROWNUM
FROM (
SELECT ID, NAME, DESCRIPTION, USE_YN, REG_USER, ROWNUM RNUM
FROM (

   SELECT
    ID, NAME, DESCRIPTION, USE_YN, REG_USER
   FROM SAMPLE
   WHERE 1=1
   <isEqual prepend="AND" property="searchCondition" compareValue="0">
    ID LIKE '%' || #searchKeyword# || '%'
   </isEqual>
   <isEqual prepend="AND" property="searchCondition" compareValue="1">
    NAME LIKE '%' || #searchKeyword# || '%'
   </isEqual>
   ORDER BY ID ASC

)

)

<![CDATA[ WHERE ROWNUM <= #recordCountPerPage#  AND RNUM > #firstIndex# ]]> 

으로 쿼리를 수정했습니다..

 

XML 에서 <, > 부등호를 파싱하지 않도록 <![CDATA[ ]]> 를 넣어줍니다..

 

그리고 다시 톰켓 서버를 재시작!..

 

정상적으로 연동된걸 확인할 수 있습니다..

 

글목록, 등록, 수정, 삭제 등이 모두 포함된 게시판 하나를 만드는데..

 

몇번의 버튼 클릭과 수정으로 끝나버렸습니다..

 

이전 게시판 만들기는 태그부터 시작해서 이미지 파일까지 하나하나 만들어줘서 참 오래걸렸는데 말이죠..

 

 

 

그럼 다음은 심화학습; 으로.. 홈페이지를 만들어볼까요?..

 

도메인까지 따려면 돈이 드니까;.. 도메인까지는 아니고 로컬서버에서 접속해서 메인페이지를 보고..

 

회원가입, 로그인 등의 기능을 수행하는 홈페이지를 한번 만들어보죠..