[BCI] 관련 자료

2010/03/04 15:33

요즘 두가지 이유 때문에 ASM을 보고 있다.

하나는 모델과 소스(바이너리)의 비교 검증 기능 개발을 위해서,

또 하나는 APM 솔루션 개발을 위해서, 모니터링용 코드를 기존 어플리케이션에 쉽게 심는 방법을 찾기 위해서..

 

사실 첫번째 이유로의 ASM은 오래전부터 봐왔던 바이지만, 두번째는 좀 생소 하기는 하지만, 한번에 두마리 토끼를 잡는 다는 셈치고 열공 및 개발 중이다.

 

관련 자료/링크를 쭈욱 나열해 놓고, 나중에 한번에 정리해 보자.

 

 

The Power of Byte Code Instrumentation in Java 시리즈(From 욱짜의 Oracle 블로그) : http://ukja.tistory.com/17

 

ASM 홈페이지 http://asm.ow2.org/

 

 

 

 

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

다음을 참고해 보자.

 

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/tjmx_extend.html

 

시작/중지 = launchProcess/stopProcess

 

 

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

WAS의 자원에 접속하기 위해서는 JNDI를 사용하게 된다.

그런데, 그 JNDI를 통한 lookup을 하기 위해서는 해당하는 Provider의 Context Factory를 가져와야 한다.

이때, 사용하게 되는 접속 방식에는 두가지가 있다,

 

CORBA 객체 URL 방식 vs IIOP URL

http://publib.boulder.ibm.com/infocenter/wasinfo/v5r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/rnam_example_prop2.html

 

요약하자면, COBRA 객체 URL방식(J2EE 1.3이후 지원, cobarloc)은 복수 서버에 대한 주소 리스트를 사용하여, Fail Over방식으로 접속을 할 수 있는 반면,

기존의 iiop방식은 지정한 단일 서버에 대해서만 접속이 가능하다.(그런데, WebSphere 6.1 환경에서 테스트한 결과 iiop의 경우도 fail over가 되는 것을 보이긴 했다.)

또한, corbaloc url 방식의 경우에는 Cluster로 묶인 서버만 지원(권장, 다른 경우는 장담할 수 없다는)한다는 제한이 있기는 하다.

 

여기서 잠깐, URL 방식이 CORBA 객체 냐 기존 iiop냐로 나뉘긴 하지만, 실제 통신은 둘다 IIOP 프로토콜을 이용하는 것은 변함이 없다.

 

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

wsadmin.sh 을 이용하여 아래와 같이 명령을 날리면, MBean 리스트를 받아 볼 수 있다.

 

mbean.jython

-----------------------------------------------------------------------------------------

apps = AdminControl.queryMBeans('NEFSS/SystemLibrary:type=SharedTable,*',None)
appArray = apps.toArray()

for app1 in appArray:
print app1.getObjectName().toString()

-------------------------------------------------------------------------------------------

 

DMGR 서버에 붙어서, 전체 Application Server에 대해서 Query를 날리려면
/app/was/WebSphere/AppServer/bin/wsadmin.sh -username XXX -password XXXX -lang jython -f mbean.jython

 

특정, Application Server Instance에 붙어서 Query를 날리려면

/app/was/WebSphere/AppServer/bin/wsadmin.sh -host XXX -port XXXX -username XXX -password XXXX -lang jython -f mbean.jython

(여기서 포트는 SOAP 포트가 된다.)

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

1. java.sql.SQLException: XXXXXX Connection authorization failure occurred. Reason: Security mechanism not supported. ERRORCODE=-4214, SQLSTATE=28000DSRA0010E: SQL State = 28000, Error Code = -4,214

 

이런 오류가 나온다면, ID/PW를 의심해 보자, 특히, ID를 새로 만들었을 경우, 초기 한번은 TSO 등으로 로그인해서, 새로운 패스워드로 바꾸라는 메시지가 뜨지는 않는지 확인해 본다.

 

2. Error : DB2 SQL Error: SQLCODE=-805, SQLSTATE=51002, SQLERRMC=XXX.NULLID.SYSLN300.5359534C564C3031;DISTSERV;04, DRIVER=3.50.152

이런 오류가 나온다면,  다음의 명령을 실행하여, jdbc용으로 Bind를 해 줘야 한다.

    java com.ibm.db2.jcc.DB2Binder -url jdbc:db2://XX.XX.XX.XX:446/XXX -user userid -password passw0rd

    실행결과

    Package "XXXXX": Bind succeeded
    Package "YYYYY": Bind succeeded
    .....
    Package "ZZZZZ": Bind succeeded
    DB2Binder finished.

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

 RRC서버가 깔린 리눅스에 워낙 CLOSE_WAIT가 많이 걸리고,

해제되지 않아 여기 저기 찾다가 발견한 사이트

 

http://tunelinux.pe.kr/bbs/read.php?table=linuxinfo&no=76

 

sysctl 명령어를 이용하란다~~

혹시, 링크가 깨질까봐, 원문을 copy해둔다.

 

## 질문
xxx 작성:

안녕하세요.전번에 netlog에 대한 답변들은 고마웠습니다.
요즘 SYN attack에 대한 생각을 정리중인데,도움을 좀 청할까 해서요..
리눅스나 원도우에서 SYN이 들어오면은최대 접속 SYN 갯수가 있을 것이고,
3상태 연결이 안되었을때, 연결이 취소될때까지의 시간이 있을건데,
이것은 리눅스 상에서 설정을 어디를 보면 되는지.좀 아시는 분 가르켜 주세
요.
그리고, window NT나 유닉스는 기본적인 값이 얼마인지궁금합니다.
아시는 뿐들은 꼭 좀 답변 올려주세요.


## 답변
Linux에서 IP Stack을 관리하는 명령어는 sysctl입니다.
사용법은 간단합니다.
usage:  sysctl -w variable=value ...  ; 설정
            sysctl -a                          ; 조회

timeout관련 정보는 grep으로 찾아보시기를 바랍니다.

그리고, Tuning과 관련하여 몇가지 정보를 추가하면(kernel 2.2기준)

- SYN attack 관련
  sysctl -w net.ipv4.tcp_max_syn_backlog=1280 ; socket queue 증가
  sysctl -w net.ipv4.tcp_syn_cookies=1             ; enable

- Routing table 변경
  sysctl -w net.ipv4.conf.all.send_redirects=0      ; disable
  sysctl -w net.ipv4.conf.all.accept_redirects=0

- Source Routing 관련
  sysctl -w net.ipv4.conf.all.accept_source_route=0  ; source route 패킷
드롭
  sysctl -w net.ipv4.conf.all.forwarding=0                 ; forwarding
disable
  sysctl -w net.ipv4.conf.all.mc_forwarding=0

- Timewait 값 조절 (DDOS 관련)
  sysctl -w net.ipv4.vs.timeout_timewait=60       ; 60초 이하로 설정 권


- Broadcast ECHO Response (smurf Attack 관련)
  sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1    ; 응답안함

등이 있습니다. 이외에 추가적으로 확인해 보시기 바랍니다.

자료참조: Rob Thomas, 이강석 "Unix IP Stack Tunig Guide"-센터내부자료 참
조.

.FIN.
 

## 추가답변
안녕하십니까?

저는 xxxxx의 홍석범입니다.


아래 메일로 말씀하신 부분에 조금만 추가를 하면....


1. 최대 접속 SYN 갯수에 대해

시스템에서 수용할 수 있는 최대 접속  SYN 패킷의 개수는 backlog queue 와
관련이 있습니다. 즉 backlog_queue 를 크게 늘렸을 경우에는 그만큼 많은
SYN 패킷을 수용할 수 있는 것이지요...

리눅스뿐만이 아니라 대부분의 시스템에는 이 값(kb 단위) 이 매우 낮게 설정
되어 있는데,
적절히 재설정하실 필요가 있습니다.
(현재 설정치는 sysctl -A|grep backlog로 확인해 보세요..)
일반적으로는 RAM 이 128M 이상일 경우 1024를 설정하면 되고
이하일 경우에는 128 을 설정하는데, 리누스의 부하가 많이 걸릴 경우에는
이 값을 적절히 늘려주면 됩니다.
그런데, 이 값을 무한정 늘릴 수 있는 것은 아니고 값이 1024 이상일 경우에

include/net/tcp.h 를 수정하여야 한다고 알고 있습니다..
그리고 경험적으로 이 값을 너무 크게 설정하였을 경우에는 syncookie 가
잘 적용되지 않는 것으로 알고 있습니다.
(그러니 syncookie 설정을 하였을 경우에는 backlog queue 를 그리 크게
하실 필요는 없습니다.)
아울러 말씀하신 자료에는

sysctl -w net.ipv4.tcp_syn_cookies=1  로 되어 있는데
sysctl -w net.ipv4.tcp_syncookies=1 이 맞습니다..
 


2. 연결이 취소될때까지의 시간에 대해

이 설정은  
sysctl -w net.ipv4.vs.timeout_synrecv=10    와
관련이 있는것 같습니다.
(syn 패킷을 받은후 half open 상태 대기는 10초정도가 적당합니다.)
이 설정을 하시려면 바로 이용하실 수는 없고 커널 패치를 하셔야 합니다.
vs 라는 것은 Virtual Server 의 뜻으로 말 그대로 clustering 등을
구성할 때 필요한 커널 패치입니다.
이는 http://linuxvirtualserver.org/ 에서 패치하시면
됩니다.
그런데, 제가 테스트해보기로는 이 설정이 그대로 잘 적용은 되지 않더군
요,..,.
(이외 vs 커널 패치를 하면 drop_entry, drop_packet 등 다른 몇가지 정책을
추가로
   설정할 수 있습니다.)




3. NT 등 Windows 계열의 SYN_Attack 에 대해

NT에서는 Registry값을 수정함으로써 튜닝이 가능합니다.
이 값에 대한 튜닝은 microsoft 의 technical page 나
http://packetstorm.securify.com/groups/rhino9/synflood.doc
참고하시기 바랍니다.



4. 그러나, 가장 확실한 방법은.....
제가 보기에는 서버 level 에서의 튜닝은 단지 공격을 감소시킬 수 있을뿐
근본적인 대책은 아닙니다.
이를 위해 라우터 level 에서 차단하는 것이 권장할만한 방법인데,
제가 테스트해 보기로는 몇가지 방법이 있더군요....
이 방법은 시간이 되는대로 정리를 해 보도록 하겠습니다.
 
 

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

COBOl 공부 관련

2009/11/17 16:18

 XX화게 BMT를 하다가, COBOL to Java 변환 소스를 보게 되었는데,

변환된 소스를 분석하다 보니, COBOL에 대한 짧은 지식을 한탄하게 되었다.

 

그래서, 찾아보니, Teach Your Self의 COBOL 시리즈가 웹에 올라와 있었다..

 

Teach Yourself COBOL in 21 days, Second Edition : http://podgoretsky.com/ftp/docs/cobol%20in%2021%20days/index.htm

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

JAX-WS와 JAXB

2009/11/02 19:48

 오랜만에 다시 프로그래밍의 세계로 돌아왔다. 2009년 11월 2일부로~~

 

Java Bean 및 EJB로 부터 Web Service를 생성하는 데 있어서의 여러가지 상황에 대한 토론할 기회가 생겼다.

 

그 중에서, Java Bean에서 Web Service를 생성할 때, Interface를 파라미터로 가지는 Method에 대한 Web Service 생성 가능 여부에 대한

이야기를 해 봤다.

 

RSA/RAD에서 위에서 이야기한 Interface를 파라미터로 가지는 Method로 부터 Web Service를 생성하면 오류가 발생한다.

그래서, 그와 관련된, Spec을 찾아 봤다.

JAXB(Java Architecture for XML Binding) 2.1에 다음과 같은 구절이 나온다.

 

Note – The mapping of existing Java interfaces to schema constructs is not supported. Since an existing class can implement multiple interfaces, there is no obvious mapping of existing interfaces to XML schema constructs.

 

어찌 보면, 당연한 이야기일 것 같지만, 깜박할 소지가 있어서 적어둔다.~~

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

 BF의 Java API가 7.0.X 에서 7.1.X로 올라오면서, 몇가지 변경이 있다.

특히, 환경 변수 세팅하는 부분... 혹시나.. 어려움을 겪으실 지 모를 분들을 위해, 예전 7.0.X 버전 것을 조금 손 봤습니다.

 

/**
  * 빌드포지 프로젝트를 실행시키는 메소드
  *
  * @param info
  * @param buildPrjNm
  * @return
  * @throws IOException
  * @throws ServiceException
  */
 private String fireBFJob(BuildInfo info, String buildPrjNm, HashMap param) throws IOException, ServiceException {
  String buildID = "";
  APIClientConnection conn;
  BuildEnvironment environ;
  
  log.debug("BuildForge Connect.....");
  conn = new APIClientConnection(HOSTNAME, BF_PORT);
    conn.authUser(AUTH_ID, AUTH_PW);

  Project project = Project.findByName(conn, buildPrjNm);
  
  // As of 7.1, We need to use Build.Request & Build
  Build.Request buildRequest= new  Build.Request( project );
  Build currentBuild = Build.create(buildRequest); // Project를 실행하기 위한 Job을 하나 만든다.

  
  // 그 Job에 할당된, 환경변수그룹을 찾아낸다. Not Enviroment , But BuildEnvironment
  environ = BuildEnvironment.findByUuid(conn, currentBuild.getBuildEnvironmentUuid());
  log.debug("  Project From BF : " + project.getUuid().trim() + ":" + project.getName() );
  log.debug("  Enviroment Form BF : " + environ.getName());

 

  if (environ != null) {
   // 넘겨진 param(HashMap)을 가지고 환경 구성
   log.debug("BuildForge 환경 구성");
   Iterator paramIter = param.keySet().iterator();
   while (paramIter.hasNext()) {
    String paramKey = (String) paramIter.next();
    String paramValue = (String) param.get(paramKey);

    BuildEnvironmentEntry en = environ.getEntry(paramKey);
    log.debug("BF 환경정보(기본값) : " + en.getParameterName() + "|" + en.getParameterValue());
    currentBuild.updateBuildEnvEntryValue(en.getUuid(), paramValue); // 빌드 잡 인스턴스의 환경이므로, 직접적으로 세팅이 안된다.
    
   }
   
   // 환경 변수 설정  확인 용
   BuildEnvironment modifiedEnviron = BuildEnvironment.findByUuid(conn, currentBuild.getBuildEnvironmentUuid());
   Iterator modifiedEnvironEntries = modifiedEnviron.getEntries().iterator();
   while( modifiedEnvironEntries.hasNext() ) {
    BuildEnvironmentEntry modifiedEntry = (BuildEnvironmentEntry)modifiedEnvironEntries.next();
    log.debug("BF 환경정보(변경값) : " + modifiedEntry.getParameterName() + "|" + modifiedEntry.getParameterValue() );
   }
   // 환경 변수 설정  확인 용 끝
   
   log.debug("Before fire..");
   buildID = currentBuild.getUuid();
   Build.fireBuild(conn, currentBuild.getUuid() );
   
   log.debug("Project : " + project.getName() + " is fired " + buildID);
   
  } else {
      log.error("Project에 할당된 환경 변수 그룹이 없습니다.");
  }
  return buildID;
 }

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스

DB의 문자셋 관련

2009/10/12 23:23

 

요즘 BF, CQ의 UTF8 지원 관련해서, 시끄럽다.. (2009.10.12)

 

오라클의 NLS 정보에 관한 좋은 글로 위로를 삼아 볼까?

 

http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_1.html#mozTocId671523

 

 

이 글은 스프링노트에서 작성되었습니다.

Posted by 아프락사스
<< PREV : [1] : [2] : [3] : [4] : [5] : ... [16] : NEXT >>

BLOG main image

공지사항

카테고리

분류 전체보기 (155)
Architect이야기 (1)
Rational Products (94)
Patterns (0)
JEE Technologies (3)
Methodology (0)
Apache Project (0)
Open Project (4)
Knowhow (52)
Etc (0)