이노무 Tomcat 은 JNDI 등록때문에 받는 스트레스가 심하다. 버전에 따라 JNDI 등록하는 방법이 다르기 때문인데
이번에는 Tomcat 5.5 를 기준으로 한다.

인터넷 검색 해보면 각양 각색으로 설명이 틀린데, 뭐 META-INF 에 context.xml 을 작성해라, server.xml 만 작성하면 된다는 등등.. 그런데 왜 난 잘 안되는걸까..

결론부터 말하자면, Tomcat 5.5 에선, server.xmlweb.xml 에 모두 설정을 해줘야 한다.

server.xml 설정

<GlobalNamingResources> ... </GlobalNamingResources> 내 이건, <Host> 내의 <Context>... </Context> 이건 관계 없이 아래와 같이 설정한다

[Derby]

<Resource description="Test database connection" name="jdbc/testDs"
 auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30"
 maxWait="10000" username="userid" password="password" driverClassName="org.apache.derby.jdbc.ClientDriver"
 url="jdbc:derby://localhost:1527/C:/MyDevTool/bin/db-derby-10.4.2.0/officedb" />

[MySQL]
<Resource description="Test database connection" name="testDs2"
 auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30"
 maxWait="10000" username="userid" password="password" driverClassName="com.mysql.jdbc.Driver"
 url="jdbc:mysql://localhost:3306/my_db?autoReconnect=true" />

web.xml 설정

server.xml 만 설정해서 되는건 아니고, web.xml 도 설정 해줘야 하는데, 이놈때문에 좀 해멨다.
web.xml 의 가장 마지막 정도에 아래와 같이 정의해줘야 한다.

[Derby]

 <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/testDs</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

[MySQL]
 <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/testDs</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

이렇게 server.xml / web.xml 두가지를 해줘야 정상 작동 한다.

그리고, Tomcat 에서도, name 을, jdbc/testDs 로 하지 않고
testDs 로만 설정 해줘도 잘 동작 한다.


반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,
1. 커널 최신판으로 업그레이드
 설치에 앞서, 커널을 최신판으로 업데이트 해야 한다. 
 
$ sudo apt-get update
$ sudo apt-get upgrade
 
이러면, 패키지 목록을 최신버전으로 가져오고, 모든 패키지 및 커널을 업그레이드 한다

2. dkms 패키지 설치

 dkms 패키지를 설치해야 커널 모듈을 컴파일 할 수 있는 환경이 구성되므로, 해당 패키지를 설치 한다

$ sudo apt-get install dkms

3. build-essential 및 linux-header-XXXXX 패키지 설치

 Guest Addition 을 설치할 때, 커널 모듈을 추가하고 커널을 재컴파일 하기 위해서, 필요한 패키지를 설치한다
$ sudo apt-get install build-essential linux-headers-`uname -r`
 linux-headers-`uname -r` 명령 활용하여 정확한 버전 갖고온다

4. VirtualBox Guest Addition 설치
 VirtualBox 의 VM Guest 화면에서, "장치>게스트 확장 설치.. " 메뉴를 클릭하여, VBox Guest Addition ISO 이미지를 Mount 시킨다.

 그리고, /dev/cdrom1 을 (상황에 따라 달라질 수 있음) /mnt/cdrom 같이 적절한 곳에 mount 한다
$ sudo mount /dev/cdrom1 /media/cdrom

 Mount 한 CD-ROM 에서, VBoxLinuxAddition-x86.run 을 싫행시킨다. (Guest OS 에 따라 달라질 수 있다)
$ ./VBoxLinuxAddition-x86.run

 커널 컴파일까지 잘 진행됐으면 성공이다.

커널 컴파일 후에, X-Server 관련한 컴파일을 시도하는데, 이때 X 를 사용하지 않는 시스템이면, Fail 이 나도 상관 없다. 그 전단계인 모듈 컴파일 하고, 커널 컴파일까지만 잘 되면 된다.

5. 시스템 재부팅 및 확인

 시스템을 재부팅 하고, 아래 명령으로, 모듈이 잘 올라왔는지 확인한다.
$ lsmod | grep vboxvfs

 결과가 나오면 커널에 잘 올라간 것이고, 없으면 이상 있는게다.

6. vboxsf 마운트 시키기

 이제 본격적으로, 공유된 디렉토리를 접근하기 위해 Mount 한다.
 이때, VM 설정에 추가한, 공유디렉토리의 이름으로 Mount 를 해야 하므로, 해당 이름을 잘 알아두어야 한다.

 해당 공유이름은 아래 명령의 결과 중에 Shared folders: 쪽에서 찾을 수 있다.
$ VBoxManage showvminfo "VM 이름"

 만약 Shared folder 이름이 SHARED 리고 가정하고, /mnt/vm_shared 로 마운트 하려면,
$ mount -t vboxsf SHARED /mnt/vm_shared
와 같이 Mount 하면 사용 가능하다.

반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,
Ubuntu 에서 특정 사용자의 VirtualBox VM을 root 계정을 통해 실행시키려 했더니,
COM 초기화 실패 에러가 난다. 왜그런가 했더니, 특정 사용자의 Home 디렉토리 환경이 안잡힌게 문제였다.

보통 sudo 사용 시
$ sudo -u userid 커맨드..
사용하는데, 이것 말고, 한가지 옵션 (-H ) 만 더 넣어주면 해결 된다.

즉,
$ sudo -H -u userid 커맨드...
처럼 -H 옵션을 넣어주면, 사용자의 Home 디렉토리를 사용하게 된다.
반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,