SlideShare una empresa de Scribd logo
1 de 62
Descargar para leer sin conexión
JBoss Enterprise Application Platform 6

주식회사 오픈 소스 컨설팅
JBoss Overview

JavaEE 6 Full Certification, JDK6

JavaEE 5 Certification, JDK5, JDK6
JBoss EAP 6

JavaEE 5 Certification, JDK5
JBoss EAP 5.1.0 – 5.1.2

JBoss EAP 5.0.0

J2EE 1.4 Certification
JBoss AS 4.2.0 – 4.2.3
JBoss AS 4.0.0 – 4.0.5

JBoss AS 3.2.0

2003

2004

2005

2006

2007

2008

2
- Internal Use Only -

2009

2010

2011

2012

2012
Community vs Commercial
JBoss Enterprise Middleware

JBoss.org Community

3
- Internal Use Only -
JBoss 제품화 과정

Productization Team

Delivery Phase

1
JBoss.org 프로젝트

2

3

4

제품 요구 사항 정의

플랫폼 컴포넌트
구성 및 통합

플랫폼 테스팅, 인증, 문
서화

플랫폼 발표
(General Availability)

Platform
Candidate
Release(s)

Quality
Assurance

JBoss
Enterprise
Platform

제품 관리

JBoss
제품화 담당 엔지니어

4
- Internal Use Only -

JBoss QA, 문서화팀,
인증된 파트너

5

JBoss Release
Engineering
JBoss 참고 자료
제품 문서
http://docs.redhat.com

5
- Internal Use Only -
JBoss 설치
Red Hat 고객 포탈을 통한 다운로드
레드햇 서브스크립션을 구매한 고객을 위한 다운로드 사이트이며, 발급된 계정으로 로그인을 수행하
면 다운로드 받을 수 있습니다.
다운로드 URL: http://access.redhat.com

6
- Internal Use Only -
JBoss 설치
JBoss 설치 형태
community : zip 압축 파일로 제공
EAP

: zip, jar, platform binary, linux rpm 형태로 제공

Extracting the ZIP Download
Binary File을 받아서 원하는 경로에 압축을 해제하는 설치 방법입니다.
# unzip jboss-eap-6.1.1.zip

RPM 설치
RHEL 6.x Plaform을 이용하여 설치이며 서브스크립트이 필요한 설치 방법입니다.

# yum groupinstall jboss-eap6
GUI Installer
Linux GUI 환경에서 설치하는 방법이며 설치 중 원하는 구성을 손쉽게 설정할 수 있는 설치 방법입니다.

# java -jar jboss-eap-6.1.1-installer.jar
Console Installation
Linux GUI 환경이 안 되는 상황에서 터미널창을 이용하여 Text 방식으로 설치할 수 있는 설치 방법입니다.

# java -jar jboss-eap-6.1.1-installer.jar –console

7
- Internal Use Only -
JBoss 설치
JBoss unzip
/opt/was/ 폴더로 해당 파일을 업로드 한 후 압축 해제
[jboss@server /opt/was] unzip jboss-eap-6.1.1.zip
[jboss@server /opt/was] rm -f jboss-eap-6.1.1.zip

ls –al 명령어를 통해 압축 해제 내용을 확인
[jboss@server /opt/was]# ls -al
total 52
drwxr-xr-x. 13 jboss jboss 4096 Oct 24 07:54 .
dr-xr-xr-x. 27 jboss jboss 4096 Jun 12 02:00 ..

lrwxrwxrwx 1 jboss jboss 19 Oct 24 07:54 jboss-eap-6.1

8
- Internal Use Only -
지원 애플리케이션
지원되는 애플리케이션

웹 애플리케이션(.war)
EJB 애플리케이션(.jar)
Enterprise 애플리케이션(.ear)

Resource Adapter (.rar)
웹서비스애플리케이션(.wsr)
JBoss 서비스(.sar)

9
- Internal Use Only -
애플리케이션 디플로이 설정
애플리케이션 디플로이 수행 방법
 애플리케이션 copy 후 파일 생성을 통한 디플로이

deployments 폴더에 a.war 라는 애플리케이션이 있을 경우 a.war.dodeploy 라는
파일을 생성하여 deploy 하는 방법
 관리자 콘솔을 통한 디플로이

Web Console

 CLI Tool을 이용한 디플로이

CLI Tool
10
- Internal Use Only -
디플로이 스캐너
애플리케이션 copy 후 파일 생성을 통한 디플로이
 subsystem deployments-scanner service

특정 디렉토리에 애플리케이션패키지 및 deploy 지시 관련 파일을 참조하여
디플로이를 수행시켜주는 jboss subsystem ( 서버 default 옵션 )
 설정 파일 : $SERVER_HOME/configuration/standalone.xml
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner path="deployments"
relative-to="jboss.server.base.dir"
scan-interval="5000"/>
</subsystem>

 검색 위치 : $SERVER_HOME/deployments

11
- Internal Use Only -
디플로이 상태
애플리케이션 copy 후 파일 생성을 통한 디플로이 (계속)
디플로이 요청 지시어
설정
dodeploy

설명
deploy scanner에게 deploy를 하게 요청하게 하는 지시어

디플로이 상태 확인
설정

설명

isdeploying

서버에 애플리케이션을 배포하는 상태

deployed

정상적으로 서버에 애플리케이션이 배포 완료

isundeploying

서버에서 애플리케이션 배포를 취소(삭제) 하고 있는 상태

undeployed

정상적으로 서버에서 애플리케이션 배포 취소(삭제) 완료

failed

서버에 애플리케이션 배포작업 중 에러가 발생한 상태

pending

서버에 애플리케이션 배포작업이 지연중인 상태
12
- Internal Use Only -
WAR 디플로이
애플리케이션 copy 후 파일 생성을 통한 디플로이 (계속)
첨부된 test.war 파일을 standalone 서버의 deployments 폴더에 upload 시킵니다.
[jboss@host1 /opt/was/servers/standalone_ha_11/deployments] ls –al
total 20
-rw-r--r-- 1 jboss jboss 8870 Nov 1 10:15 README.txt
-rw-r--r-- 4 jboss jboss 4096 Nov 2 12:39 test.war

touch 명령을 통해 test.war.dodeploy 라는 이름의 파일을 생성합니다.
[jboss@host1 /opt/was/servers/standalone_ha_11/deployments] touch test.war.dodeploy
total 20
-rw-r--r-- 1 jboss jboss 8870 Nov 1 10:15 README.txt
-rw-r--r-- 4 jboss jboss 4096 Nov 2 12:39 test.war
-rw-rw-r-- 1 jboss jboss 8 Nov 2 12:39 test.war.dodeploy

13
- Internal Use Only -
WAR 디플로이(계속)
애플리케이션 copy 후 파일 생성을 통한 디플로이 (계속)
잠시 후 test.war.dodeploy  test.war.deployed 로 변경된 것을 확인
[jboss@host1 /opt/was/servers/standalone_ha_11/deployments] touch test.war.dodeploy
total 20
-rw-r--r-- 1 jboss jboss 8870 Nov 1 10:15 README.txt
-rw-r--r-- 4 jboss jboss 4096 Nov 2 12:39 test.war
-rw-rw-r-- 1 jboss jboss 8 Nov 2 12:39 test.war.deployed

서버 로그에서 애플리케이션 정상 디플로이 여부 확인
13:02:12,618 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 2) JBAS010281: Started
default-host/test cache from web container
13:02:12,619 INFO [org.jboss.web] (ServerService Thread Pool -- 2) JBAS018210: Register web context:
/test
13:02:12,719 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "test.war"
(runtime-name : "test.war")

14
- Internal Use Only -
외부 디플로이 디렉토리
external directory 설정


external directory란




jboss deployments subsystem 에서 기본 scanner가 동작 폴더는 jboss.server.base.dir
하부의 deployments라는 폴더임
external directory 는 말 그대로 기본 deployments 디렉토리가 아닌 외부 확장 폴더를
scanner 영역에서 지정하여 애플리케이션 등록 여부를 확인 할 수 있게 지정하는 애플리
케이션 외부확장 검색 디렉토리

15
- Internal Use Only -
외부 디플로이 디렉토리(계속)
external directory 설정
 subsystem deployments-scanner service에 external directory 추가
 설정 파일 : $SERVER_HOME/configuration/standalone.xml
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner path="deployments"
relative-to="jboss.server.base.dir"
scan-interval="5000"/>
<deployment-scanner name="externalDeploy" path="/opt/was/app" scan-interval="5000"/>
</subsystem>

 검색 위치 : $SERVER_HOME/deployments

16
- Internal Use Only -
CLI 활용 디플로이
JBoss Command Line Interface를 이용한 Deploy
CLI 접속 가능 여부 확인
서버가 정상 기동시 아래와 같이 관리자 Port를 통해 CLI 관리자 Tool을 이용할 수 있다.
 Command Line Interface Port : 10099
… 중략
16:23:12,284 INFO [org.jboss.as.remoting] (MSC service thread 1-1) JBAS017100: Listening on 192.168.0.172:10099
16:23:12,285 INFO [org.jboss.as.remoting] (MSC service thread 1-7) JBAS017100: Listening on 0.0.0.0:4547
16:23:12,572 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on
http://192.168.0.172:10090/management
16:23:12,572 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://192.168.0.172:10090

16:23:12,572 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.1.1.GA (AS 7.3.0.Final-redhat-8) started
in 2156ms - Started 168 of 284 services (115 services are passive or on-demand)

17
- Internal Use Only -
CLI 접속
CLI 접속 방법
CLI 접속을 하기 위해서는 다음의 명령어를 통해 접속

$JBOSS_HOME/bin/jboss-cli.sh --controller=$SERVER_IP:10099 --connect
[jboss@host1 /opt/was/servers/standalone_ha_11/bin]$ /opt/was/jboss-eap-6.1/bin/jboss-cli.sh --

controller=192.168.0.172:10099 --connect

[standalone@192.168.0.172:10099 /]

18
- Internal Use Only -
CLI 활용 디플로이
CLI을 통한 디플로이
CLI 접속이 완료가 된 이후에 Deploy 작업을 진행한다.
본 내용에서는 /opt/was/app/test.war 파일이 있는걸 가정하고 진행
[standalone@192.168.0.172:10099 /] deploy/was/app/test.war
[standalone@192.168.0.172:10099 /]

Deploy 요청이 정상적으로 수행이 되면 server 로그 부분에 결과가 표시
16:39:16,290 INFO [org.jboss.as.repository] (management-handler-thread - 5) JBAS014900: Content added at location

/opt/was/servers/standalone_ha_11/data/content/d9/0e2d6e3bad2a5cb22edc747e1774200eecd14e/content
16:39:16,292 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015876: Starting deployment of “test.war"
(runtime-name: “test.war")
16:39:16,324 INFO [org.jboss.web] (ServerService Thread Pool -- 57) JBAS018210: Register web context:
16:39:16,432 INFO [org.jboss.as.server] (management-handler-thread - 5) JBAS018559: Deployed “test.war" (runtime-name :
“test.war")

19
- Internal Use Only -
관리 콘솔 확인
CLI을 통한 deploy (계속)
관리자 콘솔에서 CLI를 통해 deploy 된 Content의 현 상태를 확인 가능

20
- Internal Use Only -
애플리케이션 확인
CLI을 통한 deploy (계속)
실제 http service port 를 통해 deploy 된 Web application Content를 확인

21
- Internal Use Only -
EAP6 Architecture

JBoss
Modules

MSC

Controller

Threads

Reflect Cache

Repository

DMR

Service Controller Service
Deployer

VFS

Jandex

Subsystems
22
- Internal Use Only -

JTA

JMX

JAX-RS

Web

Security

SAR

Remoting

OSGi

Naming

Messaging

JPA

WebBeans

EJB

Data Source

Connector

Core Infrastructure
Domain Structure

Server #1
Host
Controller

Server #2

…

Database

Host #2
Domain Controller
(Master Host Controllre)
Server #3

Host #1
Host
Controller

Sever #4

…
Host #3

Server #5
Host
Controller

Host #4

23
- Internal Use Only -

Database
JBoss 설치
JBoss의 주요 디렉토리 구조
Jboss-eap-6.x
bin

standalone.conf

Standalone mode JVM parameters

standalone.sh

Standalone mode

domain.sh

Domain mode

jboss-cli.sh

Command Line Interface

modules

Static JBoss Module Definitions

standalone
configuration

Standalone Configuration

deployments

File SystemDeployments

logs

Internal Data(includes Repository)

data

24
- Internal Use Only -
JBoss 설치
JBoss의 주요 디렉토리 구조
Jboss-eap-6.x
domain
configuration
domain.xml

Domain Wide Unified Configuration

host.xml

Host Controller Configuration

servers
Server “One” JVM Instance

server-one
logs

data
appclient
configuration
EE Application Client Configuration

appclient.xml

25
- Internal Use Only -
Management Interface
Tools
•

Command Line Interface

•

Web Console

•

Products - JBoss ON

Management APIs
• JMX – JSR-77/160
• Java(DMR)
• REST

26
- Internal Use Only -
Container Services Relationship
Everything is a Service
Services have start and stop task

customer.jar

Remoting

CustomerManagerEJB

Services have dependencies
service.jar

Module class loading
Similar to IDE projects or modules

Foo
DataSource

ServiceManagerEJB

JNDIName:
dsFoo

<module name=“com.lge”>
<main-class name=“com.lge.Main”/>
<resources>
<resource-root path=“mymain.jar”/>
</resources>
<dependencies>
<module name=“org.slf4j”/>
<module name=“javax.api”/>
<module name=“org.junit”/>
</dependencies>
</module>

Web Server

JNDIName:
customerM

JNDIName:
serviceM

manager.war
ManagerServlet

27
- Internal Use Only -
Modular EE Class Loading

Implicit dependency

WAR Deployment Module

javax.api

MANIFEST.MF

javaee.api

javax.servlet
…

Dependency: com.hana
Class-Path: /foo/bar.jar
Extension-List: myext

EJB Sibling Deployment
Module
Explicit dependency
com.hana
external./foo/bar.jar
extension.myext

28
- Internal Use Only -
JBoss and Mobile

[The HTML5/REST Architecture support]
29
- Internal Use Only -
Class Loader – WebLogic
각 애플리케이션의 클래스 로더를 통해 클래스 로딩
BootClassLoader(native)

ExtensionClassLoader

SystemClassLoader

J2EE Application Unit

J2EE Application Unit

Application Classloader
EJB1

Call-by-Reference

EJB2

Application Classloader
WebApp Classloader

EJB3

WebApp Classloader

Call-by-Reference
Call-by-Value
JSP1

JSP1

JSP2

30
- Internal Use Only -

JSP2
Class Loader – JBoss EAP5 vs EAP6
모듈형 클래스로더

계층형 클래스로더

 모듈 하나에 대해서 하나의 클래스로더

 애플리케이션 마다 클래스로더를 만들수 있고, 클래스

 각 모듈은 런타임으로 필요로 하는 모듈의

재로드 가능

의존성을 정의

 복잡/ 클래스 검색이 늦음
 중복 배치에 의한 오류 발생

 계층형이 아닌 그래프 구조

 클래스 공유

「클래스 패스」 불필요

 문제를 회피하기 위한 구조가 더 복잡도를 높여 악순환

 단순하여 초고속

31
- Internal Use Only -
Thread Pooling
웹로직은 Multiplexer, JBoss은 개별 컴포넌트로 구성
WLS

JBoss

32
- Internal Use Only -
WLS vs JBoss 세션 복제의 차이

JBoss

WLS

- Internal Use Only -
웹로직 클러스터링– 최초 연결
WLS Tracking Cookie Format: sessionid!primary_JVMID!secondary_JVMID
3
M1 인스턴스가 이 세션에
대한 primary로 지정.
복제관리자는 M2를
secondary로 지정하고 추
적 쿠키 정보를 갱신

M1
2

1

라운드 로빈 알고리즘
사용하여 live
인스턴스 찾음

클라이언트
요청 전송

A

M2
Client

A’

Proxy

M3

5
최종 추적 쿠키
Cookie(Primary=M1;Seco
ndary=M2)

M4

- Internal Use Only -

4
복제 관리자는 M2로 해당
세션을 복제
웹로직 클러스터링 – Failover
3
연결 문제 발생
(연결에러, 타임아웃)

7
복제 관리자는 M1에 있는
세션을 제거하도록 통지

M1
2

1
클라이언트 요청
추적 쿠키:
Cookie(Primary=M1;Sec
ondary=M2)

A

인스턴스 M1 정상,
요청을 전달함

M2
Client

8

M2가 이 세션에 대한
primary로 전환. 복제관리
자는 M3를 secondary로
지정하고 추적 쿠키 정보
를 갱신

A’

Proxy

M3

4
최종 추적 쿠키
Cookie(Primary=M2;Seco
ndary=M3)

5

6
A’

Proxy는 장애를 감지하고,
secondary 인스턴스 M2
로 접속을 시도

복제 관리자는 해당 세션
을 M3로 복제시킴

M4

- Internal Use Only -
JBoss Clustering Architecture
JBoss AS5, AS6, EAP5 (EAP)
App

App

JBoss Cache

JGroups

JBoss Cache

App

JGroups

JBoss Cache

JBoss

JBoss

App

JBoss

App

JBoss AS7, EAP6

App

Embedded

Infinispan
JBoss

JGroups

Embedded
Infinispan
JBoss
- Internal Use Only -

JGroups

Embedded
Infinispan
JBoss
JBoss 클러스터링 – 최초 연결(All to All)
JBoss Tracking Cookie Format: jsessionid__JvmRoute1)
3
M1

M1 인스턴스가 이 세션을
저장

2

1

플러그인 알고리즘 사
용하여 live
인스턴스 찾음

클라이언트
요청 전송

A

M2
Client

웹 서버
플러그인

4
A’

Jgroups를 통해 세션이 모
든 서버에 복제

M3

5

A’

최종 추적 쿠키
Cookie(sessionid_M1)

M4

1) jvmRoute: 서버의 설정 값으로써 웹 서버 플러그인과 인스턴스를 맵핑시킴

A’

CAUTION: 서버당 100M 세션이 있을 경우 M1~M4서버 총 400M의 저장공간 필요!
- Internal Use Only -
JBoss 클러스터링 – Failover(All to All)
3
연결 문제 발생
(연결에러, 타임아웃)

M1
2

1
클라이언트
요청 전송
Cookie(sessionid_M1)

A

인스턴스 M1 에게
요청을 전달함

M2
웹 서버
플러그인

Client

5
A’

M3

5
최종 추적 쿠키
Cookie(sessionid_M2)

A’

4
플러그인는 장애를 감지
하고, 알고리즘에 의해
다른 서버 연결을 시도

M4
A’

- Internal Use Only -

M2의 jvmRoute값을 이용
하여 추적 쿠키의 값을
M2 인스턴스로 갱신
웹 서버 커넥터(WEB/WAS 구간)
Apache Tomcat Connector
Tomcat, JBoss 와 연동을 하기 위한 웹 서버 플러그인 모듈 ( Apache 재단 )

지원 웹서버
 Apache
 IIS
 Netscape/SunOne Web Server
AJPv13 프로토콜 사용
 http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html
다운로드
 http://tomcat.apache.org/connectors-doc/

39
- Internal Use Only -
웹 서버 커넥터(WEB/WAS 구간)
Apache Tomcat Connector : mod_jk, mod_proxy, mod_cluster
3가지 아파치 모듈 연결 방식

 mod_jk – 가장 오래되고 안정적
 mod_proxy – Apache 2.2 이상에서 가능
mod_proxy_ajp, mod_proxy_balancer등이 필요
 mod_cluster – 새로운 형태의 모듈 multicast 방식으로 자동 발견 기능 제공

40
- Internal Use Only -
JBoss Database 연동 설정
JDBC 드라이버 등록 방법
JDBC 드라이버는 다음의 형태를 통해 사용할 수 있습니다.
설정

설명

modules

JDBC 드라이버를 jboss의 module.xml 형태의 모듈화하여 사용하는 방법

library

Jar 파일의 형식의 deploy를 통한 모듈 등록

41
- Internal Use Only -
JBoss Database 연동 설정
JDBC 드라이버 등록 설정
$JBOSS_HOME/modules.ext 디렉토리에 하위 디렉토리를 만들고 jar 파일을 복사한 후
module.xml 파일을 작성합니다.

42
- Internal Use Only -
JBoss Database 연동 설정
JDBC 드라이버 모듈화 설정 (계속)
module.xml
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<properties>
<property name="jboss.api" value="unsupported"/>
</properties>

<resources>
<resource-root path="mysql-connector-java-commercial-5.1.26-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>

43
- Internal Use Only -
JBoss Database 연동 설정
JBoss 인스턴스 설정 파일에 해당 JDBC 모듈 추가
JBoss Server 인스턴스의 설정 파일(standalone-ha.xml)에 jdbc 드라이버를 등록
<datasources>
<datasource jndi-name="java:jboss/datasources/ExampleDS"
pool-name="ExampleDS" enabled="true"
use-java-context="true">
…중략…
</datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
<driver name="mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
</driver>
</drivers>
</datasources>

 module.xml 의 name 과 driver의 module 부분은 동일하여야 함. (module.xml)
<module xmlns="urn:jboss:module:1.1" name="com.mysql">

44
- Internal Use Only -
JBoss Database 연동 설정
Datasource 설정
standalone Instance 에서 사용되는 configuration 파일(standalone-ha.xml)에 Datasource 부분을

설정합니다.
<datasources>
<datasource
jndi-name="java:jboss/datasources/MysqlDS"
pool-name="MysqlDS" enabled="true"
use-java-context="true">
<connection-url>jdbc:mysql://localhost:3306/mydb</connection-url> <driver>com.mysql</driver>
<security>
<user-name>dbuser</user-name>
<password>dbpasswd</password>
</security>
<validation>
<valid-connection-checker classname="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker">
</valid-connection-checker>
</validation>
</datasource>
</datasources>

EAP 5.x 대의 *-ds.xml 파일은 가급적 사용을 하지 않도록 합니다. (Console, CLI 에서 접근 할 수 없음.)
45
- Internal Use Only -
JMS Queue

Potential
Receiver 1
Sender

메시지 1

Potential
Receiver 2

메시지 2

Queue

메시지1
메시지2

- Point-to-Point 모델에서는 Sender에 의해 발생된 메시지가 Queue라는 채널에 전달되고, 이 메시지는
Queue에 의해 자동으로 Receiver에 전달

- Publisher/Subscriber 모델과 다른 점은 Queue에 전달된 하나의 메시지는 오직 하나의 Receiver에만 전달되
고 다수의 Receiver 에 전달되지 않음
- Sender에 의해 Queue에 전달된 메시지1은 Queue에 의해 Receiver1에 전달되고, Sender에 의해 전달된 메
시지2는 Queue에 의해 Receiver2에 전달
- Publisher/Subscriber 모델처럼 동일한 메시지가 서로 다른 Receiver에 전달되지 않음
- Internal Use Only -
JMS Topic

Subscriber
Publisher

메시지 1
메시지 2

Subscriber

메시지 1
메시지 2

Topic
메시지1
메시지2

- Publisher/Subscriber 모델에서는 Publisher가 하나의 메시지를 다수의 Subscriber(Consumer)에게
Topic 이라는 채널을 통하여 전달
- 모든 Subscriber는 Publisher가 Topic에 보낸 하나의 메시지의 사본을 전달 받게 되며, 이와 같은 메시
지 전달은 Topic에 의해 자동으로 Subscriber에 전달
- Publisher 에 의해 전달된 메시지1은 동시에 Subscriber1, Subscriber2 에 전달되며, Publisher에 의해
전달된 2번째 메시지인 메시지2 도 Subscriber1, Subscriber2에 전달

- Internal Use Only -
JBoss JMS 핵심 기능
JMS 1.1 스펙 준수 및 JBoss AS의 런타임 라이브러리로 사용.
성능, 신뢰성, 안정성 및 낮은 응답시간 등에 초점을 둠.
SOA의 초기 단계인 JBoss ESB의 핵심 모듈로서 사용
Netty 기반의 고성능 자바 엔진(LDAP, DNS, Keberos, etc)
Client-side Delegates
?
Connection
Sender
Session

JBoss
Netty

Core

Producer
Server-side
aspects
Consumer

Client-side aspects

Server-side
endpoints
- Internal Use Only -

Receiver
JBoss Netty – 고성능 네트워크 클라이언트/서버 프레임워크
이벤트 기반 비동기 네트워크 애플리케이션 프레임워크
Interceptor Chain 패턴
• 손쉽게 다단계 State machine 구현
• 암복호화 + 전문 해석 + 스레드 풀링 + 비즈니스 로직

• 조립 가능한 컴포넌트 다수 제공

과부하 및 DoS 방어 메커니즘
Old · New I/O 모두 지원
NIO 구현·벤더별 최적화

- Internal Use Only -
부가 기능 및 성능
SpecJMS2007 Bench Mark
- 초당 820만건 데이터 처리
HTTP를 이용한 단순한 RESTful
인터페이스 제공
AMQP – 향후 AMQP 프로토콜 지원
예정
STOMP(Streaming Text Oriented
Messaging Protocol)
STOMP 메시지 브로커를 통해 다양한
이기종 언어 간의 메시지 통신 기능
지원
XMPP : XML 기반 인터넷 통신을 위한
오픈 프로토콜
비동기 웹 지원 (Ajax/comet/bayeaux)

http://hornetq.blogspot.kr/2011/07/82-million-messages-second-with-specjms.html
- Internal Use Only -
JMS Queue 생성

Naming이 java:jboss/exported/ 로 시작되지 않으면 글로벌 JNDI에 바인딩되지 않음
- Internal Use Only -
JMS 사용자 생성
JMS 접근 사용자 생성
C:Javajboss-eap-6.1bin>add-user.bat
JAVA_HOME is not set. Unexpected results may occur.
Set JAVA_HOME to the directory of your local JDK to avoid this message.
What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a): b
Enter the details of the new user to add.
Realm (ApplicationRealm) :
Username (testuser) : ienvyou
Password : !test123
Re-enter Password : !test123
What roles do you want this user to belong to? (Please enter a comma separated list, or leave blank for
none)[ ]: testrole
About to add user 'ienvyou' for realm 'ApplicationRealm'
Is this correct yes/no? yes
Added user 'ienvyou' to file 'C:Javajboss-eap-6.1standaloneconfigurationapplication-users.properties'
Added user 'ienvyou' to file 'C:Javajboss-eap-6.1domainconfigurationapplication-users.properties'
Added user 'ienvyou' with roles testrole to file 'C:Javajboss-eap6.1standaloneconfigurationapplication-roles.properties'
Added user 'ienvyou' with roles testrole to file 'C:Javajboss-eap-6.1domainconfigurationapplicationroles.properties'
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server
EJB calls.
yes/no?

- Internal Use Only -
송수신 권한 설정
standalone-full.xml<before>
<security-settings>
<security-setting match="#">
<permission type="send" roles="guest"/>
<permission type="consume" roles="guest"/>
<permission type="createNonDurableQueue" roles="guest"/>
<permission type="deleteNonDurableQueue" roles="guest"/>
</security-setting>
</security-settings>

standalone-full.xml<after>
<security-settings>
<security-setting match="#">
<permission type="send" roles="guest testrole"/>
<permission type="consume" roles="guest testrole"/>
<permission type="createNonDurableQueue" roles="guest"/>
<permission type="deleteNonDurableQueue" roles="guest"/>
</security-setting>
</security-settings>

- Internal Use Only -
애플리케이션을 통한 테스트
try {
Hashtable<String, String> properties = new Hashtable<String, String>();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
properties.put(Context.PROVIDER_URL, "remote://localhost:4447");
properties.put(Context.SECURITY_PRINCIPAL, "admin");
properties.put(Context.SECURITY_CREDENTIALS, "!test123");
Context ctx = new InitialContext(properties);
ConnectionFactory cf = (ConnectionFactory) ic.lookup("jms/RemoteConnectionFactory");
Queue queue = (Queue) ic.lookup(destinationName);
System.out.println("Queue " + destinationName + " exists");

Connection connection = cf.createConnection("ienvyou", "!test123");
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer sender = session.createProducer(queue);
sender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
TextMessage message = session.createTextMessage("Hello!");
sender.send(message);
System.out.println("The message was successfully sent to the " + queue.getQueueName() + " queue");

connection.start();
} catch(Exception e) {
}
closeConnection(connection);

- Internal Use Only -
Before JMX
Before JMX
벤더 고유의 관리 콘솔을 제공
일반적으로 웹 브라우저를 통하여 접근하도록 설계
API를 제공해주지 않을 경우 해당 관리 객체에 접근하기 어려움

Firewall hardware

Management console

Server

Management console

Web server software

Management console

Server Application

Management console

DB server software

Management console

- Internal Use Only -
With JMX(Java Management Extension)
JMX를 이용할 경우 소프트웨어 관리 포인트를 한 곳으로 집중할 수 있다는 장점이 발생.(JSR-255)
• 모든 리소스는 MBean을 사용하여 관리.
• JMX Agent (or group of agents)상의 모든 MBean은 하나의 관리 콘솔에서 모두 처리
Firewall hardware

Server

JMX Agent

Web server software
Server Application
DB server software

Adapter

Management console

= JMX MBean
http://www.jcp.org/en/jsr/detail?id=255
JSR 255: JavaTM Management Extensions (JMXTM) Specification, version 2.0
- Internal Use Only -
WebLogic JMX 적용 예
DomainRuntimeMBean을 통한 현재 JVM 및 JMS 상태 정보
JMS 관련 Queue 설정 정보 확인
-----------------------------------------------------------------------------------------------------------------com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean
ServerRuntimes
-----------------------------------------------------------------------------------------------------------------Server Name
Server State
Server JVMRuntime Name
Server JVMRuntime HeapSizeCurrent
Server JVMRuntime HeapFreeCurrent
Server JMSRuntime JMSServers Name
Server JMSRuntime JMSServers Destinations Name
Server JMSRuntime JMSServers Destinations ConsumersCurrentCount
Server JMSRuntime JMSServers Destinations ConsumersHighCount
Server JMSRuntime JMSServers Destinations ConsumersTotalCount
Server JMSRuntime JMSServers Destinations MessagesCurrentCount
Server JMSRuntime JMSServers Destinations MessagesHighCount
Server JMSRuntime JMSServers Destinations MessagesPendingCount
Server JMSRuntime JMSServers Destinations MessagesReceivedCount
-----------------------------------------------------------------------------------------------------------------com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean
DomainConfiguration
-----------------------------------------------------------------------------------------------------------------Domain JMSSystemResources JMSResource Name
Domain JMSSystemResources JMSResource Queues Name
Domain JMSSystemResources JMSResource Queues JNDIName
Domain JMSSystemResources JMSResource DistributedQueues Name
Domain JMSSystemResources JMSResource DistributedQueues JNDIName
Domain JMSSystemResources JMSResource DistributedQueues DistributedQueueMembers Name
- Internal Use Only -
JMX Object Name 수집
C:Javajboss-eap-6.1bin> standalone.bat -c standalone-full
C:Javajboss-eap-6.1bin> jconsole.bat

- Internal Use Only -
JVM Heap ObjectName

- Internal Use Only -
JMS ObjectName

- Internal Use Only -
JMX Code Example
import
import
import
import
import
import
import
import

java.util.HashMap;
javax.management.MBeanServerConnection;
javax.management.openmbean.CompositeDataSupport;
javax.management.openmbean.CompositeType;
javax.management.remote.JMXConnector;
javax.management.remote.JMXConnectorFactory;
javax.management.remote.JMXServiceURL;
javax.management.*;

public class HeapAccess {
public static void main(String[] args) throws Exception {
String host = "127.0.0.1"; // Your JBoss Bind Address default is localhost
int port = 9999; // JBoss remoting port
String urlString ="service:jmx:remoting-jmx://" + host + ":" + port;
System.out.println("
nnt**** urlString: "+urlString);
HashMap
environment = new HashMap();
String[] credentials = new String[] {"test", "!test123"};
environment.put (JMXConnector.CREDENTIALS, credentials);
JMXServiceURL serviceURL = new JMXServiceURL(urlString);
JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceURL, environment);
MBeanServerConnection connection = jmxConnector.getMBeanServerConnection();
ObjectName objectName=new ObjectName("java.lang:type=Memory");
CompositeDataSupport heapMemoryUsage =(CompositeDataSupport)connection.getAttribute(objectName, "HeapMemoryUsage");
System.out.println("
System.out.println("
System.out.println("
System.out.println("

committed
init
max
used

=
=
=
=

"
"
"
"

+
+
+
+

jmxConnector.close();
}
}
- Internal Use Only -

heapMemoryUsage.get("committed"));
heapMemoryUsage.get("init"));
heapMemoryUsage.get("max"));
heapMemoryUsage.get("used"));
요약

OPEN
SHARE
CONTRIBUTE
ADOPT
REUSE
62
- Internal Use Only -

Más contenido relacionado

La actualidad más candente

VMware Cloud on AWS POC テストケース
VMware Cloud on AWS POC テストケースVMware Cloud on AWS POC テストケース
VMware Cloud on AWS POC テストケースNoritaka Kuroiwa
 
DB2の使い方 管理ツール編
DB2の使い方 管理ツール編DB2の使い方 管理ツール編
DB2の使い方 管理ツール編Akira Shimosako
 
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。hiyohiyo
 
JBoss EAP 설치 가이드
JBoss EAP 설치 가이드 JBoss EAP 설치 가이드
JBoss EAP 설치 가이드 Opennaru, inc.
 
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介IBM Analytics Japan
 
CODT2021 CyberAgentでの サーバ選定手法の紹介
CODT2021 CyberAgentでの サーバ選定手法の紹介CODT2021 CyberAgentでの サーバ選定手法の紹介
CODT2021 CyberAgentでの サーバ選定手法の紹介Hiroki Chinen
 
WebLogic Scripting Tool made Cool!
WebLogic Scripting Tool made Cool!WebLogic Scripting Tool made Cool!
WebLogic Scripting Tool made Cool!Maarten Smeets
 
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介オラクルエンジニア通信
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0Ji-Woong Choi
 
新しくなったAzure Stack HCIは以前と何が違うのか?もう一度ゼロからしっかり整理します!
新しくなったAzure Stack HCIは以前と何が違うのか?もう一度ゼロからしっかり整理します!新しくなったAzure Stack HCIは以前と何が違うのか?もう一度ゼロからしっかり整理します!
新しくなったAzure Stack HCIは以前と何が違うのか?もう一度ゼロからしっかり整理します!Masahiko Ebisuda
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会Shigeru Hanada
 
LAMPもDockerもKubernetesも数クリックでデプロイ! Nutanix & Calmによるインフラとアプリ展開の自動化
LAMPもDockerもKubernetesも数クリックでデプロイ! Nutanix & Calmによるインフラとアプリ展開の自動化LAMPもDockerもKubernetesも数クリックでデプロイ! Nutanix & Calmによるインフラとアプリ展開の自動化
LAMPもDockerもKubernetesも数クリックでデプロイ! Nutanix & Calmによるインフラとアプリ展開の自動化Satoshi Shimazaki
 
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道sakaik
 
Nutanix Community Edition 5.18 徹底解説
Nutanix Community Edition 5.18 徹底解説Nutanix Community Edition 5.18 徹底解説
Nutanix Community Edition 5.18 徹底解説Satoshi Shimazaki
 
Zabbix introduction ( RadixCloud Radix Technologies SA)
Zabbix introduction ( RadixCloud Radix Technologies SA)Zabbix introduction ( RadixCloud Radix Technologies SA)
Zabbix introduction ( RadixCloud Radix Technologies SA)Martin Markovski
 
[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the BasicsUlrich Krause
 
C34 Always On 可用性グループ 構築時のポイント by 小澤真之
C34 Always On 可用性グループ 構築時のポイント by 小澤真之C34 Always On 可用性グループ 構築時のポイント by 小澤真之
C34 Always On 可用性グループ 構築時のポイント by 小澤真之Insight Technology, Inc.
 
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コースJuniper Networks (日本)
 

La actualidad más candente (20)

VMware Cloud on AWS POC テストケース
VMware Cloud on AWS POC テストケースVMware Cloud on AWS POC テストケース
VMware Cloud on AWS POC テストケース
 
DB2の使い方 管理ツール編
DB2の使い方 管理ツール編DB2の使い方 管理ツール編
DB2の使い方 管理ツール編
 
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
 
JBoss EAP 설치 가이드
JBoss EAP 설치 가이드 JBoss EAP 설치 가이드
JBoss EAP 설치 가이드
 
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
 
CODT2021 CyberAgentでの サーバ選定手法の紹介
CODT2021 CyberAgentでの サーバ選定手法の紹介CODT2021 CyberAgentでの サーバ選定手法の紹介
CODT2021 CyberAgentでの サーバ選定手法の紹介
 
WebLogic Scripting Tool made Cool!
WebLogic Scripting Tool made Cool!WebLogic Scripting Tool made Cool!
WebLogic Scripting Tool made Cool!
 
OpenStack入門 2016/06/27
OpenStack入門 2016/06/27OpenStack入門 2016/06/27
OpenStack入門 2016/06/27
 
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
 
Oracle GoldenGate Cloud Serviceユーザーズガイド
Oracle GoldenGate Cloud ServiceユーザーズガイドOracle GoldenGate Cloud Serviceユーザーズガイド
Oracle GoldenGate Cloud Serviceユーザーズガイド
 
新しくなったAzure Stack HCIは以前と何が違うのか?もう一度ゼロからしっかり整理します!
新しくなったAzure Stack HCIは以前と何が違うのか?もう一度ゼロからしっかり整理します!新しくなったAzure Stack HCIは以前と何が違うのか?もう一度ゼロからしっかり整理します!
新しくなったAzure Stack HCIは以前と何が違うのか?もう一度ゼロからしっかり整理します!
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
 
LAMPもDockerもKubernetesも数クリックでデプロイ! Nutanix & Calmによるインフラとアプリ展開の自動化
LAMPもDockerもKubernetesも数クリックでデプロイ! Nutanix & Calmによるインフラとアプリ展開の自動化LAMPもDockerもKubernetesも数クリックでデプロイ! Nutanix & Calmによるインフラとアプリ展開の自動化
LAMPもDockerもKubernetesも数クリックでデプロイ! Nutanix & Calmによるインフラとアプリ展開の自動化
 
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道
MySQLに本格GIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道
 
Nutanix Community Edition 5.18 徹底解説
Nutanix Community Edition 5.18 徹底解説Nutanix Community Edition 5.18 徹底解説
Nutanix Community Edition 5.18 徹底解説
 
Zabbix introduction ( RadixCloud Radix Technologies SA)
Zabbix introduction ( RadixCloud Radix Technologies SA)Zabbix introduction ( RadixCloud Radix Technologies SA)
Zabbix introduction ( RadixCloud Radix Technologies SA)
 
[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics
 
C34 Always On 可用性グループ 構築時のポイント by 小澤真之
C34 Always On 可用性グループ 構築時のポイント by 小澤真之C34 Always On 可用性グループ 構築時のポイント by 小澤真之
C34 Always On 可用性グループ 構築時のポイント by 小澤真之
 
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
 

Destacado

[오픈소스컨설팅]J boss6 7_교육자료
[오픈소스컨설팅]J boss6 7_교육자료[오픈소스컨설팅]J boss6 7_교육자료
[오픈소스컨설팅]J boss6 7_교육자료Ji-Woong Choi
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWSJi-Woong Choi
 
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례Ji-Woong Choi
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기Ji-Woong Choi
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocationJi-Woong Choi
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)Ji-Woong Choi
 
The Archived Canadian Patent Competitive Intelligence (2012/5/1)
The Archived Canadian Patent Competitive Intelligence (2012/5/1)The Archived Canadian Patent Competitive Intelligence (2012/5/1)
The Archived Canadian Patent Competitive Intelligence (2012/5/1)Muchiu (Henry) Chang, PhD. Cantab
 
The archived Canadian US Patent Competitive Intelligence Database (2014/12/2)
The archived Canadian US Patent Competitive Intelligence Database (2014/12/2) The archived Canadian US Patent Competitive Intelligence Database (2014/12/2)
The archived Canadian US Patent Competitive Intelligence Database (2014/12/2) Muchiu (Henry) Chang, PhD. Cantab
 
The archived Canadian US Patent Competitive Intelligence Database (2013/12/10)
The archived Canadian US Patent Competitive Intelligence Database (2013/12/10) The archived Canadian US Patent Competitive Intelligence Database (2013/12/10)
The archived Canadian US Patent Competitive Intelligence Database (2013/12/10) Muchiu (Henry) Chang, PhD. Cantab
 
The archived Canadian US Patent Competitive Intelligence Database (2013/12/17)
The archived Canadian US Patent Competitive Intelligence Database (2013/12/17) The archived Canadian US Patent Competitive Intelligence Database (2013/12/17)
The archived Canadian US Patent Competitive Intelligence Database (2013/12/17) Muchiu (Henry) Chang, PhD. Cantab
 
编程的糖果
编程的糖果编程的糖果
编程的糖果pluschen
 
The archived Canadian US Patent Competitive Intelligence Database (2015/7/7)
The archived Canadian US Patent Competitive Intelligence Database (2015/7/7) The archived Canadian US Patent Competitive Intelligence Database (2015/7/7)
The archived Canadian US Patent Competitive Intelligence Database (2015/7/7) Muchiu (Henry) Chang, PhD. Cantab
 
The Archived Canadian Patent Competitive Intelligence (2013/8/6)
The Archived Canadian Patent Competitive Intelligence (2013/8/6)The Archived Canadian Patent Competitive Intelligence (2013/8/6)
The Archived Canadian Patent Competitive Intelligence (2013/8/6)Muchiu (Henry) Chang, PhD. Cantab
 
Presentatie syndicale visie ABVV
Presentatie syndicale visie ABVVPresentatie syndicale visie ABVV
Presentatie syndicale visie ABVVABVV
 
The archived Canadian Patent Competitive Intelligence (March 15, 2011)
The archived Canadian Patent Competitive Intelligence (March 15, 2011)The archived Canadian Patent Competitive Intelligence (March 15, 2011)
The archived Canadian Patent Competitive Intelligence (March 15, 2011)Muchiu (Henry) Chang, PhD. Cantab
 
The archived Canadian US Patent Competitive Intelligence Database (2016/5/24)
The archived Canadian US Patent Competitive Intelligence Database (2016/5/24) The archived Canadian US Patent Competitive Intelligence Database (2016/5/24)
The archived Canadian US Patent Competitive Intelligence Database (2016/5/24) Muchiu (Henry) Chang, PhD. Cantab
 
The Archived Canadian Patent Competitive Intelligence (June 28, 2011)
The Archived Canadian Patent Competitive Intelligence (June 28, 2011)The Archived Canadian Patent Competitive Intelligence (June 28, 2011)
The Archived Canadian Patent Competitive Intelligence (June 28, 2011)Muchiu (Henry) Chang, PhD. Cantab
 
中国儒家思想在知识经济时代的价值 The Value of Chinese Confucius' Philosophy in the Modern Kno...
中国儒家思想在知识经济时代的价值 The Value of Chinese Confucius' Philosophy in the Modern Kno...中国儒家思想在知识经济时代的价值 The Value of Chinese Confucius' Philosophy in the Modern Kno...
中国儒家思想在知识经济时代的价值 The Value of Chinese Confucius' Philosophy in the Modern Kno...Muchiu (Henry) Chang, PhD. Cantab
 
Industrieel beleid in Vlaanderen: Ingrid Lieten
Industrieel beleid in Vlaanderen: Ingrid LietenIndustrieel beleid in Vlaanderen: Ingrid Lieten
Industrieel beleid in Vlaanderen: Ingrid LietenABVV
 

Destacado (20)

[오픈소스컨설팅]J boss6 7_교육자료
[오픈소스컨설팅]J boss6 7_교육자료[오픈소스컨설팅]J boss6 7_교육자료
[오픈소스컨설팅]J boss6 7_교육자료
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS
 
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례
[오픈소스컨설팅]오픈소스 기반 솔루션 아키텍처 특징 및 사례
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocation
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
 
The Archived Canadian Patent Competitive Intelligence (2012/5/1)
The Archived Canadian Patent Competitive Intelligence (2012/5/1)The Archived Canadian Patent Competitive Intelligence (2012/5/1)
The Archived Canadian Patent Competitive Intelligence (2012/5/1)
 
The archived Canadian US Patent Competitive Intelligence Database (2014/12/2)
The archived Canadian US Patent Competitive Intelligence Database (2014/12/2) The archived Canadian US Patent Competitive Intelligence Database (2014/12/2)
The archived Canadian US Patent Competitive Intelligence Database (2014/12/2)
 
The archived Canadian US Patent Competitive Intelligence Database (2013/12/10)
The archived Canadian US Patent Competitive Intelligence Database (2013/12/10) The archived Canadian US Patent Competitive Intelligence Database (2013/12/10)
The archived Canadian US Patent Competitive Intelligence Database (2013/12/10)
 
The archived Canadian US Patent Competitive Intelligence Database (2013/12/17)
The archived Canadian US Patent Competitive Intelligence Database (2013/12/17) The archived Canadian US Patent Competitive Intelligence Database (2013/12/17)
The archived Canadian US Patent Competitive Intelligence Database (2013/12/17)
 
编程的糖果
编程的糖果编程的糖果
编程的糖果
 
The archived Canadian US Patent Competitive Intelligence Database (2015/7/7)
The archived Canadian US Patent Competitive Intelligence Database (2015/7/7) The archived Canadian US Patent Competitive Intelligence Database (2015/7/7)
The archived Canadian US Patent Competitive Intelligence Database (2015/7/7)
 
The Archived Canadian Patent Competitive Intelligence (2013/8/6)
The Archived Canadian Patent Competitive Intelligence (2013/8/6)The Archived Canadian Patent Competitive Intelligence (2013/8/6)
The Archived Canadian Patent Competitive Intelligence (2013/8/6)
 
Presentatie syndicale visie ABVV
Presentatie syndicale visie ABVVPresentatie syndicale visie ABVV
Presentatie syndicale visie ABVV
 
Muchiu Chang PhD dissertation of University of Cambridge
Muchiu Chang PhD dissertation of University of Cambridge Muchiu Chang PhD dissertation of University of Cambridge
Muchiu Chang PhD dissertation of University of Cambridge
 
The archived Canadian Patent Competitive Intelligence (March 15, 2011)
The archived Canadian Patent Competitive Intelligence (March 15, 2011)The archived Canadian Patent Competitive Intelligence (March 15, 2011)
The archived Canadian Patent Competitive Intelligence (March 15, 2011)
 
The archived Canadian US Patent Competitive Intelligence Database (2016/5/24)
The archived Canadian US Patent Competitive Intelligence Database (2016/5/24) The archived Canadian US Patent Competitive Intelligence Database (2016/5/24)
The archived Canadian US Patent Competitive Intelligence Database (2016/5/24)
 
The Archived Canadian Patent Competitive Intelligence (June 28, 2011)
The Archived Canadian Patent Competitive Intelligence (June 28, 2011)The Archived Canadian Patent Competitive Intelligence (June 28, 2011)
The Archived Canadian Patent Competitive Intelligence (June 28, 2011)
 
中国儒家思想在知识经济时代的价值 The Value of Chinese Confucius' Philosophy in the Modern Kno...
中国儒家思想在知识经济时代的价值 The Value of Chinese Confucius' Philosophy in the Modern Kno...中国儒家思想在知识经济时代的价值 The Value of Chinese Confucius' Philosophy in the Modern Kno...
中国儒家思想在知识经济时代的价值 The Value of Chinese Confucius' Philosophy in the Modern Kno...
 
Industrieel beleid in Vlaanderen: Ingrid Lieten
Industrieel beleid in Vlaanderen: Ingrid LietenIndustrieel beleid in Vlaanderen: Ingrid Lieten
Industrieel beleid in Vlaanderen: Ingrid Lieten
 

Similar a [오픈소스컨설팅]JBoss EAP 6 Deep Dive(Compare with WebLogic)

02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)Opennaru, inc.
 
JVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfJVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfkwbak
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure rockplace
 
JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop rockplace
 
개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty ServerJungWoon Lee
 
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web ServerJi-Woong Choi
 
[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdfHeeJung Chae
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호ETRIBE_STG
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-toJi-Woong Choi
 
[오픈소스컨설팅]스카우터엑스 소개
[오픈소스컨설팅]스카우터엑스 소개[오픈소스컨설팅]스카우터엑스 소개
[오픈소스컨설팅]스카우터엑스 소개Open Source Consulting
 
PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guideseungdon Choi
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래NAVER D2
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep DiveJi-Woong Choi
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Nanha Park
 
빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for AndroidSangkyoon Nam
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 

Similar a [오픈소스컨설팅]JBoss EAP 6 Deep Dive(Compare with WebLogic) (20)

02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)
 
JVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfJVM_트러블슈팅.pdf
JVM_트러블슈팅.pdf
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure
 
Locate Assembly
Locate AssemblyLocate Assembly
Locate Assembly
 
JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop
 
개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server
 
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
 
[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to
 
[오픈소스컨설팅]스카우터엑스 소개
[오픈소스컨설팅]스카우터엑스 소개[오픈소스컨설팅]스카우터엑스 소개
[오픈소스컨설팅]스카우터엑스 소개
 
PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guide
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
 
WIPI.ppt
WIPI.pptWIPI.ppt
WIPI.ppt
 
빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 

Más de Ji-Woong Choi

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기Ji-Woong Choi
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기Ji-Woong Choi
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육Ji-Woong Choi
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략Ji-Woong Choi
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기Ji-Woong Choi
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3Ji-Woong Choi
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12Ji-Woong Choi
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항Ji-Woong Choi
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기Ji-Woong Choi
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick GuideJi-Woong Choi
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-RegionJi-Woong Choi
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick GuideJi-Woong Choi
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편Ji-Woong Choi
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7Ji-Woong Choi
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning Ji-Woong Choi
 

Más de Ji-Woong Choi (20)

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
 

Último

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 

Último (6)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 

[오픈소스컨설팅]JBoss EAP 6 Deep Dive(Compare with WebLogic)

  • 1. JBoss Enterprise Application Platform 6 주식회사 오픈 소스 컨설팅
  • 2. JBoss Overview JavaEE 6 Full Certification, JDK6 JavaEE 5 Certification, JDK5, JDK6 JBoss EAP 6 JavaEE 5 Certification, JDK5 JBoss EAP 5.1.0 – 5.1.2 JBoss EAP 5.0.0 J2EE 1.4 Certification JBoss AS 4.2.0 – 4.2.3 JBoss AS 4.0.0 – 4.0.5 JBoss AS 3.2.0 2003 2004 2005 2006 2007 2008 2 - Internal Use Only - 2009 2010 2011 2012 2012
  • 3. Community vs Commercial JBoss Enterprise Middleware JBoss.org Community 3 - Internal Use Only -
  • 4. JBoss 제품화 과정 Productization Team Delivery Phase 1 JBoss.org 프로젝트 2 3 4 제품 요구 사항 정의 플랫폼 컴포넌트 구성 및 통합 플랫폼 테스팅, 인증, 문 서화 플랫폼 발표 (General Availability) Platform Candidate Release(s) Quality Assurance JBoss Enterprise Platform 제품 관리 JBoss 제품화 담당 엔지니어 4 - Internal Use Only - JBoss QA, 문서화팀, 인증된 파트너 5 JBoss Release Engineering
  • 5. JBoss 참고 자료 제품 문서 http://docs.redhat.com 5 - Internal Use Only -
  • 6. JBoss 설치 Red Hat 고객 포탈을 통한 다운로드 레드햇 서브스크립션을 구매한 고객을 위한 다운로드 사이트이며, 발급된 계정으로 로그인을 수행하 면 다운로드 받을 수 있습니다. 다운로드 URL: http://access.redhat.com 6 - Internal Use Only -
  • 7. JBoss 설치 JBoss 설치 형태 community : zip 압축 파일로 제공 EAP : zip, jar, platform binary, linux rpm 형태로 제공 Extracting the ZIP Download Binary File을 받아서 원하는 경로에 압축을 해제하는 설치 방법입니다. # unzip jboss-eap-6.1.1.zip RPM 설치 RHEL 6.x Plaform을 이용하여 설치이며 서브스크립트이 필요한 설치 방법입니다. # yum groupinstall jboss-eap6 GUI Installer Linux GUI 환경에서 설치하는 방법이며 설치 중 원하는 구성을 손쉽게 설정할 수 있는 설치 방법입니다. # java -jar jboss-eap-6.1.1-installer.jar Console Installation Linux GUI 환경이 안 되는 상황에서 터미널창을 이용하여 Text 방식으로 설치할 수 있는 설치 방법입니다. # java -jar jboss-eap-6.1.1-installer.jar –console 7 - Internal Use Only -
  • 8. JBoss 설치 JBoss unzip /opt/was/ 폴더로 해당 파일을 업로드 한 후 압축 해제 [jboss@server /opt/was] unzip jboss-eap-6.1.1.zip [jboss@server /opt/was] rm -f jboss-eap-6.1.1.zip ls –al 명령어를 통해 압축 해제 내용을 확인 [jboss@server /opt/was]# ls -al total 52 drwxr-xr-x. 13 jboss jboss 4096 Oct 24 07:54 . dr-xr-xr-x. 27 jboss jboss 4096 Jun 12 02:00 .. lrwxrwxrwx 1 jboss jboss 19 Oct 24 07:54 jboss-eap-6.1 8 - Internal Use Only -
  • 9. 지원 애플리케이션 지원되는 애플리케이션 웹 애플리케이션(.war) EJB 애플리케이션(.jar) Enterprise 애플리케이션(.ear) Resource Adapter (.rar) 웹서비스애플리케이션(.wsr) JBoss 서비스(.sar) 9 - Internal Use Only -
  • 10. 애플리케이션 디플로이 설정 애플리케이션 디플로이 수행 방법  애플리케이션 copy 후 파일 생성을 통한 디플로이 deployments 폴더에 a.war 라는 애플리케이션이 있을 경우 a.war.dodeploy 라는 파일을 생성하여 deploy 하는 방법  관리자 콘솔을 통한 디플로이 Web Console  CLI Tool을 이용한 디플로이 CLI Tool 10 - Internal Use Only -
  • 11. 디플로이 스캐너 애플리케이션 copy 후 파일 생성을 통한 디플로이  subsystem deployments-scanner service 특정 디렉토리에 애플리케이션패키지 및 deploy 지시 관련 파일을 참조하여 디플로이를 수행시켜주는 jboss subsystem ( 서버 default 옵션 )  설정 파일 : $SERVER_HOME/configuration/standalone.xml <subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1"> <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/> </subsystem>  검색 위치 : $SERVER_HOME/deployments 11 - Internal Use Only -
  • 12. 디플로이 상태 애플리케이션 copy 후 파일 생성을 통한 디플로이 (계속) 디플로이 요청 지시어 설정 dodeploy 설명 deploy scanner에게 deploy를 하게 요청하게 하는 지시어 디플로이 상태 확인 설정 설명 isdeploying 서버에 애플리케이션을 배포하는 상태 deployed 정상적으로 서버에 애플리케이션이 배포 완료 isundeploying 서버에서 애플리케이션 배포를 취소(삭제) 하고 있는 상태 undeployed 정상적으로 서버에서 애플리케이션 배포 취소(삭제) 완료 failed 서버에 애플리케이션 배포작업 중 에러가 발생한 상태 pending 서버에 애플리케이션 배포작업이 지연중인 상태 12 - Internal Use Only -
  • 13. WAR 디플로이 애플리케이션 copy 후 파일 생성을 통한 디플로이 (계속) 첨부된 test.war 파일을 standalone 서버의 deployments 폴더에 upload 시킵니다. [jboss@host1 /opt/was/servers/standalone_ha_11/deployments] ls –al total 20 -rw-r--r-- 1 jboss jboss 8870 Nov 1 10:15 README.txt -rw-r--r-- 4 jboss jboss 4096 Nov 2 12:39 test.war touch 명령을 통해 test.war.dodeploy 라는 이름의 파일을 생성합니다. [jboss@host1 /opt/was/servers/standalone_ha_11/deployments] touch test.war.dodeploy total 20 -rw-r--r-- 1 jboss jboss 8870 Nov 1 10:15 README.txt -rw-r--r-- 4 jboss jboss 4096 Nov 2 12:39 test.war -rw-rw-r-- 1 jboss jboss 8 Nov 2 12:39 test.war.dodeploy 13 - Internal Use Only -
  • 14. WAR 디플로이(계속) 애플리케이션 copy 후 파일 생성을 통한 디플로이 (계속) 잠시 후 test.war.dodeploy  test.war.deployed 로 변경된 것을 확인 [jboss@host1 /opt/was/servers/standalone_ha_11/deployments] touch test.war.dodeploy total 20 -rw-r--r-- 1 jboss jboss 8870 Nov 1 10:15 README.txt -rw-r--r-- 4 jboss jboss 4096 Nov 2 12:39 test.war -rw-rw-r-- 1 jboss jboss 8 Nov 2 12:39 test.war.deployed 서버 로그에서 애플리케이션 정상 디플로이 여부 확인 13:02:12,618 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 2) JBAS010281: Started default-host/test cache from web container 13:02:12,619 INFO [org.jboss.web] (ServerService Thread Pool -- 2) JBAS018210: Register web context: /test 13:02:12,719 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "test.war" (runtime-name : "test.war") 14 - Internal Use Only -
  • 15. 외부 디플로이 디렉토리 external directory 설정  external directory란   jboss deployments subsystem 에서 기본 scanner가 동작 폴더는 jboss.server.base.dir 하부의 deployments라는 폴더임 external directory 는 말 그대로 기본 deployments 디렉토리가 아닌 외부 확장 폴더를 scanner 영역에서 지정하여 애플리케이션 등록 여부를 확인 할 수 있게 지정하는 애플리 케이션 외부확장 검색 디렉토리 15 - Internal Use Only -
  • 16. 외부 디플로이 디렉토리(계속) external directory 설정  subsystem deployments-scanner service에 external directory 추가  설정 파일 : $SERVER_HOME/configuration/standalone.xml <subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1"> <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/> <deployment-scanner name="externalDeploy" path="/opt/was/app" scan-interval="5000"/> </subsystem>  검색 위치 : $SERVER_HOME/deployments 16 - Internal Use Only -
  • 17. CLI 활용 디플로이 JBoss Command Line Interface를 이용한 Deploy CLI 접속 가능 여부 확인 서버가 정상 기동시 아래와 같이 관리자 Port를 통해 CLI 관리자 Tool을 이용할 수 있다.  Command Line Interface Port : 10099 … 중략 16:23:12,284 INFO [org.jboss.as.remoting] (MSC service thread 1-1) JBAS017100: Listening on 192.168.0.172:10099 16:23:12,285 INFO [org.jboss.as.remoting] (MSC service thread 1-7) JBAS017100: Listening on 0.0.0.0:4547 16:23:12,572 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://192.168.0.172:10090/management 16:23:12,572 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://192.168.0.172:10090 16:23:12,572 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.1.1.GA (AS 7.3.0.Final-redhat-8) started in 2156ms - Started 168 of 284 services (115 services are passive or on-demand) 17 - Internal Use Only -
  • 18. CLI 접속 CLI 접속 방법 CLI 접속을 하기 위해서는 다음의 명령어를 통해 접속 $JBOSS_HOME/bin/jboss-cli.sh --controller=$SERVER_IP:10099 --connect [jboss@host1 /opt/was/servers/standalone_ha_11/bin]$ /opt/was/jboss-eap-6.1/bin/jboss-cli.sh -- controller=192.168.0.172:10099 --connect [standalone@192.168.0.172:10099 /] 18 - Internal Use Only -
  • 19. CLI 활용 디플로이 CLI을 통한 디플로이 CLI 접속이 완료가 된 이후에 Deploy 작업을 진행한다. 본 내용에서는 /opt/was/app/test.war 파일이 있는걸 가정하고 진행 [standalone@192.168.0.172:10099 /] deploy/was/app/test.war [standalone@192.168.0.172:10099 /] Deploy 요청이 정상적으로 수행이 되면 server 로그 부분에 결과가 표시 16:39:16,290 INFO [org.jboss.as.repository] (management-handler-thread - 5) JBAS014900: Content added at location /opt/was/servers/standalone_ha_11/data/content/d9/0e2d6e3bad2a5cb22edc747e1774200eecd14e/content 16:39:16,292 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015876: Starting deployment of “test.war" (runtime-name: “test.war") 16:39:16,324 INFO [org.jboss.web] (ServerService Thread Pool -- 57) JBAS018210: Register web context: 16:39:16,432 INFO [org.jboss.as.server] (management-handler-thread - 5) JBAS018559: Deployed “test.war" (runtime-name : “test.war") 19 - Internal Use Only -
  • 20. 관리 콘솔 확인 CLI을 통한 deploy (계속) 관리자 콘솔에서 CLI를 통해 deploy 된 Content의 현 상태를 확인 가능 20 - Internal Use Only -
  • 21. 애플리케이션 확인 CLI을 통한 deploy (계속) 실제 http service port 를 통해 deploy 된 Web application Content를 확인 21 - Internal Use Only -
  • 22. EAP6 Architecture JBoss Modules MSC Controller Threads Reflect Cache Repository DMR Service Controller Service Deployer VFS Jandex Subsystems 22 - Internal Use Only - JTA JMX JAX-RS Web Security SAR Remoting OSGi Naming Messaging JPA WebBeans EJB Data Source Connector Core Infrastructure
  • 23. Domain Structure Server #1 Host Controller Server #2 … Database Host #2 Domain Controller (Master Host Controllre) Server #3 Host #1 Host Controller Sever #4 … Host #3 Server #5 Host Controller Host #4 23 - Internal Use Only - Database
  • 24. JBoss 설치 JBoss의 주요 디렉토리 구조 Jboss-eap-6.x bin standalone.conf Standalone mode JVM parameters standalone.sh Standalone mode domain.sh Domain mode jboss-cli.sh Command Line Interface modules Static JBoss Module Definitions standalone configuration Standalone Configuration deployments File SystemDeployments logs Internal Data(includes Repository) data 24 - Internal Use Only -
  • 25. JBoss 설치 JBoss의 주요 디렉토리 구조 Jboss-eap-6.x domain configuration domain.xml Domain Wide Unified Configuration host.xml Host Controller Configuration servers Server “One” JVM Instance server-one logs data appclient configuration EE Application Client Configuration appclient.xml 25 - Internal Use Only -
  • 26. Management Interface Tools • Command Line Interface • Web Console • Products - JBoss ON Management APIs • JMX – JSR-77/160 • Java(DMR) • REST 26 - Internal Use Only -
  • 27. Container Services Relationship Everything is a Service Services have start and stop task customer.jar Remoting CustomerManagerEJB Services have dependencies service.jar Module class loading Similar to IDE projects or modules Foo DataSource ServiceManagerEJB JNDIName: dsFoo <module name=“com.lge”> <main-class name=“com.lge.Main”/> <resources> <resource-root path=“mymain.jar”/> </resources> <dependencies> <module name=“org.slf4j”/> <module name=“javax.api”/> <module name=“org.junit”/> </dependencies> </module> Web Server JNDIName: customerM JNDIName: serviceM manager.war ManagerServlet 27 - Internal Use Only -
  • 28. Modular EE Class Loading Implicit dependency WAR Deployment Module javax.api MANIFEST.MF javaee.api javax.servlet … Dependency: com.hana Class-Path: /foo/bar.jar Extension-List: myext EJB Sibling Deployment Module Explicit dependency com.hana external./foo/bar.jar extension.myext 28 - Internal Use Only -
  • 29. JBoss and Mobile [The HTML5/REST Architecture support] 29 - Internal Use Only -
  • 30. Class Loader – WebLogic 각 애플리케이션의 클래스 로더를 통해 클래스 로딩 BootClassLoader(native) ExtensionClassLoader SystemClassLoader J2EE Application Unit J2EE Application Unit Application Classloader EJB1 Call-by-Reference EJB2 Application Classloader WebApp Classloader EJB3 WebApp Classloader Call-by-Reference Call-by-Value JSP1 JSP1 JSP2 30 - Internal Use Only - JSP2
  • 31. Class Loader – JBoss EAP5 vs EAP6 모듈형 클래스로더 계층형 클래스로더  모듈 하나에 대해서 하나의 클래스로더  애플리케이션 마다 클래스로더를 만들수 있고, 클래스  각 모듈은 런타임으로 필요로 하는 모듈의 재로드 가능 의존성을 정의  복잡/ 클래스 검색이 늦음  중복 배치에 의한 오류 발생  계층형이 아닌 그래프 구조  클래스 공유 「클래스 패스」 불필요  문제를 회피하기 위한 구조가 더 복잡도를 높여 악순환  단순하여 초고속 31 - Internal Use Only -
  • 32. Thread Pooling 웹로직은 Multiplexer, JBoss은 개별 컴포넌트로 구성 WLS JBoss 32 - Internal Use Only -
  • 33. WLS vs JBoss 세션 복제의 차이 JBoss WLS - Internal Use Only -
  • 34. 웹로직 클러스터링– 최초 연결 WLS Tracking Cookie Format: sessionid!primary_JVMID!secondary_JVMID 3 M1 인스턴스가 이 세션에 대한 primary로 지정. 복제관리자는 M2를 secondary로 지정하고 추 적 쿠키 정보를 갱신 M1 2 1 라운드 로빈 알고리즘 사용하여 live 인스턴스 찾음 클라이언트 요청 전송 A M2 Client A’ Proxy M3 5 최종 추적 쿠키 Cookie(Primary=M1;Seco ndary=M2) M4 - Internal Use Only - 4 복제 관리자는 M2로 해당 세션을 복제
  • 35. 웹로직 클러스터링 – Failover 3 연결 문제 발생 (연결에러, 타임아웃) 7 복제 관리자는 M1에 있는 세션을 제거하도록 통지 M1 2 1 클라이언트 요청 추적 쿠키: Cookie(Primary=M1;Sec ondary=M2) A 인스턴스 M1 정상, 요청을 전달함 M2 Client 8 M2가 이 세션에 대한 primary로 전환. 복제관리 자는 M3를 secondary로 지정하고 추적 쿠키 정보 를 갱신 A’ Proxy M3 4 최종 추적 쿠키 Cookie(Primary=M2;Seco ndary=M3) 5 6 A’ Proxy는 장애를 감지하고, secondary 인스턴스 M2 로 접속을 시도 복제 관리자는 해당 세션 을 M3로 복제시킴 M4 - Internal Use Only -
  • 36. JBoss Clustering Architecture JBoss AS5, AS6, EAP5 (EAP) App App JBoss Cache JGroups JBoss Cache App JGroups JBoss Cache JBoss JBoss App JBoss App JBoss AS7, EAP6 App Embedded Infinispan JBoss JGroups Embedded Infinispan JBoss - Internal Use Only - JGroups Embedded Infinispan JBoss
  • 37. JBoss 클러스터링 – 최초 연결(All to All) JBoss Tracking Cookie Format: jsessionid__JvmRoute1) 3 M1 M1 인스턴스가 이 세션을 저장 2 1 플러그인 알고리즘 사 용하여 live 인스턴스 찾음 클라이언트 요청 전송 A M2 Client 웹 서버 플러그인 4 A’ Jgroups를 통해 세션이 모 든 서버에 복제 M3 5 A’ 최종 추적 쿠키 Cookie(sessionid_M1) M4 1) jvmRoute: 서버의 설정 값으로써 웹 서버 플러그인과 인스턴스를 맵핑시킴 A’ CAUTION: 서버당 100M 세션이 있을 경우 M1~M4서버 총 400M의 저장공간 필요! - Internal Use Only -
  • 38. JBoss 클러스터링 – Failover(All to All) 3 연결 문제 발생 (연결에러, 타임아웃) M1 2 1 클라이언트 요청 전송 Cookie(sessionid_M1) A 인스턴스 M1 에게 요청을 전달함 M2 웹 서버 플러그인 Client 5 A’ M3 5 최종 추적 쿠키 Cookie(sessionid_M2) A’ 4 플러그인는 장애를 감지 하고, 알고리즘에 의해 다른 서버 연결을 시도 M4 A’ - Internal Use Only - M2의 jvmRoute값을 이용 하여 추적 쿠키의 값을 M2 인스턴스로 갱신
  • 39. 웹 서버 커넥터(WEB/WAS 구간) Apache Tomcat Connector Tomcat, JBoss 와 연동을 하기 위한 웹 서버 플러그인 모듈 ( Apache 재단 ) 지원 웹서버  Apache  IIS  Netscape/SunOne Web Server AJPv13 프로토콜 사용  http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html 다운로드  http://tomcat.apache.org/connectors-doc/ 39 - Internal Use Only -
  • 40. 웹 서버 커넥터(WEB/WAS 구간) Apache Tomcat Connector : mod_jk, mod_proxy, mod_cluster 3가지 아파치 모듈 연결 방식  mod_jk – 가장 오래되고 안정적  mod_proxy – Apache 2.2 이상에서 가능 mod_proxy_ajp, mod_proxy_balancer등이 필요  mod_cluster – 새로운 형태의 모듈 multicast 방식으로 자동 발견 기능 제공 40 - Internal Use Only -
  • 41. JBoss Database 연동 설정 JDBC 드라이버 등록 방법 JDBC 드라이버는 다음의 형태를 통해 사용할 수 있습니다. 설정 설명 modules JDBC 드라이버를 jboss의 module.xml 형태의 모듈화하여 사용하는 방법 library Jar 파일의 형식의 deploy를 통한 모듈 등록 41 - Internal Use Only -
  • 42. JBoss Database 연동 설정 JDBC 드라이버 등록 설정 $JBOSS_HOME/modules.ext 디렉토리에 하위 디렉토리를 만들고 jar 파일을 복사한 후 module.xml 파일을 작성합니다. 42 - Internal Use Only -
  • 43. JBoss Database 연동 설정 JDBC 드라이버 모듈화 설정 (계속) module.xml <module xmlns="urn:jboss:module:1.1" name="com.mysql"> <properties> <property name="jboss.api" value="unsupported"/> </properties> <resources> <resource-root path="mysql-connector-java-commercial-5.1.26-bin.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module> 43 - Internal Use Only -
  • 44. JBoss Database 연동 설정 JBoss 인스턴스 설정 파일에 해당 JDBC 모듈 추가 JBoss Server 인스턴스의 설정 파일(standalone-ha.xml)에 jdbc 드라이버를 등록 <datasources> <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"> …중략… </datasource> <drivers> <driver name="h2" module="com.h2database.h2"> <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> </driver> <driver name="mysql" module="com.mysql"> <driver-class>com.mysql.jdbc.Driver</driver-class> </driver> </drivers> </datasources>  module.xml 의 name 과 driver의 module 부분은 동일하여야 함. (module.xml) <module xmlns="urn:jboss:module:1.1" name="com.mysql"> 44 - Internal Use Only -
  • 45. JBoss Database 연동 설정 Datasource 설정 standalone Instance 에서 사용되는 configuration 파일(standalone-ha.xml)에 Datasource 부분을 설정합니다. <datasources> <datasource jndi-name="java:jboss/datasources/MysqlDS" pool-name="MysqlDS" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://localhost:3306/mydb</connection-url> <driver>com.mysql</driver> <security> <user-name>dbuser</user-name> <password>dbpasswd</password> </security> <validation> <valid-connection-checker classname="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"> </valid-connection-checker> </validation> </datasource> </datasources> EAP 5.x 대의 *-ds.xml 파일은 가급적 사용을 하지 않도록 합니다. (Console, CLI 에서 접근 할 수 없음.) 45 - Internal Use Only -
  • 46. JMS Queue Potential Receiver 1 Sender 메시지 1 Potential Receiver 2 메시지 2 Queue 메시지1 메시지2 - Point-to-Point 모델에서는 Sender에 의해 발생된 메시지가 Queue라는 채널에 전달되고, 이 메시지는 Queue에 의해 자동으로 Receiver에 전달 - Publisher/Subscriber 모델과 다른 점은 Queue에 전달된 하나의 메시지는 오직 하나의 Receiver에만 전달되 고 다수의 Receiver 에 전달되지 않음 - Sender에 의해 Queue에 전달된 메시지1은 Queue에 의해 Receiver1에 전달되고, Sender에 의해 전달된 메 시지2는 Queue에 의해 Receiver2에 전달 - Publisher/Subscriber 모델처럼 동일한 메시지가 서로 다른 Receiver에 전달되지 않음 - Internal Use Only -
  • 47. JMS Topic Subscriber Publisher 메시지 1 메시지 2 Subscriber 메시지 1 메시지 2 Topic 메시지1 메시지2 - Publisher/Subscriber 모델에서는 Publisher가 하나의 메시지를 다수의 Subscriber(Consumer)에게 Topic 이라는 채널을 통하여 전달 - 모든 Subscriber는 Publisher가 Topic에 보낸 하나의 메시지의 사본을 전달 받게 되며, 이와 같은 메시 지 전달은 Topic에 의해 자동으로 Subscriber에 전달 - Publisher 에 의해 전달된 메시지1은 동시에 Subscriber1, Subscriber2 에 전달되며, Publisher에 의해 전달된 2번째 메시지인 메시지2 도 Subscriber1, Subscriber2에 전달 - Internal Use Only -
  • 48. JBoss JMS 핵심 기능 JMS 1.1 스펙 준수 및 JBoss AS의 런타임 라이브러리로 사용. 성능, 신뢰성, 안정성 및 낮은 응답시간 등에 초점을 둠. SOA의 초기 단계인 JBoss ESB의 핵심 모듈로서 사용 Netty 기반의 고성능 자바 엔진(LDAP, DNS, Keberos, etc) Client-side Delegates ? Connection Sender Session JBoss Netty Core Producer Server-side aspects Consumer Client-side aspects Server-side endpoints - Internal Use Only - Receiver
  • 49. JBoss Netty – 고성능 네트워크 클라이언트/서버 프레임워크 이벤트 기반 비동기 네트워크 애플리케이션 프레임워크 Interceptor Chain 패턴 • 손쉽게 다단계 State machine 구현 • 암복호화 + 전문 해석 + 스레드 풀링 + 비즈니스 로직 • 조립 가능한 컴포넌트 다수 제공 과부하 및 DoS 방어 메커니즘 Old · New I/O 모두 지원 NIO 구현·벤더별 최적화 - Internal Use Only -
  • 50. 부가 기능 및 성능 SpecJMS2007 Bench Mark - 초당 820만건 데이터 처리 HTTP를 이용한 단순한 RESTful 인터페이스 제공 AMQP – 향후 AMQP 프로토콜 지원 예정 STOMP(Streaming Text Oriented Messaging Protocol) STOMP 메시지 브로커를 통해 다양한 이기종 언어 간의 메시지 통신 기능 지원 XMPP : XML 기반 인터넷 통신을 위한 오픈 프로토콜 비동기 웹 지원 (Ajax/comet/bayeaux) http://hornetq.blogspot.kr/2011/07/82-million-messages-second-with-specjms.html - Internal Use Only -
  • 51. JMS Queue 생성 Naming이 java:jboss/exported/ 로 시작되지 않으면 글로벌 JNDI에 바인딩되지 않음 - Internal Use Only -
  • 52. JMS 사용자 생성 JMS 접근 사용자 생성 C:Javajboss-eap-6.1bin>add-user.bat JAVA_HOME is not set. Unexpected results may occur. Set JAVA_HOME to the directory of your local JDK to avoid this message. What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a): b Enter the details of the new user to add. Realm (ApplicationRealm) : Username (testuser) : ienvyou Password : !test123 Re-enter Password : !test123 What roles do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]: testrole About to add user 'ienvyou' for realm 'ApplicationRealm' Is this correct yes/no? yes Added user 'ienvyou' to file 'C:Javajboss-eap-6.1standaloneconfigurationapplication-users.properties' Added user 'ienvyou' to file 'C:Javajboss-eap-6.1domainconfigurationapplication-users.properties' Added user 'ienvyou' with roles testrole to file 'C:Javajboss-eap6.1standaloneconfigurationapplication-roles.properties' Added user 'ienvyou' with roles testrole to file 'C:Javajboss-eap-6.1domainconfigurationapplicationroles.properties' Is this new user going to be used for one AS process to connect to another AS process? e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls. yes/no? - Internal Use Only -
  • 53. 송수신 권한 설정 standalone-full.xml<before> <security-settings> <security-setting match="#"> <permission type="send" roles="guest"/> <permission type="consume" roles="guest"/> <permission type="createNonDurableQueue" roles="guest"/> <permission type="deleteNonDurableQueue" roles="guest"/> </security-setting> </security-settings> standalone-full.xml<after> <security-settings> <security-setting match="#"> <permission type="send" roles="guest testrole"/> <permission type="consume" roles="guest testrole"/> <permission type="createNonDurableQueue" roles="guest"/> <permission type="deleteNonDurableQueue" roles="guest"/> </security-setting> </security-settings> - Internal Use Only -
  • 54. 애플리케이션을 통한 테스트 try { Hashtable<String, String> properties = new Hashtable<String, String>(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); properties.put(Context.PROVIDER_URL, "remote://localhost:4447"); properties.put(Context.SECURITY_PRINCIPAL, "admin"); properties.put(Context.SECURITY_CREDENTIALS, "!test123"); Context ctx = new InitialContext(properties); ConnectionFactory cf = (ConnectionFactory) ic.lookup("jms/RemoteConnectionFactory"); Queue queue = (Queue) ic.lookup(destinationName); System.out.println("Queue " + destinationName + " exists"); Connection connection = cf.createConnection("ienvyou", "!test123"); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer sender = session.createProducer(queue); sender.setDeliveryMode(DeliveryMode.NON_PERSISTENT); TextMessage message = session.createTextMessage("Hello!"); sender.send(message); System.out.println("The message was successfully sent to the " + queue.getQueueName() + " queue"); connection.start(); } catch(Exception e) { } closeConnection(connection); - Internal Use Only -
  • 55. Before JMX Before JMX 벤더 고유의 관리 콘솔을 제공 일반적으로 웹 브라우저를 통하여 접근하도록 설계 API를 제공해주지 않을 경우 해당 관리 객체에 접근하기 어려움 Firewall hardware Management console Server Management console Web server software Management console Server Application Management console DB server software Management console - Internal Use Only -
  • 56. With JMX(Java Management Extension) JMX를 이용할 경우 소프트웨어 관리 포인트를 한 곳으로 집중할 수 있다는 장점이 발생.(JSR-255) • 모든 리소스는 MBean을 사용하여 관리. • JMX Agent (or group of agents)상의 모든 MBean은 하나의 관리 콘솔에서 모두 처리 Firewall hardware Server JMX Agent Web server software Server Application DB server software Adapter Management console = JMX MBean http://www.jcp.org/en/jsr/detail?id=255 JSR 255: JavaTM Management Extensions (JMXTM) Specification, version 2.0 - Internal Use Only -
  • 57. WebLogic JMX 적용 예 DomainRuntimeMBean을 통한 현재 JVM 및 JMS 상태 정보 JMS 관련 Queue 설정 정보 확인 -----------------------------------------------------------------------------------------------------------------com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean ServerRuntimes -----------------------------------------------------------------------------------------------------------------Server Name Server State Server JVMRuntime Name Server JVMRuntime HeapSizeCurrent Server JVMRuntime HeapFreeCurrent Server JMSRuntime JMSServers Name Server JMSRuntime JMSServers Destinations Name Server JMSRuntime JMSServers Destinations ConsumersCurrentCount Server JMSRuntime JMSServers Destinations ConsumersHighCount Server JMSRuntime JMSServers Destinations ConsumersTotalCount Server JMSRuntime JMSServers Destinations MessagesCurrentCount Server JMSRuntime JMSServers Destinations MessagesHighCount Server JMSRuntime JMSServers Destinations MessagesPendingCount Server JMSRuntime JMSServers Destinations MessagesReceivedCount -----------------------------------------------------------------------------------------------------------------com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean DomainConfiguration -----------------------------------------------------------------------------------------------------------------Domain JMSSystemResources JMSResource Name Domain JMSSystemResources JMSResource Queues Name Domain JMSSystemResources JMSResource Queues JNDIName Domain JMSSystemResources JMSResource DistributedQueues Name Domain JMSSystemResources JMSResource DistributedQueues JNDIName Domain JMSSystemResources JMSResource DistributedQueues DistributedQueueMembers Name - Internal Use Only -
  • 58. JMX Object Name 수집 C:Javajboss-eap-6.1bin> standalone.bat -c standalone-full C:Javajboss-eap-6.1bin> jconsole.bat - Internal Use Only -
  • 59. JVM Heap ObjectName - Internal Use Only -
  • 61. JMX Code Example import import import import import import import import java.util.HashMap; javax.management.MBeanServerConnection; javax.management.openmbean.CompositeDataSupport; javax.management.openmbean.CompositeType; javax.management.remote.JMXConnector; javax.management.remote.JMXConnectorFactory; javax.management.remote.JMXServiceURL; javax.management.*; public class HeapAccess { public static void main(String[] args) throws Exception { String host = "127.0.0.1"; // Your JBoss Bind Address default is localhost int port = 9999; // JBoss remoting port String urlString ="service:jmx:remoting-jmx://" + host + ":" + port; System.out.println(" nnt**** urlString: "+urlString); HashMap environment = new HashMap(); String[] credentials = new String[] {"test", "!test123"}; environment.put (JMXConnector.CREDENTIALS, credentials); JMXServiceURL serviceURL = new JMXServiceURL(urlString); JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceURL, environment); MBeanServerConnection connection = jmxConnector.getMBeanServerConnection(); ObjectName objectName=new ObjectName("java.lang:type=Memory"); CompositeDataSupport heapMemoryUsage =(CompositeDataSupport)connection.getAttribute(objectName, "HeapMemoryUsage"); System.out.println(" System.out.println(" System.out.println(" System.out.println(" committed init max used = = = = " " " " + + + + jmxConnector.close(); } } - Internal Use Only - heapMemoryUsage.get("committed")); heapMemoryUsage.get("init")); heapMemoryUsage.get("max")); heapMemoryUsage.get("used"));