Apache + Tomcat with Tomcat Connector

Posted at 2009. 11. 11. 09:01 | Posted in Server/Ubuntu
반응형

http://www.jopenbusiness.com/tc/oss/162



jdk 1.6

# apt-get install sun-java6-jdk

테스트

# javac -version
javac 1.6.0_15

# java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
Java HotSpot(TM) Client VM (build 14.1-b02, mixed mode, sharing)




apache2 - http://antop.tistory.com/37


tomcat6

# apt-get install tomcat6

환경 설정

# vi /etc/tomcat6/server.xml

<!-- URIEncoding="UTF-8" 추가 -->
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
           connectionTimeout="20000"
           redirectPort="8443" />

<!-- 주석을 제가하고 URIEncoding="UTF-8" enableLookups="false" 추가 -->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" enableLookups="false" />

# vi /etc/init.d/tomcat6

# 추가
JAVA_OPTS="$JAVA_OPTS -Djava.endorsed.dirs=$CATALINA_HOME/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$JVM_TMP -Dfile.encoding=8859_1 -Dfile.client.encoding=8859_1 -Dclient.encoding.override=8859_1"

tomcat6 재시작

# /etc/init.d/tomcat6 restart

테스트





tomcat connecter

# apt-get install libapache2-mod-jk

# vi /etc/apache2/mods-enabled/jk.conf

# 생성
# ServerName nerv-team.co.kr
JkWorkersFile   /etc/apache2/mods-enabled/workers.properties
JkShmFile       /var/log/apache2/mod_jk.shm
JkLogFile       /var/log/apache2/mod_jk.log
JkLogLevel      debug
JkLogStampFormat   "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"

# vi /etc/apache2/mods-enabled/jk_mount.conf

# 생성
# Apache Tomcat에서 처리할 URL 패턴을 등록
JkMount /*.jsp          worker1
JkMount /servlet/*      worker1
JkMount /*.do           worker1
JkMount /*.action       worker1

# vi /etc/apache2/mods-enabled/workers.properties

# 생성
workers.tomcat_home=/usr/share/tomcat6
workers.java_home=/usr/lib/jvm/java-6-sun
ps=/

worker.list=worker1
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.type=ajp13
worker.worker1.lbfactor=50
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=60

# vi /etc/apache2/sites-enabled/000-default

# 원하는 호스트 부분에 추가
# www.nerv-team.co.kr
<VirtualHost *:80>
        ServerAdmin antop@nerv-team.co.kr
        ServerName www.nerv-team.co.kr
        ServerAlias nerv-team.co.kr
        DocumentRoot /var/www
        # tomcat connecter
        Include /etc/apache2/mods-enabled/jk_mount.conf
...
</VirtualHost>

# vi /etc/tomcat6/server.xml

<Host name="www.nerv-team.co.kr" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
  <Context path="/" docBase="/var/www" reloadable="true" />
</Host>

tomcat6 재시작

# /etc/init.d/tomcat6 restart

apache2 재시작 (tomcat6 부터 재시작 한다)

# /etc/init.d/apache2 restart

테스트

# echo '<%="Hello World"%>' > /var/www/jspinfo.jsp







java.security.AccessControlException: access denied

예) test.jsp

<%=System.getProperty("java.class.path") %>

에서 에러가 났다면 "/etc/java-6-sun/security/java.policy" 파일에서 접근 권한이 있는지 확인한다.

// 추가
permission java.util.PropertyPermission "java.class.path", "read";



WEB-INF/lib 참조 못하는 에러 해결(권한 문제)

# vi /etc/tomcat6/policy.d/04webapps.policy

// 추가
grant codeBase "file:/home/-" {
        permission java.security.AllPermission;
};


그래도 안되면 수동으로 하는 수밖에...

※ 웹어플 하나 추가할때마다 서버 재시작해줘야 할지도... -0- 비추..

# vi /etc/init.d/tomcat6

# tomcat 라이브러리 등록
JSVC_CLASSPATH=$JSVC_CLASSPATH:.:`echo $CATALINA_HOME/lib/*.jar | tr ' ' ':'`
# 가상 호스팅 classes, lib 등록
home_root="/home"
public_html="public_html"
for home_name in $(ls "$home_root")
  do
    if [ -d "$home_root/$home_name/$public_html" ]; then
      for context_name in $(ls "$home_root/$home_name/$public_html")
        do
          if [ -d "$home_root/$home_name/$public_html/$context_name/WEB-INF" ]; then
            # classes 폴더 등록
            if [ -d "$home_root/$home_name/$public_html/$context_name/WEB-INF/classes" ]; then
              JSVC_CLASSPATH="$JSVC_CLASSPATH:$home_root/$home_name/$public_html/$context_name/WEB-INF/classes"
            fi
            # lib 폴더안의 jar 파일 전부 등록
            if [ -d "$home_root/$home_name/$public_html/$context_name/WEB-INF/lib" ]; then
              for jar_file in $(ls "$home_root/$home_name/$public_html/$context_name/WEB-INF/lib")
                do
                  JSVC_CLASSPATH="$JSVC_CLASSPATH:$home_root/$home_name/$public_html/$context_name/WEB-INF/lib/$jar_file"
                # end for
              done
            fi
          fi
        # end for
      done
    fi
  # end for
done


반응형

'Server > Ubuntu' 카테고리의 다른 글

Openfire  (0) 2010.05.25
Webmin  (0) 2009.11.18
Squirrelmail  (0) 2009.11.12
SparkWeb  (0) 2009.11.12
Cacti  (0) 2009.11.12
Apache + SSL  (0) 2009.11.12
Oracle Express Edition 10g  (0) 2009.11.11
Apache + PHP + MySQL  (0) 2009.11.11
bind9 - domain name service  (0) 2009.11.11
Ubuntu 9.10 Desktop  (0) 2009.11.11
//

하이버네이트(Hibernate) 사용하기

Posted at 2009. 8. 24. 17:09 | Posted in Framework/Hibernate
반응형

Hibernate는 객체 모델링(Object Oriented Modeling)과 관계형 데이터 모델링(Relational Data Modeling) 사이의 불일치를 해결해 주는 ORM(Object Relation Mapping) 도구입니다.

Hiberbate Architecture


잘 사용하면 쿼리(sql) 하나 안쓰고 클래스의 set, get 같은것으로만 DB를 조종(?)할 수 있습니다.

하이버네이트를 이용하여 아주 간단한 CRUD[각주:1] 만 해봅시다!

Java 1.6.0_13
Hibernate 3.3.2.GA
Apache Tomcat 6.0.18
HSQLDB 1.9.0 rc4
Eclipse 3.5 + Habernate Tools


- 하이버네이트 라이브러리와 log4j 사용을 위한 properties 파일을 세팅합니다.(아래 war 파일에서 확인해주세요)


- 하이버네이트 실행에 관련된 속성 정보를 가지고 있는 hibernate.cfg.xml 파일을 만듭니다.




- hibernate.cfg.xml 파일을 저장할 위치를 설정합니다. (기본 src)



- Database 정보를 입력합니다.



- hibernate.cfg.xml 파일을 열어서 몇가지를 더 추가해줍니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
   "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
   <session-factory>
      <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
      <property name="hibernate.connection.url">jdbc:hsqldb:hsql/antop</property>
      <property name="hibernate.connection.username">sa</property>
      <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>

      <!-- JDBC connection pool (use the built-in) -->
      <property name="connection.pool_size">1</property>

      <!-- For a HSQL 1.8 in-memory database, this is required -->
      <property name="connection.shutdown">true</property>
        
      <!-- Drop and re-create the database schema on startup -->
      <property name="hbm2ddl.auto">create</property>

      <!-- Echo all executed SQL to stdout -->
      <property name="show_sql">true</property>
  
      <!-- Mapping -->

   </session-factory>
</hibernate-configuration>

show_sql 프로퍼티를 true로 하면 콘솔에서 쿼리를 확인할 수 있습니다.
hbm2ddl.auto 프로퍼티는 hbm.xml 이 바뀌면 디비 테이블을 드랍시키고 다시 생성하니 주의하세요!

- 간단한 고객테이블(customer)를 매핑시켜보겠습니다. (각 컬럼의 속성은 다를겁니다... MySQL 툴로 디자인한거라...)



- Customer 클래스를 작성합니다.
package com.tistory.antop;

public class Customer {
   private int seq;
   private String id;
   private String password;
   private String name;

   public Customer() { }

   public int getSeq() {
      return seq;
   }

   // 자동으로 생성되는 번호이므로 set 금지
   private void setSeq(int seq) {
      this.seq = seq;
   }
   // getter, setter, toString()
}


customer 테이블의 seq 칼럼은 자동증가이므로 클래스에서 setter를 private으로 선언한 것을 볼 수 있습니다. +_+/


- Customer 클래스에 대해 Mapping XML 파일을 작성합니다.

해당 클래스파일(.java)에서 마우스 오른쪽버튼 클릭 → New → Other...




이렇게 파일을 만들면 쵸큼 더 쉽게 작성할 수 있습니다.

Customer.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.tistory.antop">
   <class name="Customer" table="customer">
      <!-- 기본키가 되는 필드 -->
      <id name="seq" column="SEQ">
         <!-- 자동 증가 -->
         <generator class="increment" />
      </id>
      <property name="id" column="ID" />
      <property name="password" column="PWD" />
      <property name="name" column="NAME" />
   </class>
</hibernate-mapping>

각 태그에 대한 성명은 여기를 봐주세요.


- 마지막으로 hibernate.cfg.xml 에다가 Customer.hbm.xml을 추가해줘야합니다.
...
<hibernate-configuration>
   ...

      <!-- Mapping -->
      <mapping resource="com/tistory/antop/Customer.hbm.xml"/>
  
   </session-factory>
</hibernate-configuration>


- 간단하게 customer에 관한 예제를 만들어보았습니다. 배보다 배꼽이 더 크군염 ㅠ_ㅠ



테스트는 용자만 할 수 있습니다.! +_+/




참조 사이트
http://docs.jboss.org/hibernate/stable/core/reference/en/html/
http://dev.anyframejava.org/anyframe/doc/core/3.1.0/corefw/guide/hibernate-introduction.html
http://javacan.tistory.com/entry/101


참조 문서

출처: http://cafe.naver.com/deve.cafe (문제가 된다면 삭제하겠습니다. ㅠ_ㅠ)



  1. CRUD : Create, Retrieve, Update, Delete [본문으로]
반응형

'Framework > Hibernate' 카테고리의 다른 글

PK 두개 이상시 매핑  (2) 2009.12.24
Reverse Engineering  (0) 2009.12.24
Hibernate 시작하기  (0) 2009.12.23
Criteria 사용하여 질의 하기 #2  (1) 2009.10.03
Criteria 사용하여 질의 하기 #1  (4) 2009.09.10
다대다(n:m) 관계 설정하기  (0) 2009.09.02
일대다(1:n) 관계 설정하기  (1) 2009.08.31
일대일(1:1) 관계 설정하기  (0) 2009.08.27
//

Java Database Connectivity

Posted at 2009. 2. 25. 00:54 | Posted in Java+
반응형
Oracle - http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
Class.forName("oracle.jdbc.driver.OracleDriver");

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "id", "*****");


MySQL - http://dev.mysql.com/downloads/connector/j/
Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql//localhost:3306/mydb", "id", "*****");


MSSQL - http://msdn.microsoft.com/ko-kr/library/bb418503.aspx
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=mydb;user=id;password=****;");


AS400 -

jdbc:as400:10.240.200.181;prompt=false
반응형

'Java+' 카테고리의 다른 글

Find class in jar files  (0) 2018.02.19
web.xml 서블릿 버전별 DTD  (1) 2013.03.03
Maven Repository for Oracle Library  (0) 2012.12.18
<jsp:forward page="url" /><jsp:include /> <%@ include %>  (0) 2010.04.25
TortoiseSVN 사용하기  (2) 2009.11.16
썸네일(Thumbnail) 만들기  (1) 2009.08.09
Java2Html  (0) 2009.07.19
Jad + JadClipse  (6) 2009.07.11
Java with SQLite  (1) 2009.06.29
//