NAS4DUAL에 톰캣 올리기

NAS4DUAL에 톰캣(tomcat)을 올려보았습니다.

 

NAS4DUAL에는 기본으로 java가 설치되어 있습니다.

java 설치 위치: /mnt/HDD1/@plugin/system/bin/java

 

아래 명령으로 톰캣을 다운로드하고 압축을 해제합다.

 

catalina.sh 파일에서 “# OS specific support”를 찾아서 바로 위에 JAVA_HOME 환경변수를 설정합니다.  이때 플러그인 폴더의 경로를 자신의 환경에 맞게 수정해야 됩니다.

catalina.sh 파일의 수정된 내용

 

이제 터미널에서 root 사용자로 전환하여 톰캣을 실행합니다. (java는 root 사용자로만 실행 가능함)

 

이제 톰캣이 구동되었습니다.

tomcat 재시작 쉘스크립트

tomcat pid를 찾아서 강제 종료시키고, 다시 시작시키는 쉘 스크립트입니다.

간혹 shutdown.sh로 종료가 안되는 경우가 있는데.. 이럴 경우에 사용하면 편리합니다.

아래 코드([출처] 톰켓 PID찾아서 킬하고 재시작 하는 쉘스크립트…|작성자 둘기)에서 색칠한 부분은 시스템에 따라 적절히 수정해서 사용해야 됩니다.

#!/bin/sh

if [ -z “ps -eaf | grep java|grep /usr/local/tomcat/bin” ]; then
       echo “Tomcat  was not started.”
else
       ps -eaf | grep java | grep /usr/local/tomcat/bin | awk ‘{print $2}’ |
       while read PID
               do
               echo “Killing $PID …”
               kill -9 $PID
               echo
               echo “Tomcat  is being shutdowned.”
               done
        /usr/local/tomcat/bin/startup.sh
fi

참고로 awk는.. 결과에서 원하는 내용을 뽑아내는 툴…

[root@Benz] /tmp #> ps -aef | grep java | grep tomcat
    root 13098     1  0 14:16:15 pts/3    0:32 /usr/jdk/jdk1.6.0_10/bin/java -Djava.endorsed.dirs=/usr/local/tomcat/common/end

[root@Benz] /tmp #> ps -aef | grep java | grep tomcat | awk ‘{print $2}’
13098

awk ‘{print $0}’-> root 13098     1  0 14:16:15 pts/3    0:32 /usr/jdk/jdk1.6.0_10/bin/java -Djava.endorsed.dirs=/usr/local/tomcat/common/end
awk ‘{print $1}’ ->root

Tomcat 5.0.27 + SQL Server 환경에 DBCP(DataBase Connection Pool) 사용

1. jdbc 드라이버 파일 복사
SQL Server 2005용 jdbc 드라이버 파일 sqljdbc.jar를 c:\Program Files\tomcat\common\lib\에 복사
SQL Server 2000일 경우 msutil.jar, msbase.jar, mssqlserver.jar

2. server.xml 설정
파일 위치: c:\Program Files\tomcat\conf\server.xml

<Host name=”localhost” debug=”0″ appBase=”webapps”
unpackWARs=”true” autoDeploy=”true”
xmlValidation=”false” xmlNamespaceAware=”false”>

<Context path=”” docBase=”X:\myAPP\source\jsp\FHMS\WEB_ROOT” debug=”0″ reloadable=”true”>
    <!– FHMS DB Setting –>
    <Resource name=”jdbc/fhms” auth=”Container” type=”javax.sql.DataSource”/>
    <ResourceParams name=”jdbc/fhms“>
    <parameter>
        <name>username</name>
        <value>webuser</value>
    </parameter>
    <parameter>
        <name>password</name>
        <value>adlf@reawt*d*</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:sqlserver://192.168.0.2:1433;databasename=fhms;SelectMethod=cursor;</value>
    </parameter>
    <parameter>
      <name>removeAbandoned</name>
      <value>true</value>
    </parameter>
    <parameter>
      <name>removeAbandonedTimeout</name>
      <value>60</value>
    </parameter>
    <parameter>
      <name>logAbandoned</name>
      <value>true</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>25</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>10</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>-1</value>
    </parameter>
    <parameter>
        <name>factory</name>
        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    </ResourceParams>
    <ResourceLink name=”jdbc/fhms” global=”jdbc/fhms” type=”javax.sql.DataSource”/>
</Context>

</Host>

SQL Server 2000 드라이버를 사용할 경우 위 내용 중 driverClassName와 url을 다음과 같이 수정

<parameter>
  <name>driverClassName</name>
  <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>

<parameter>
  <name>url</name>
  <value>jdbc:microsoft:sqlserver://192.168.0.2:1433;databasename=fhms;SelectMethod=cursor;</value>
</parameter>

*. 참고: 아래 사항은 <Context></Context> 사이에 넣지 않고, <GlobalNamingResources>안에 넣어도 됨

<Resource name=”jdbc/fhms” auth=”Container” type=”javax.sql.DataSource”/>
                                    ….
</ResourceParams>

3. 사용 예

xxx.jsp의 소스 코드

<%@ page import=”java.sql.*, javax.naming.*, javax.sql.*, java.util.*” contentType=”text/html;charset=euc-kr” %>
<%
try
{
    Context ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup(“java:comp/env/jdbc/fhms“);
    Connection conn = ds.getConnection();

    String sid = “A3DE42F”;
    PreparedStatement pstmt = conn.prepareStatement(“SELECT * FROM sensor WHERE sid = ?”);
    pstmt.setString(1,  sid );

    ResultSet rs = pstmt.executeQuery();

    while (rs.next())
    {
        out.println(rs.getString(“name”));
    }

    if (pstmt != null)
        pstmt.close();
    if (rs != null)
        rs.close();
    if (conn != null)
        conn.close();
}
catch(Exception e)
{
    out.println(e);
}

4. 에러 메시지에 따른 문제 해결 방법

org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class ‘com.microsoft.sqlserver.jdbc.SQLServerDriver’

-> sqljdbc.jar을 c:\Program Files\tomcat\common\lib\에 복사

javax.naming.NameNotFoundException: Name jdbc is not bound in this Context

-> server.xml
        <Context path=”” docBase=”X:\myAPP\source\jsp\FHMS\WEB_ROOT” debug=”0″ reloadable=”true”>
            <ResourceLink name=”jdbc/fhms” global=”jdbc/fhms” type=”javax.sql.DataSource”/>
        </Context>

참고 웹페이지
1. http://tong.nate.com/bbottlejo/43172210
2. http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10106&eid=Ppn9AJtqrH2Aj0jRlvKNHj1k9CIND1EQ&qb=bG9va3VwKCJqYXZhOg==
3. http://annehouse.tistory.com/249
4. http://blog.naver.com/jyoung96?Redirect=Log&logNo=110001673012