Tomcat Clustering 시 물리적으로 하나의 서버에서 다수의 Tomcat을 실행할 경우에
해당 포트에 대해 방화벽을 오픈하지 않기 위해 mcastBindAddress="127.0.0.1" 옵션을 사용했다.
<Membership className="org.apache.catalina.tribes.membership.McastService"
      address="228.0.0.7"
      mcastBindAddress="127.0.0.1"
      port="4000"
      frequency="500"
      dropTime="3000"/>

<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
      address="192.168.1.55"
      port="5001"
      selectorTimeout="100"
      maxThreads="6"/>


이럴 경우 아래와 같은 오류가 발생했다.
org.apache.catalina.tribes.ChannelException: java.io.IOException: Invalid argument; No faulty members identified.


요즘 생산되는 서버에는 기본적으로 IPv6에 대해 활성화가 되어 있는 경우가 많다.
즉, localhost에 대해 IPv4와 IPv6의 충돌로 발생한 경우다.

Tomcat 실행 옵션에 아래와 같은 Parameter를 추가하여 해결한다.

JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"


참고로, 내가 경험한 Tomcat Version은 7.0.29, 7.0.59 이다.

2014/05/27 15:23 2014/05/27 15:23

/bin/sh^M:bad interpreter

Dev 2014/02/25 15:22
Linux Server에 shell script를 실행하고자 할 경우 간혹 "/bin/sh^M:bad interpreter" 메시지 출력하며
실행이 되지 않는 경우가 있다.
보통 Windows OS 환경에서 파일을 생성 하여 서버에 올린 경우에 발생하는데
vi 에서 간단한 명령을 실행해 해결할 수 있다.

some shell script code line1..
some shell script code line2...

// 아래 명령어 입력
:set ff=unix   // Enter
:wq   // Enter




2014/02/25 15:22 2014/02/25 15:22
얼마전 CentOS 5.4에서 yum으로 update를 진행했다.
이후, system-config-network 명령을 실행하니
"UnicodeDecodeError: 'ascii' codec can't decode byte 0xec in position 0: ordinal not in range(128)"
이런 오류를 출력하며 실행이 안되었다.

python에서 utf-8 string을 읽으면서 발생된 에러인듯 싶은데
구글링을 이용해 해답을 얻을 수 있었다.

[@hostname]# vi /usr/share/system-config-network/netconf-tui.py
파일 상단 import sys 를 찾아 아랫줄에 아래와 같이 삽입
reload(sys)
sys.setdefaultencoding('utf-8')

2012/07/20 14:04 2012/07/20 14:04
네이트 온 신버전이 나오면 자동으로 인스톨러가 실행될 경우가 있다.
'새 버전 자동으로 업그레이드 받기' 설정을 해제 해도 마찮가지다.

매번, 네이트 온 실행할 시 마다 PC에 설치된 네이트 온이 구 버전이면
인스톨 창이 뜨는데, 상당히 귀찮다.


이에, 찾아보니 방법이 있었다.

네이트 온 단축 아이콘은 NateOn.exe 를 가르키고 있다.
하지만 막상 네이트 온이 실행되고 나서 프로세스 목록에 보면 NateOnMain.exe이 실행되고 있음을
알수 있다.

NateOn.exe의 하는 일은 새 버전에 체크 및 NateOnMain.exe가 실행되기 전 사전 작업을 하는것으로
판단된다.
모든 사전작업을 마무리하고 나서 NateOnMain.exe를 호출하게 될것이다.

따라서 단축 아이콘이 가르키고 있는 실행 파일을 NateOn.exe에서 NateOnMain.exe로 변경하면
사전 작업을 건너 뛰게 할 수 있을 것이다.

단축 아이콘 속성을 보면 파일 대상이
"C:\Program Files\NATEON\BIN\NateOn.exe" 로 잡혀 있다.

아래처럼 변경한다.
"C:\Program Files\NATEON\BIN\NateOnMain.exe" -ex

이제, 신버전이 체크를 건너 뛰고 바로 메신저가 실행된다.
2012/07/13 09:35 2012/07/13 09:35
이번 프로젝트에서 MySQL 5.1 버전에 InnoDB 엔진으로 개발을 진행하는데 매번 GUI Tool 없이
MySQL Client로 접속하는것은 매우 귀찮은 일이라 여겨, 가볍고 무료인 HeidiSQL을 사용하기로 했다.

보통의 Database Client GUI 프로그램들이 GUI 차원에서 AutoCommit 설정을 할 수 있도록 되어 있는 반면
이 HeidiSQL(현재 버전 6.0)은 그런 설정이 없는게 아닌가~
좀, 아쉬웠다.

하지만, 역시 인터넷을 찾아보면 답이 있더라~
Query Edit 창에서 입력해야 하지만, 지원은 되더군.

아래는 예제이다.
set autocommit=false;

insert into t1 (tmp1, tmp2) values ('1','2');
commit;

update t1 set tmp2='3' where tmp1='1';

rollback;


Connection session에만 autocommit 설정을 할 수 있으니, Connection 종료 후
다시 Connection을 맺으면 매번 set autocommit=false; 를 입력해 줘야 한다.

MySQL Client console에서도 동일하게 적용된다는 의미.



2011/03/31 16:53 2011/03/31 16:53
JBoss AS는 오픈소스  미들웨어로 매우 유용하게 사용할 수 있다.
여러가지 자원들을 포함하고 있기 때문에 Java 기반의 프로젝트 수행에 무리가 없다.
하지만, 국내에는 JBoss AS 사용이 많지 않기 때문에 관련 자료가 부실하다.
그나마, 국내 커뮤니티로 JBoss User Group(http://cafe.naver.com/jbossug/)가 있지만
JBoss 6 보다는 JBoss 5.x 에 대한 내용이 많다.

얼마전 회사내 프로젝트를 수행 중 분석서버에서 이용할 수 있도록 하기 위해
로그 표준화 작업을 통해 EJB에서 로그를 남기도록 처리 할 일이 있었다.
JBoss 5.x까지는 로깅 프레임워크로 Log4j를 이용했지만, JBoss 6 부터는 자체 로깅 서비스를
이용해야만 될수 있도록 변경되었다. 그나마 다행인것은 Log4j도 미력하지만 이용할 수 있도록
지원이 된다는 것인데... 며칠동안 삽질을 했지만 안됐다.

결국, 많은 자료를 찾던중 해결책을 찾았다.

아래 절차에 따라 patch하면 정상적으로 사용할 수 있다.

1. 설치된 JBoss 6.0.0.Final 버전의 $JBOSS_HOME/server/$PROFILE(all, default..)의 deployers/jboss-logging.deployer/META-INF/logmanager-jboss-beans.xml 파일 내용중 (A)사항을 (B)사항으로 변경한다.
   (A) <bean name="JBossLogService" class="org.jboss.logmanager.LogService" mode="On Demand"/>
   (B) <bean name="JBossLogService" class="java.lang.Object" mode="On Demand"/>

  => (A) 사항을 (B)사항으로 변경했을 경우, boot.log에 다른 로그까지 계속 쌓이게 된다.
       그러므로, 적용하지 않는것이 좋겠다.

2. JBAS-8791-1.zip 파일의 압축을 해제하여 아래처럼 각각의 해당 디렉토리에 있는 파일을 덮어쓴다.
   JBAS-8791-1.zip : https://issues.jboss.org/secure/attachment/12340210/JBAS-8791-1.zip
   jboss-logmanager-log4j.jar -> $JBOSS_HOME/common/lib/
   jboss-logmanager.jar -> $JBOSS_HOME/lib/
   logging-service-metadata.jar -> $JBOSS_HOME/server/$PROFILE/deployers/jboss-logging.deployer/

3. log4j.jar파일들을 log4j-1.2.16.jar 파일로 모두 대체한다.
   log4j-1.2.16.jar download : http://logging.apache.org/log4j/1.2/download.html
   대상) (1) $JBOSS_HOME/client/log4j.jar -> 삭제 또는 jar확장자 대신 다른이름으로 변경, log4j-1.2.16.jar 복사
         (2) $JBOSS_HOME/common/lib/log4j.jar -> 삭제 또는 jar확장자 대신 다른이름으로 변경, log4j-1.2.16.jar 복사


아마도 이 내용은 다음번 JBoss AS 릴리즈에 반영이 될 것 같지만, 글을 쓰는 현재 시점에 JBoss AS 6.0.0 Final 버전에 대해서는 이렇게 Patch를 해야 할듯 하다.



2011/03/03 10:04 2011/03/03 10:04

CBD 산출물 예시

Dev 2010/07/13 13:53
Phase
Activity
Task
산출물
분석
요구 사항 정의 시스템 비전 정의 시스템 비전 정의서
도메인 모델링 도메인 명세서
용어집
현행 시스템 분석 현행 시스템 분석서
비즈니스 모델링 비즈니스 정의서
요구사항 명세 요구사항 명세서
아키텍처 정의 소프트웨어 아키텍처 정의 소프트웨어 아키텍처 정의서
시스템 아키텍처 정의 시스템 아키텍처 정의서
표준 지침 수립 표준 지침서
요구 사항 분석 유스케이스 모델링 유스케이스 명세서
사용자 인터페이스 프로토타이핑 사용자 인터페이스 정의서
클래스 모델링 클래스 명세서
테스트케이스 정의 테스트케이스 정의서
유즈케이스대클래스상관분석 유즈케이스대클래스상관도
설계
기본 설계 컴포넌트 식별 컴포넌트 목록
컴포넌트 아키텍처 정의서
재사용 컴포넌트 선정 재사용 컴포넌트 선정내역서
인터페이스 상호작용 정의 인터페이스 상호작용 명세서
컴포넌트 명세 인터페이스 명세서
컴포넌트 명세서
사용자 인터페이스 설계 사용자 인터페이스 설계서
데이터 모델링 데이터 설계서
클래스대엔티티상관 분석 클래스대엔티티상관도
상세 설계 컴포넌트 내부 설계 컴포넌트 설계서
컴포넌트 구현 설계 컴포넌트 구현 설계서
사용자 인터페이스 구현 설계 사용자 인터페이스 구현 설계서
데이터베이스 설계 데이터베이스 설계서
클래스대테이블상관분석 클래스대테이블상관도
구현 및
테스트
테스트 준비 테스트 계획 테스트 계획서
컴포넌트 테스트 설계 컴포넌트 테스트 설계서
구현 데이터베이스 구축 물리적 데이터베이스
컴포넌트 구현 및 테스트 컴포넌트 코드
컴포넌트 테스트 결과서
사용자 인터페이스 구현 사용자 인터페이스 코드
통합 테스트 통합 테스트 설계 통합 테스트 설계서
통합 테스트 수행 통합 테스트 결과서
시스템 테스트 시스템 테스트 설계 시스템 테스트 설계서
시스템 테스트 수행 시스템 테스트 결과서
지침서 작성 사용자 Manual 작성 사용자 Manual
운용자 지침서 작성 운용자 지침서
인도
시스템 설치 시스템 설치 계획 시스템 설치 계획서
시스템 설치 실시 시스템 설치보고서
인수 지원 인수 테스트 지원 인수 테스트 결과서
사용자 교육 사용자 교육 보고서


출처 : http://webdoors.tistory.com/650
2010/07/13 13:53 2010/07/13 13:53
Linux에서 IP Address를 확인하기 위해서는 보통 아래 명령어를 이용해 볼수 있다.
[user@localhost ~]$ /sbin/ifconfig -a
eth0      Link encap:Ethernet  HWaddr ....
중략 ....

lo        Link encap:Local Loopback ...
중략 ...


보통 Shell script로 IP를 확인해서 변수에 할당해야 할일이 간혹 있는데
아래 명령어를 이용하면 될것 같다.
[usr@localhost ~]$ /sbin/ifconfig eth0 | /bin/sed -n '/addr:/p' | /bin/awk '{print $2}' | /bin/sed 's/addr://g' | /bin/sed '/^$/d'


1) /sbin/ifconfig eth0  -  eth0 의 ethernet정보 확인
2) /bin/sed -n '/addr:/p'  -  1) 에서 출력된 정보 중 'addr:'문자가 있는 줄만 필터해서 출력
3) /bin/awk '{print $2}'  -  2)에서 출력된 정보 중 2번째 단어만 출력
3) /bin/sed 's/addr://g'  -  3)에서 출력된 정보 중 'addr:' 문자 제외 후 출력
4) /bin/sed '/^$/d'  - 4)에서 출력된 정보 중 빈줄 삭제



2010/05/10 11:49 2010/05/10 11:49
Tomcat을 JSVC로 구동 시 catalina.out 파일로 계속 로그가 쌓이게 된다.
이문제를 해결하기 위해 인터넷을 찾아본 결과 리눅스의 logrotate 명령을 이용해
쉽게 해결이 될 수 있었다.

먼저, logrotate 는 cron에 의해 구동되는데 설정파일의 위치는
/etc/logrotate.conf에 있으며
개개의 설정은 /etc/logrotate.d/ 디렉토리 안에서 정의된 파일을 처리하는 방식이다.

# 추가 생성
[root@host ~]# vi /etc/logrotate.d/tomcat
/usr/local/tomcat/logs/catalina.out {
        notifempty
        missingok
        rotate 30
        daily
        copytruncate
        dateext
        postrotate
                /bin/chown tomcat:tomcat /usr/local/tomcat/logs/catalina.out-*
        endscript
}
:wq
[root@host ~]#
# 실행 test
[root@host ~]# logrotate -f /etc/logrotate.d/tomcat
[root@host ~]# ls -l /usr/local/tomcat/logs


notifempty              -  log 파일의 내용이 비어 있는 경우 순환을 하지 않음.
missingok              -  만약 파일이 존재하지 않더라도 무시하고 진행
rotate count           -  rotate 순환주기를 설정할 수 있으며 곧 저장하고자 하는 파일의 개수를 의미
daily                     -  매일 logrotate를 실행
copytruncate          -  이 옵션을 쓰지 않으면 기존의 맨처음 로그가 생성된 파일에 계속해서 로그가 쌓이게 된다.
                                이러한 원인은 톰캣의 로그가 System.err 객체나 System.out을 사용하기 때문에
                                시스템의 raw디바이스로 출력이 되어 파이프를 타지 않기 때문이란다.
                                따라서 원래 로그를 다른이름으로 저장하고 새로운 catalina.out을 생성한다해도
                                실제 로그 스트림은 다른이름으로 지정된 원래 로그쪽으로 계속해서 쌓이게 된단다.
                                이걸 방지하기 위해 현재 로그내용을 복사하여 백업본으로 저장한후
                                원본 로그의 내용을 비우는 방식으로 저장해야 하도록 한다.
dateext                   -  날짜 형식을 붙여 로그 파일을 저장한다.
postrotate/endscript - logrotate를 실행한 후에 취하고자 하는 액션을 정의

2010/04/22 18:45 2010/04/22 18:45
Apache-Tomcat Native lib Install

source download : http://tomcat.apache.org/native-doc/index.html

rpm -qa|grep apr-devel

yum search apr-devel
yum install apr-devel

./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/local/jdk

make
make install

# installed dir => /usr/local/apr

cat "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/local/apr/lib" >> /etc/profile
source /etc/profile

service tomcat restart


2010/04/05 16:38 2010/04/05 16:38