JBOSS架构了解

原创 2007年09月27日 18:00:00

Jboss 4.X

1 JBOSS架构简介

1.1 内核Microkernel

动态载入服务

管理服务的生命周期

对外提供naminglookup

调用总线(invocation bus

服务之间的解耦

1.2 基于JMX的架构

核心是Mbean Server,可以把各种的服务做成Mbean接到MbeanServer上。

l         类似于设计模式中的mediator

l         Mbean Server提供namingregisterlookup

l         各个MBean不会直接访问,通过name访问。

l         各个Mbean通过metadata曝露其接口能力。

l         DETYPED

l         类似java的反射。

 

优点:?(讨论)

 

缺点:?(讨论)

 

外部如何访问JBOSS?通过Invoker。(Mbean too.

 

Standard Mbean

Dynamic Mbean

Model MBean

 

2 JBOSS deploymentboot

主要是两个JMX ServiceDeploymentScanner?)和MainDeployer

DeploymentScanner扫描发布目录,如果有新/变化的东西,就提交给MainDeployer处理。

MainDeployer负责调度,按照顺序询问各个subDeployer,直到有一个subDeployer可以处理。

subDeployer包括:SARDeployerEARDeployerEJBDeployer等等。。。用户也可以直接写。

 

启动顺序:

jboss-service.xml

创建MbeanServer JbossMX。包含5core service

org.jboss.system.server.ServerInfo

org.jboss.system.ServiceController

org.jboss.deployment.MainDeployer

org.jboss.deployment.SARDeployer

org.jboss.deployment.JARDeployer

其它的Service采用sar的格式放到发布目录,被DeploymentScanner发现,被SARDeployer发布,被ServiceController实例化。

3 JBOSS的类装载

jvm的类装载机制。Parent delegate

CLASSCASTEXCEPTIONjvm在什么情况下才认为两个class是一样的?

ILLEGALACCESSEXCEPTION:两个不同classloader的类实例,能够互相访问对方的方法?

LinkageError

 

JBOSS的类装载机制:

实现类的共享。为什么需要共享?

实现类的独立。为什么需要独立?

 

如何实现?

UCLUnifiledLoaderRepositoryHierarchicalLoaderRepository

 

UCL:集成javaURLClassLoader,一个deployment对应一个ucl

UnifiledLoaderRepositoryclass默认存储区域。

HierarchicalLoaderRepository:有层次关系(树状)的class存储区域。

 

 

share

 

Isolate namespace

 

 

 

Java2ParentDelegation

1 Clinet SideServer Side

Remote(例如WebService/EJB):stubskeleton

 

Client side

Client自动下载stub和其它需要的东西(缓存/序列化)。

容易发布和部署。

无需编译(只需要接口类)。

 

 

Dynamic Proxy动态代理:

Client的一个请求先到动态代理。

一个请求被动态代理转成一个InvacationInvacationContext

Invacation被各个Client Interceptor进行处理。

JBOSS所有的特性(例如:TX/Security/EJB/群集等等)都是通过Interceptor实现的。

最后被传给服务端,调用JMX服务。

DETYPED/INDEPENDENT

通过JAVA反射(java.lang.reflect.Proxy)实现

 

客户端和服务端:通过Invoker(也是一个JMX Service)。

 

Server side

Invokerinvocation转给microkernel

Microkernelinvocation分别让一个个Server Interceptor处理。

Chain of Responsibility责任链。

DETYPED/INDEPENDENT

 

可以自己写InterceptorClient/Server)。

 

Command模式?

 

EJB3

2 JBoss Cache

1、  Cache采用树状结构的存储方式。

每个节点有:path/value

2、  非集中方式的。

3、  支持分布式、事务、锁。

支持分布式,基于jgroup

支持tx

lck,实际上是本地的lock,在复制请求时进行检查。

4、  支持持久化。

5、  不仅仅只能在Jboss上使用,还可以嵌入到其它的App Server(例如Weblogic/WAS

6、  Jboss群集中的session复制,就是用Jboss Cache实现的。

7、  两种实现:TreeCacheTreeCacheAOP

8、  TreeCacheplain cache

保存的是Reference,复制采用值方式:不支持共享地址。

9、  TreeCacheAOPPOJO cache

需要JBossAOP runtime的支持(支持compile-timeload-time)。

可以实现Fine-grained(细粒度)的更新(基于filed

支持共享地址。

如何知道一个POJO的结构?(通过jboss-aop.xml配置,或者使用annotation标注)

其它的cache产品:memcache

3 Cluster

问题:为什么要使用群集?(讨论)

Load Balancing   à   scalability

Fault Tolerance   ->   HA

1+1=2 ???

state replication

cache

SNA

 

两种方式配置:

central   à   NeetBoot

separately   à   install & configure each node

 

deployment

各个节点单独部署

farm service,放到一个节点的farm目录(在本机启动之后),自动更新到群集中的其它节点。

 

结构:

群集不是事先定义好的。

通过名称(Partition Name)来识别。

一个群集节点启动时,通过Partition Name来检查(范围?)已经存在的群集,并加入。

其它节点被notified

%JBOSS_HOME%/bin/run.bat -Djboss.partition.name=Chris

 

 

客户端如何配合实现群集?

java客户端:Client proxy

HTTP客户端:网络硬件(四层交换,F4/软件(AJP

 

服务端如何配置实现群集?replicate复制

 

Session复制的粒度:SESSION/ATTRIBUTE/FIELD,根据实际情况分析。(JBOSSCache

一般使用ATTRIBUTE 

JBOSS架構分析

  • 2011年11月25日 09:14
  • 1.06MB
  • 下载

JBoss架构分析

  • 2012年04月25日 08:43
  • 1.04MB
  • 下载

JBoss架构分析

研究项目: JBoss架构分析    Jenny Liu    School of Information Technologies    University of Sydney ...

JBoss架构分析.doc

  • 2007年10月07日 10:05
  • 9MB
  • 下载

JBoss JMX实现架构

2.2 JBoss JMX实现架构 2.2.1 JBoss类装载器架构 JBoss 3.x实现了一种新的类装载架构,即允许类跨部署单元使用.在JBoss 2.x中,很难实现MBean服务和动态部署...

JBoss JMX实现架构

  • 2010年03月19日 10:01
  • 1.29MB
  • 下载

JBoss架构分析.doc.003

  • 2007年10月07日 10:12
  • 7.4MB
  • 下载

JBoss平台下JTA与JMS实验软件架构8

1 JTA 简介: Java Transaction API,JTA Transaction 是指由J2EE Transaction manager 去管理的 事务。通过调用UserTransact...

Haproxy+Keepalived+Jboss集群实施架构一例

一、基础环境 两台IBM x3650M3,操作系统CentOS5.9 x64 ,连接一台IBM DS3400存储,系统底层采用GFS文件系统实现文件共享,数据库是另一套独立的oracle r...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JBOSS架构了解
举报原因:
原因补充:

(最多只允许输入30个字)