IT

1. centOS 6.5 minial버전으로 설치

2. 네트워크 설정
   ⓐ vi /etc/sysconfig/network-scripts/ifcfg-eth0 수정
 BOOTPROTO=static                 #static:고정ip, dhcp:자동할당 ip
 NETMASK=255.255.255.0            #--- Netmask 설정
 IPADDR=222.112.220.46            #--- IP 주소 설정
 GATEWAY=222.112.220.1            #--- Gateway 설정
   ⓑ vi /etc/resolv.conf
 nameserver 168.126.63.1       #--- 네임 서버의 IP는 여러 개 지정할 수 있습니다
 nameserver 222.112.230.18     #--- Name Server의 IP를 지정 합니다.

3. 방화벽 설정
   ⓐ yum install setup
   ⓑ yum install setuptool
   ⓒ yum install system-config-*
   ⓓ setup 명령후 GUI에서 firewallconfiguration 진입 후 enable 체크 후 종료

4. 텔넷 설정
   ⓐ yum install telnet
   ⓑ yum install telnet-server
   ⓒ vi /etc/xinetd.d/telnet
      service telnet 항목에서 "disable=yes" 부분을 "disable=no"로 수정
   ⓓ vi /etc/services
      23번 포트 검색 후, 임의의 포트로 변경(보안)
   ⓔ vi /etc/sysconfig/iptables #방화벽 포트설정
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 위에서 변경한 포트 -j ACCEPT
   ⓕ service iptables restart
   ⓖ /etc/init.d/xinetd restart

5. ftp 설정
   ⓐ yum install vsftpd
   ⓑ setsebool -P ftp_home_dir 1      #500 Error 해결
   ⓒ chkconfig --level 2345 vsftpd on #부팅시 vsftp 자동시작 설정
   ⓓ vi /etc/vsftpd/vsftpd.conf
      listen=YES 항목 찾은후 바로 밑에 listen_port=임의의 포트로 변경(보안)
   ⓔ vi /etc/sysconfig/iptables       #방화벽 포트설정
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 위에서 변경한 포트 -j ACCEPT
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
   ⓕ service iptables restart
   ⓖ service vsftpd restart

6. 파일질라 설정
   ⓐ 전송 설정에서 전송모드 능동형으로 체크

 

'소프트웨어 > Linux' 카테고리의 다른 글

sudo 웹서버를 실행하는 이유  (0) 2014.04.16
서비스 운영방식 (standalone과 xinetd)  (0) 2014.04.09
2>&1 의미  (0) 2013.12.09
find 시간별 검색  (0) 2013.10.21
언어 인코딩  (0) 2013.09.11
Posted by sinpk
애플리케이션을 개발하다 보면 설정정보를 저장해야 하는 경우가 꼭 있습니다. 이런 경우 정보가 간단하면 *.properties 파일을 주로 사용하지만 복잡하다면 .xml 파일을 써야 하죠.
이런때 쓰면 딱 좋은 오픈소스가 아파치 프로젝트의 Commons Configuration 입니다.

Conmmons Configuration이 지원하는 파일 포맷이 다양하기 때문에 상황에 맞춰 사용가능하며 동시에 같이 사용하는것도 가능합니다.
  • Properties files
  • XML documents
  • Windows INI files
  • Property list files (plist)
  • JNDI
  • JDBC Datasource
  • System properties
  • Applet parameters
  • Servlet parameters
그럼 *.properties 파일을 이용해서 설정정보를 읽어들이고 저장할때 간단히 사용할 수 있는 유틸 클래스 ConfigUtil을 한번 만들어 보겠습니다.

1.ConfigUtil 클래스
싱글턴으로 만들어야 사용하기 편하니 static 변수 instance를 선언하고 Configuration 프레임웍에서 properties파일을 나타내는 PropertiesConfiguration 변수를 선언합니다.

    private static ConfigUtil instance = new ConfigUtil();
    private static PropertiesConfiguration propertyConfig;

파일을 읽어들이는 load 메소드를 정의합니다.

    public void load(String fileName)
            throws ConfigurationException {
        propertyConfig = null;
        propertyConfig = new PropertiesConfiguration();
        propertyConfig.load(new File(fileName));
    }

특정 키를 주고 키에 해당하는 값를 읽어들이는 getProperty 메소드를 정의합니다.

    public String getProperty(String key) {
        String value = propertyConfig.getProperty(key) == null ? ""
                : propertyConfig.getProperty(key).toString();
        return value;
    }

특정 키에 해당하는 값을 변경하기 위한 setProperty 메소드를 정의합니다.

    public void setProperty(String key, Object value) {
        propertyConfig.setProperty(key, value);
    }

프로퍼티 파일을 다시 저장할 save 메소드를 정의합니다.

    public void save(String fileName) throws ConfigurationException {
        propertyConfig.save(new File(fileName));
    }

2.ConfigKey 인터페이스
이번에는 프로퍼티의 키들을 저장해놓고 상수로 사용하기 위한 인터페이스 ConfigKey를 정의합니다.

public interface ConfigKey {
    String KEY1 = "key1";
    String KEY2 = "key2";

}

3.ConfigUtil 테스트
이제 테스트를 할 때가 되었습니다. ConfigUtilSample 클래스를 만들어서 간단히 테스트 해 보겠습니다.

    public static void main(String[] args) throws Exception{
        String fileName = "sample.properties";
        // #1
        ConfigUtil.getInstance().load(fileName);
       
        System.out.println("Key1 Value=" +  
                                ConfigUtil.getInstance().getProperty(ConfigKey.KEY1));

        System.out.println("Key2 Value=" + ConfigUtil.getInstance().getProperty(ConfigKey.KEY2));
       
        ConfigUtil.getInstance().setProperty(ConfigKey.KEY1, "zzz");
        System.out.println("Key1 Value=" + ConfigUtil.getInstance().getProperty(ConfigKey.KEY1));
        ConfigUtil.getInstance().save(fileName);
       
        // #2
        ConfigUtil.getInstance().load("sample2.properties");
        System.out.println("Key1 Value=" + ConfigUtil.getInstance().getProperty(ConfigKey.KEY1));
    }

sample.properties파일과 sample2.properties 파일의 내용은 다음과 같습니다.
sample.properties
key1 = aaa
key2 = bbb

sample2.properties
key1 = ccc
key2 = ddd

위 샘플의 실행결과를 먼저 보면 다음과 같습니다.
Key1 Value=aaa
Key2 Value=bbb
Key1 Value=zzz
Key1 Value=ccc
간단히 설명을 해보겠습니다. 먼저 sample.properties파일을 읽어들이고 나서 Key1, Key2에 해당하는 값을 읽어 들여서 출력합니다. 그리고 Key1에 해당하는 값을 변경하고 이를 저장합니다.
(폴더를 새로고침하면 파일이 실제로 변경되었음을 확인할 수 있습니다.)

두번째로 sample2.properties 파일을 읽어들이고 다시 Key1에 맞는 값을 읽어 들입니다. properties 파일이 다르기 때문에 값이 다름을 확인할 수 있습니다.

properties 파일에 대한 처리는 간단하지만 꼭 필요한 기능입니다. 위 프레임워크를 이용하게 되면 아래처럼 프로퍼티에 주석을 단다거나 변수를 사용하는것도 간단하게 구현할 수 있습니다.
# properties can reference other properties

base.prop = /base

first.prop = ${base.prop}/first

 

'소프트웨어 > Java' 카테고리의 다른 글

Mybatis if 문자열 비교  (1) 2015.06.19
DB 별 JDBC Driver  (0) 2014.04.17
java:comp/env  (0) 2014.03.18
java 정규식 표현  (0) 2013.11.25
커스텀 Annotation  (0) 2013.10.22
Posted by sinpk

오라클 데이터베이스에서는 선택된 행들에 대하여 배타적인 LOCK을 설정할 수
있는 기능인 FOR UPDATE 구문을 제공하고 있다.

여기서는 FOR UPDATE 구문의 전반적인 개관과 9i 신기능으로 소개된 WAIT로
TIMEOUT을 설정하는 방법을 아래와 같이 살펴본다.

1. FOR UPDATE with no option
2. FOR UPDATE NOWAIT(= WAIT 0)
3. FOR UPDATE WAIT integer (0 ~ 4294967295, second)
4. FOR UPDATE OF

Explanation
-----------
1. FOR UPDATE with no option
- 이 경우 오라클은 LOCK을 획득하기까지 무한정 기다린다.


2. FOR UPDATE NOWAIT[= WAIT 0]
- LOCK을 획득하지 못하면 ORA-00054와 함께 바로 실패한다(Example I).
(FOR UPDATE WAIT 0 도 같이 동작한다)

3. UPDATE WAIT integer(0 ~ 4294967295, second)
- WAIT 다음 주어지는 정수 만큼 동안 LOCK을 획득하기 위해 재시도한다.
그러나 주어진 시간동안 LOCK을 획득하지 못하면 ORA-30006와 함께
해당 SQL문은 실패한다(Example I).
WAIT 다음에 integer 설정하지 않거나 integer의 최대값(4294967295)을
초과하는 값을 설정하면 ORA-30005 에러를 만나게 된다(Example II,III).

4. FOR UPDATE OF
- FOR UPDATE 구문은 FROM 절에 기술된 복수개의 테이블의 해당행에 모두
LOCK을 설정한다(Example I)
이 때 OF 를 기술함으로 하여 특정 TABLE의 행에만 LOCK을 설정할 수 있다

* 주의
- FROM 절에 DUMMY로 열거된 TABLE인 경우(즉 JOIN 조건이 없어서 Cartesian product로 연산되는 경우),
OF 절이 없다면 모든 TABLE, 행에 LOCK이 설정된다

'소프트웨어 > Oracle' 카테고리의 다른 글

오라클 랜덤 함수  (0) 2013.11.28
디비링크  (0) 2013.11.06
DB에서 java Vo 멤버 추출  (0) 2013.10.02
SQL Developer 날짜(date)형식 시,분,초 단위까지 표시하는 방법  (0) 2013.08.28
OVER()함수  (0) 2013.08.27
Posted by sinpk

java:comp/env

2014. 3. 18. 14:13 : 소프트웨어/Java

JNDI를 이용해서 웹어플의 ConnectionPool 구현중 모르는것이 나타났다.


java:comp/env


-전형적인 DataSource 구현 방법


//Obtain our environment naming context

Context initCtx = new InitialContext();

Context envCtx = (Context)initCtx.lookup("java:comp:env");


//DataSource 를 검색

//"jdbc/mysql은 web.xml과 context.xml에 설정되어 있는 name값

DataSource ds = (DataSource)encCtx.lookup("jdbc/mysql"); 


//커센션 풀로부터 커넥션 얻기

Connection c = da.getConnection();


위의 코드에서 "java:comp:env" 가 도대체 뭘까?!?!

톰캣 홈페이지의 유저가이드를 확인해봤다.

http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html


The InitialContext is configured as a web application is initially deployed, and is made available to web application components (for read-only access). All configured entries and resources are placed in the java:comp/env portion of the JNDI namespace


java:comp/env는 웹어플의 구성된 엔트리와 리소스들이 배치되어있는 부분.

그래서 이것에 접근을 하여 web.xml의 <resource-env-ref>에 설정한 jdbc/mysql과 매핑되는 리소스를 가져온다. 


톰캣의 리소스 팩토리를 구성하기 위해 <Context>엘리먼트를 추가해야한다. 일종의 추가 정보를 추가한다고 이해하면 된다.

[출처] java:comp/env|작성자 GemStone


'소프트웨어 > Java' 카테고리의 다른 글

DB 별 JDBC Driver  (0) 2014.04.17
Apache Commons Configuration을 이용해 설정정보 저장하기  (0) 2014.04.01
java 정규식 표현  (0) 2013.11.25
커스텀 Annotation  (0) 2013.10.22
마이바티스 익셉션 처리  (0) 2013.09.26
Posted by sinpk

JUtils toString Generator 3.1는 생성한 클래스의 toString 메소드를 자동 생성해준다.

 

1. 압축해제한다. (압축 해제된 폴더 이름 : org.adarsh.jutils_3.1.0)

 

2. 이클립스 사용중이면 이클립스 종료한다.

 

3. c:\eclipse\plugins 에 붙여넣는다. (플러그인 설정 완료됨)

   (이클립스 설치 폴더가 c:\eclipse 일 경우에 해당)

 

4. 이클립스 실행하여 소스 작업 중에 toString() 메소드가 필요하면

   오른쪽 마우스 클릭 -> JUtils -> Generate toSting() 하면

   0.1초만에 바로 toString() 메소드 생성된다. 

'IDE > Eclipse 플러그인' 카테고리의 다른 글

JadClipse 플러그인  (0) 2013.12.10
FindBug 플러그인  (0) 2013.12.10
JAutodoc 플러그인  (0) 2013.12.10
mybatiseditor 플러그인  (0) 2013.12.10
Path Tools 플러그인  (0) 2013.12.10
Posted by sinpk