어제 설치한 Jeus 6에서 MySQL을 연동한 홈페이지를 올려보기로 하였습니다. 이전엔 Resin과 Tomcat에서 테스트 해봤던 홈페이지입니다. 학교 과제로 제출하였던 홈페이지였습니다.

오랜만에 이런 작업 하는 거라 거의 4시간은 걸릴것 같습니다.

시넵티 꾸러미 관리자를 통해 우선 MySQL을 설치합니다.


MySQL 설치시 root 패스 워드를 입력합니다.

/root/jeus6/webhome/app_home/에다 원하는 application 이름의 디렉토리를 생성합니다. 저는 downtown이라고 만들었습니다. 기존 Tomcat에서 돌리던 홈쇼핑몰 파일들을 모두 이 폴더에 복사해 넣습니다.

$mkdir downtown


$JEUS_HOME/config/엔진컨테이너이름/JEUSMain.xml 파일을 열어 자신이 아까 만든 폴더 이름의 application항목을

<?xml version="1.0" encoding="UTF-8"?>
<jeus-system version="6.0" xmlns="http://www.tmaxsoft.com/xml/ns/jeus"
    xmlns:ns2="http://java.sun.com/xml/ns/javaee" xmlns:ns3="http://java.sun.com/xml/ns/persistence">
    <node>
        <name>shin-desktop</name>
        <engine-container>
            <name>container1</name>
            <command-option>-Xms256m -Xmx512m</command-option>
            <engine-command>
                <type>ws</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>jms</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>ejb</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>servlet</type>
                <name>engine1</name>
                <system-logging>
                    <level>ALL</level>
                </system-logging>
            </engine-command>
            <sequential-start>true</sequential-start>
        </engine-container>
        <class-ftp>true</class-ftp>
        <sequential-start>true</sequential-start>
        <enable-webadmin>true</enable-webadmin>
    </node>
    <application>
        <name>examples</name>
        <path>examples.ear</path>
        <deployment-type>EAR</deployment-type>
        <deployment-target>
            <target>
                <engine-container-name>shin-desktop_container1</engine-container-name>
                <web-context-group>
                    <name>MyGroup</name>
                </web-context-group>
            </target>
        </deployment-target>
    </application>
    <application>
        <name>downtown</name>
        <path>/root/jeus6/webhome/app_home/downtown</path>
        <deployment-type>COMPONENT</deployment-type>
        <deployment-target>
            <target>
                <engine-container-name>shin-desktop_container1</engine-container-name>
                <web-context-group>
                    <name>MyGroup</name>
                </web-context-group>
            </target>
        </deployment-target>
    </application>
</jeus-system>

mysql에서 DB를 생성해줍니다.

shin@shin-desktop:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.0.67-0ubuntu6 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> CREATE DATABASE shin;
Query OK, 1 row affected (0.06 sec)

mysql>

이제 JDBC Driver for MySQL (Connector/J) 파일을 mysql 홈페이지에서 다운 받습니다.
http://www.mysql.com/products/connector/

압축을 푼 jar파일을 JEUS와 JRE디렉토리에 복사하여야 합니다.

$JAVA_HOME/jre/lib/ext
$JUES_HOME/lib/system

위 폴더에 jar파일을 복사해 넣기만 하면 됩니다. Path는 시스템마다 다를 수 있기 때문에 어떤 경로가 현재 사용중인 디렉토리인지 확인후 복사합니다.

import java.sql.*;

public class JdbcTest
{
 public static void main(String args[])
 {
 
  String DB_URL = "jdbc:mysql://localhost:3306/DB이름";
  try{
   Class.forName("com.mysql.jdbc.Driver");
      DriverManager.getConnection(DB_URL,"root","password");
   System.out.println("jdbc connection good");
  }catch (Exception e){
    System.out.println(e);
  } 
 }
}

위 파일을 컴파일 후 실행해 보아 설치가 잘 되었는지 확인합니다. 정상적으로 jdbc driver가 설치 되었다면 아래와 같은 메세지를 확인 할 수 잇습니다.
jdbc connection good

jeus를 컨테이너를 제 기동 합니다.
http://localhost:9744/webadmin 에 접속해서 웹컨테이너를 손쉽게 재 기동할 수 있습니다.

정상적인 페이지가 나오기를 기대하였으나 내부오류 500 메세지가 떴습니다. 디버깅을 위해서 웹브라져에서 Exception Trace를 출력할 수 있습니다.

$JEUS_HOME/webhome/app_home/애플리케이션이름/WEB-INF/jeus-web-dd.xml 파일을 열러 attach-statcktrace-on-error의 값을 true변경하면 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<jeus-web-dd version="6.0" xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
    <context-path>/downtown</context-path>
    <enable-jsp>true</enable-jsp>
    <auto-reload>
        <enable-reload>false</enable-reload>
        <check-on-demand>false</check-on-demand>
    </auto-reload>
    <max-instance-pool-size>-1</max-instance-pool-size>
    <webinf-first>true</webinf-first>
    <attach-stacktrace-on-error>true</attach-stacktrace-on-error>
</jeus-web-dd>

우여 곡절끝에 설정이 완료되었고 정상적인 페이지를 확인 할 수 있었습니다.^^;;


저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

MySQL의 특징은 무료(직적접인 서비스를 하지 않거나, 재배포를 하지 않는다면 무료)이면서도 강력한 기능을 지원하는 것 같습니다.
MySQL은 다른 DBMS와 달리 하나의 SQL서버에서 여러 종류의 엔진으로 DB를 운영 할 수 있다는 점입니다.

방학때 오라클 배우면서.. MySQL에서 같은 명령을 몇개 날려본적 있었습니다..그 때 MySQL에서는 트랜젝션 기능이 없고 외부키 기능이 없는 줄 알았습니다.

MyISAM과 InnoDB 엔진중에서 원하는 SQL서버 엔진을 선택하여 복합적으로 운영이 가능합니다.

MyISAM은 일반적으로 인터넷 게시판, 블로그 등 소규모 사이트에서 SELECT쿼리 문이 많이 사용되는 경우 매우 빠른 속도를 보여 인터넷 홈페이지에서 많이 사용되며 기본값입니다.

InnoDB는 좀더 강력한 기능을 가집니다. 오라클 처럼 transaction을 지원하며 FOREIGN KEY를 사용할 수 있습니다. 개인용 DB보다는 큰 DB에 적합한 DB입니다.

오라클 처럼 table space를 사용하고 log_archive를 사용하여 장애 발생에도 강력한 복구 기능을 지원할 수 있습니다.

TABLE 생성시 ENGINE=InnoDB를 사용하면 InnoDB ENGINE을 사용할 수 있습니다.

자동 commit을 끄기 위해

SET auto_commit =0;

또는

begin;

명령을 사용하면 트랜젝션 기능을 이용할 수 있습니다.

mysql> CREATE TABLE  test(
    -> num int(10) unsigned NOT NULL auto_increment,
    -> name varchar(45) NOT NULL,
    -> PRIMARY KEY(num)
    -> )ENGINE=InnoDB DEFAULT CHARSET=euckr;
Query OK, 0 rows affected (0.01 sec)

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values(null, "shin");
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+-----+------+
| num | name |
+-----+------+
|   1 | shin |
+-----+------+
1 row in set (0.01 sec)

mysql> rollback;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from test;
Empty set (0.00 sec)

mysql>


 

신고
크리에이티브 커먼즈 라이선스
Creative Commons License


티스토리 툴바