Monday 28 August 2017

[JMX] RMI, Stub, Skelton 개념

RMI(Remote Method Invocation)

RPC(Remote Procedure Call)를 객체지향으로 구현한 것, 흔히 JAVA버전으로 알려져 있다.
서버와 클라이언트 측 모두 Helper가 필요하며 서버 측 Helper가 Skeleton, 클라이언트 측 Helper가 Stub이다.


Stub

원격지에 위치해있는 프로그램을 대리하는 작은 루틴. RPC(혹은 RMI)를 사용하는 프로그램이 컴파일되면 요청된 절차를 제공하는 프로그램의 대역을 한다.
클라이언트에서 작업을 요청하는 데이터를 Marshaling하고 작업이 완료된 데이터를 다시 UnMarshaling하는 역할
클라이언트 보조 객체가 Stub이고 서버 보조객체가 Skeleton이다.
   

Skeleton

Stub와 비슷한 역할로 서버의 보조 객체이다.
클라이언트의 Stub에서 데이터가 Marshaling되어 전송되면 Skeleton에서 UnMarshaling하여 원래의 형태로 복원한다.
Marshaling / UnMarshaling
Marshaling은 데이터를 바이트로 쪼개서 TCP/IP같은 통신 채널을 통해 전송될 수 있는 형태로 바꿔주는 과정
UnMarshaling은 반대로 전송 받은 바이트를 원래의 형태로 복원하는 과정
Routine
어떤 프로그램이 실행될 때 불려지거나 반복해서 사용되도록 만들어진 일력의 코드

Wednesday 16 August 2017

[Oracle] Oracle Thin JDBC Driver URL Format

1. SID vs Service Name

SID :  DB 인스턴스명 (Unique)
Service Name : 1개 이상의 인스턴스의 별칭. 같은 DB를 다를 용도로 사용할 때, 이를 구별하기 위해도 쓸 수 있다.


2. Thin Driver URL Format

SID (no longer recommended by Oracle to be used):

 jdbc:oracle:thin:[<user>/<password>]@<host>[:<port>]:<SID>

Services:
 jdbc:oracle:thin:[<user>/<password>]@//<host>[:<port>]/<service>

TNSNames:
 jdbc:oracle:thin:[<user>/<password>]@<TNSName>



* ref

https://stackoverflow.com/questions/43866/how-sid-is-different-from-service-name-in-oracle-tnsnames-ora
http://www.orafaq.com/wiki/JDBC

Monday 14 August 2017

[ActiveMQ] Authentication for JMX Connector

Apache ActiveMQ JMX connector는 2 가지 Authentication 메카니즘을 제공한다.

1. Simple authentication 
- 로그인 유저/패스워드 설정파일인 jmx.password, 유저별 권한설정 파일인 jmx.access 를 통해 접근을 제어한다.

2. JAAS authentication
- JAAS(Java Authentication and Authorization Service) realm과 로그인 모듈을 이용하여 접근을 제어한다.


Simple authentication(jmx.password, jmx.access)를 이용한 ActiveMQ JMX Connector 설정 방법

1. jmx.password 설정

$> vi $ACTIVEMQ_BASE/conf/jmx.password

# The "admin" user has password "activemq".
admin activemq
user1 password
user2 password
...
와 같이 설정한다.


2. jmx.access 설정

$> vi $ACTIVEMQ_BASE/conf/jmx.access

* 권한 종류
readonly : MBean attributes를 read만 가능
readwrite : MBean attributes Read/Write 권한 및 Invoke operation을 호출, MBean 생성/삭제 등의 권한

# The "admin" user has readwrite access.
admin readwrite
user1 readwrite
user2 readonly
...
와 같이 설정한다.

3. conf/activemq.xml 설정


<beans ... >
  <broker xmlns="http://activemq.apache.org/schema/core" ... >
    ...
    <managementContext>
      <managementContext createConnector="true"
                         connectorPort="2011"
                         jmxDomainName="org.apache.activemq">
        <property xmlns="http://www.springframework.org/schema/beans" name="environment">
          <map xmlns="http://www.springframework.org/schema/beans">
            <entry xmlns="http://www.springframework.org/schema/beans"
                   key="jmx.remote.x.password.file"
                   value="${activemq.base}/conf/jmx.password"/>
            <entry xmlns="http://www.springframework.org/schema/beans"
                   key="jmx.remote.x.access.file"
                   value="${activemq.base}/conf/jmx.access"/>
          </map>
        </property>
      </managementContext>
    </managementContext>
    ...
  </broker>
  ...
</beans>


4. Connect using (j)VisualVM




















* reference
https://access.redhat.com/documentation/en-US/Fuse_ESB/4.4.1/html/ActiveMQ_Security_Guide/files/JMX-AmqConnector-Authent.html
http://activemq.apache.org/jmx.html

Friday 11 August 2017

[GitHub] 유용한 것 정리

* 특정 기간 전부터의 변경 내역 확인

- https://github.com/[USER]/[PROJECT]/compare/[BRANCH]@[n.day.ago}...[BRANCH]
   - day, week, month, year 옵션 사용 가능
   - 변경 내역이 많으면 최근 내용만 나옴

* 지정한 날 이후 변경 내역 확인

- https://github.com/[USER]/[PROJECT]/compare/[BRANCH]@{YYYY-MM-DD}...[BRANCH]

* commit 메시지로 Issue 연관 나타내기

- [Commit Message] #[이슈번호]
   - ex) Modified code communicating DB server #3

* commit 메시지로 Issue Close 하기

- fix #[이슈번호]
   - fixes #[이슈번호]
   - fixed #[이슈번호]
   - close #[이슈번호]
   - closes #[이슈번호]
   - closed #[이슈번호]
   - resolve #[이슈번호]
   - resolves #[이슈번호]
   - resolved #[이슈번호]

* 이모티콘 자동완성

- ':'(colon) 입력하면 이모티콘 리스트 나옴