Jmin IOC中文资料

附件
JmIoc.zip(1.9 MB)
附件
demo.zip(4.5 K)
 
切换到幻灯片模式

Jmin IOC 是一个基于IOC技术的快速应用开发框架

1: 什么是IOC
IoC就是Inversion of Control,控制反转。在开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转,我们很容易把IOC容器看作是一个稍微大一点的工厂对象,它可以帮助我们实现:创建和维护Bean实例,管理bean生命周期,实施依赖注入,bean关系维护等。我们称这些受管的Bean为POJO(Plain Old Java Objects),主要区别于企业Bean

2: 元素
由于POJO实例的多样性,容器是依据什么来管理和控制它们呢?针对某个已存在的POJO,在容器内部是应该存在一些具有描述性的东西,来影响容器在当前POJO的行为。一个POJO可以从多个角度描述它。如:构造方式,属性描述,方法调用描述等。从统一的观点来说,它们都可以看作是POJO的描述对象,在我们的framework中,这些描述性的对象被称为POJO描述元素。那么这些元素对象是怎么进入了容器中?一般的IOC容器都提供一些方式将它们导入,例如:注册。在框架中,定义了一个基本的元素接口:BeanElement,其他描述元素都是从此扩展而来,为了方便操作,框架提供一个辅助类:BeanElementFactory去帮助开发者创建这些描述性元素.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
*Copyright (c) jmin Organization. All rights reserved.
 */
package org.jmin.j2ee.ioc;
 
import java.io.Serializable;
 
/**
 * A super interface to describe one part in a bean,which need be 
 * registered in IOC container as a bean element.Container action on
 * beans depend on description elements of beans.
 * 
 * @author Chris Liao
 * @version 1.0
 */
 
public interface BeanElement extends Serializable{
 
}


下面简单介绍一些POJO描述元素
Singleton: 被描述的POJO实例是否为单实例,可以取值:true 或 false
InitializationMethod:初始化方法的描述元素,当容器完成构造后,将调用初始化方法
DestroyMethod: 销毁方法,当应用结束时,容器自动调用POJO的销毁方法
Construction: POJO的构造方式描述元素。目前支持三种构造方式:
1:普通反射构造,容器将直接在类的构造器上构造实例.
2:工厂方法构造,通过类的Static方法构造实例
3:工厂Bean构造,容器通过调用另一个POJO的实例的指定方法来构造
Property: POJO的属性描述对象,会携带参数。关联属性注入
Invocation: POJO的方法调用描述对象,会携带参数。关联方法调用注入
Interception: POJO方法调用拦截描述对象,属于Around类别

3:参数
容器有一个很好的优点:依赖注入。当容器在构造一个POJO实例时,可以对它实施注入:将一些有用的参数值放进对象内部,以完成对象准备动作,使其一旦被外部获取即可使用。那么这参数值是从哪里来的呢?很容易让人想到注册,没错,它们是从外部导入容器内部的。当使用容器注册POJO描述元素时,并不是简单的动作,某些元素是可以携带一些有用的参数值,从而可以被容器用到。由于IOC环境因素,导致这些参数值是有别于普通方法参数。如何表达这些参数值,且能让容器理解呢?描述在该容器中发挥积极重要的作用,其实对象性语言本身就是利用描述的特性。在该framework中,定义了一个用来被容器所能理解的参数值对象:IocValue,它是一个接口,在容器下已经存在一些实现子类,很多情况下它们可以作为参数而存在的,由于值的类别不同,导致参数也是不一样的。同样为了方便, 框架提供一个辅类:ParameterFactory, 被用来创建拥有不同类别值的参数对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
*Copyright (c) jmin Organization. All rights reserved.
 */
package org.jmin.j2ee.ioc;
 
import java.io.Serializable;
 
/**
 * IOC value type object.
 *
 * @author Chris Liao
 * @version 1.0
 */
 
public interface IocValue extends Serializable {
 
  /**
   * Return description object for ioc value
   */
  public Object getDescription();
  
  /**
   * Return object value for this ioc value.
   */
  public Object toObjectValue();
 
}


下面简单介绍一些参数值类别。
1
2
3
4
5
6
7
8
9
10
11
BooleanValue	    
ByteValue	                    
CharValue	    
ShortValue	   
IntValue	                    
LongValue	   
FloatValue	    
DoubleValue	    
ClassValue	 
ReferenceValue	   
InstanceValue	

4: API介绍

容器方法API

元素工厂API

参数工厂API

拦截器


5:元素详解
在直接使用方式下,开发者需要亲自创建容器和注册元素,如属性,构造等,当然准备好这些基本动作后,并不意味开发的完成.在获取对象的实例前,应该需要将对POJO描述的相关元素注册到容器中,相关的元素已经在前面所讲述,为了更好理解该框架下的描述元素,下面逐一讲述它们.

5.1 对象构造
在前面已经提到构造描述元素(Construction),它将引导容器如何去创建一个POJO实例。在该框架中提供了三种方式:普通构造;工厂方法构造;工厂Bean构造,下面分别讲述它们。

A: 普通构造
容器将直接使用Class来构造一个对象实例,通常在工程应用时候,我们可以使用这样的代码去创建我们期盼的实例:Object instance = Class.newInstance(); 当然容器构造一个Class的对象时,不是一个如此简单的动作。很多时候我们在编写一个新的Class时候,会编写Class的构造方法,它们被用来在构造对象时候携带一些有用的参数信息。携带参数值的构造方式是比比皆是。在该Framework中,只要合理描述这些参数既可,容器将在构造的时候,它们被自动注入对象实例。那么如果注册这种构造方式呢? 框架是允许显式与隐式两种方式去注册构造方式。

1:通过构造描述对象
1
2
3
4
Construction construction = BeanElementFactory.createConstruction(new Parameter[]{parameter1,parameter2......});
 
//再通过如下类似的方式注册
IocContainer.register(Class beanClass, Construction constructor); 


2:直接调用容器方法注册构造参数
1
IocContainer.register(Class beanClass, Parameter[] constructParameters);


B: 工厂方法构造
在该种构造方式下,容器将调用当前POJO Class的自身一个静态方法去完成对象的构造,当然这个方法可以是带有参数的,而这些参数同上被称为构造参数。在描述方法参数时,请注意参数的类别,构造的参数值应该与之相匹配。创建该方式的构造元素时,可使用如下类似代码进行该元素对象的创建
1
2
3
4
Construction construction = BeanElementFactory.createConstruction(String factoryMethodName,Parameter[] parameters);
 
//注册如普通构造
...........


C: 工厂Bean
在该构造方式下,容器将调用另一个已经存在的POJO的方法来完成构造动作,这个被容器调用的POJO被称为工厂Bean.既然是方法调用,那么是有可能使用一些参数值。使用如下代码去构造该方式下的元素。
1
2
3
4
Construction construction = BeanElementFactory.createConstruction(String factoryBeanRefID,String factoryMethodName,Parameter[] parameters);
 
//注册如普通构造
...........


5.2 对象单态
在一些应用的时候,针对某个Class,可能只需要它的一个实例,又某些情况下却只需要多个不同的实例,框架提供了一个是否为单态描述元素:Singleton
1
Singleton singleton = BeanElementFactory.CreateSingleton(boolean singleton);


5.3初始化方法
传统的开发时,当完成一个对象的创建后,还有可能在该对象上执行一些初始化动作,同样该容器框架可以帮我们完成对实例的初始化
1
InitializationMethod method = BeanElementFactory.createInitMethodName(String methodname);


5.4销毁方法
当我们不在使用某个对象时,希望存在某种自动机制来完成某些结束动作,比如进行资源回收
1
DestroyMethodmethod = BeanElementFactory.createDestroyMethodName(String methodname);


5.5对象属性
从静态角度描述一个对象,我们通常可以会使用类似语句:它有某某特性等,在对象语言中,我们可以称这些某某特性为对象属性(个人理解:对象语言本身就是利用抽象原理对对象进行描述,我们框架也是如此哦^-^)。为了对象描述的完整性,在IOC环境下,属性的描述同样是允许的,只不过该描述方式与直接的对象属性描述是有差异的。为了容器的理解性,框架中定义了应用于IOC下的属性对象:Property. 在对象世界里,通常会使用属性值来描述属性。为了描述统一性,在框架中,我们称这个属性值为参数值,事实上参数不只是应用在属性上,后面将会陆续谈到。如果要构造一个属性元素,那么同时也应该构造一个合理的参数,如例:
1
2
3
4
5
//通过调用框架的工厂方法创建一个参数对象
Parameter ageParmeter = ParameterFactory.createIntType(28);
 
//通过调用框架的工厂方法创建一个属性描述对象
Property ageProperty = BeanElementFactory.createProperty("age", ageParmeter);


5.6对象方法
上面的讲述,我们从静态角度使用了属性描述对象。既然有静态,那么相对就有动态描述。我们通常会这样描述我们自己的对象:这个对象可以做某某事情,这个”做”体现了对象”动”的一面及类的职责。在对象中,使用了方法来反映动态一面,当调用一个对象方法时,可能使用一些有意义的参数值,这个参数就是上面已经提到的那个参数。该容器框架中,定义了一个方法调用描述元素.下面例子可参考!
1
2
3
4
5
6
//通过调用框架的工厂方法创建一个参数对象
Parameter nameParmeter = ParameterFactory.createStringType("China");
 
//通过调用框架的工厂方法创建一个方法调用描述元素对象
Invocation invocation =
     BeanElementFactory.createInvocation( "sayHello",new Parameter[] { nameParmeter });


5.7方法拦截
该框架提供了方法调用级拦截,同样它作为一个元素对象被工厂方法所创建
1
Interception methodInterception = BeanElementFactory.createInterception(String methodName,String[] parameterTypes);


以上代码替我们创建了一个方法拦截元素对象,很明显我们创建拦截元素,自然要提到拦截器,与该描述元素有什么关系呢?我们可以调用该元素下的一些方法来添加方法拦截器。
1
2
3
4
5
6
7
8
9
10
11
//添加一个拦截器实例
public void addInterceptorByInstance(Interceptor interceptor) ;
 
//添加一个拦截器实现类
public void addInterceptorByClass(Class interceptorClass);
 
//添加一个拦截器实现类名
public void addInterceptorByClassName(String interceptorClassName);
 
//添加一个拦截器引用
public void addInterceptorByReference(Object reference) ;


5.8元素注册
通过前面基本讲述,我们知道元素对象是需要注册到容器中,才能发挥作用IOC容器提供了一些有用的元素注册方法,该容器允许多步添加所需要的元素,因此才容器具有一定的动态性,下面公开该容器的API
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
/*
* Copyright (c) jmin Organization. All rights reserved.
 */
package org.jmin.j2ee.ioc;
 
import java.util.Map;
 
import org.jmin.j2ee.ioc.element.Autowire;
import org.jmin.j2ee.ioc.element.BeanElement;
import org.jmin.j2ee.ioc.element.Construction;
import org.jmin.j2ee.ioc.element.DestroyMethod;
import org.jmin.j2ee.ioc.element.InitializationMethod;
import org.jmin.j2ee.ioc.element.Interception;
import org.jmin.j2ee.ioc.element.Invocation;
import org.jmin.j2ee.ioc.element.PoolSize;
import org.jmin.j2ee.ioc.element.Property;
import org.jmin.j2ee.ioc.element.Singleton;
 
/**
 * A micro-container manages registered information of beans and their instances.
 * The container creates bean instances and dome injection on them.Container can get
 * bean instance from outside by a unique key.Some methods are supplied here to register
 * bean information in Ioc container.
 *
 * @author Chris Liao
 * @version 1.0
 */
 
public interface IocContainer  {
 
  /**
   * containsID
   */
  public boolean containsID(Object ID);
 
  /**
   * Find a bean instance from container by a ID.
   * If not found, then return null.
   */
  public Object getBean(Object ID);
 
  /**
   * Find a bean instance with a class. If not found, then return null.
   */
  public Object getBeanByClass(Class cls);
 
  /**
   * Find all bean instance map
   */
  public Map getBeansByClass(Class cls);
 
  /**
   * register a object instance in container
   */
  public void registerInstance(Object instance);
 
  /**
   * register a object instance with a ID
   */
  public void registerInstance(Object ID, Object instance);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, Property[] properties);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, Property[] properties,Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, Parameter[] constructParameters);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, Parameter[] constructParameters,Property[] properties);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, Parameter[] constructParameters,Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, Parameter[] constructParametersr,Property[] properties, Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, Construction constructor);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, Construction constructor,Property[] properties);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, Construction constructor,Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, Construction constructor,Property[] properties, Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Class beanClass, BeanElement[] registerElements);
 
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,Property[] properties);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,Property[] properties,Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,Parameter[] constructParameters);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,Parameter[] constructParameters, Property[] properties);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,Parameter[] constructParameters, Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,Parameter[] constructParameters, Property[] properties,Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,Construction constructor);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,Construction constructor,Property[] properties);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,Construction constructor,Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,Construction constructor,Property[] properties, Invocation[] invocation);
 
  /**
   * register a classes
   */
  public void registerClass(Object ID, Class beanClass,BeanElement[] registerElements);
 
  /**
   * deregister a bean by ID
   */
  public void deregister(Object ID);
 
 
 
  /**Some set methods to change managed bean defination in micro-container**/
 
  /**
   * set singleton for bean
   */
  public void setSingleton(Object ID, boolean singleton);
 
  /**
   * set singleton for bean
   */
  public void setSingleton(Object ID, Singleton singleton);
 
  /**
   * set autowire for bean
   */
  public void setAutowire(Object ID, boolean autowire);
 
  /**
   * set autowire for bean
   */
  public void setAutowire(Object ID, Autowire autowire);
 
  /**
   * set destroy method
   */
  public void setDestroyMethodName(Object ID, String destroyMethodName);
 
  /**
   * set destroy method
   */
  public void setDestroyMethodName(Object ID, DestroyMethod destroyMethod);
 
  /**
   * set init method
   */
  public void setInitMethodName(Object ID, String initMethodName);
 
  /**
   * set init method
   */
  public void setInitMethodName(Object ID, InitializationMethod initMethodName);
 
  /**
   * set pooled size for some bean instance
   */
  public void setPoolSize(Object ID, int size);
 
  /**
   * set pooled size for some bean instance
   */
  public void setPoolSize(Object ID, PoolSize poolSize);
 
  /**
   * add a properties
   */
  public void addProperty(Object ID,Property property);
 
  /**
   * remove a properties
   */
  public void removeProperty(Object ID,Property property);
 
  /**
   * add a method invocation
   */
  public void addInvocation(Object ID,Invocation invocation);
 
  /**
   * remove a method invocation
   */
  public void removeInvocation(Object ID,Invocation invocation);
 
  /**
   * add a interception
   */
  public void addInterception(Object ID, Interception interceptions);
 
  /**
   * remove a  interception
   */
  public void removeInterception(Object ID, Interception interceptions);
 
  /**
   * Destroy operation in ioc container
   */
  public void destroy();
}



6:开发应用

IOC容器可以帮助我们去创建我们所需要的对象实例,我们唯一要做的就是把相关信息告诉容器,这些描述信息将引导容器在POJO实例的控制行为,目前该框架提供了两种开发方式:直接使用方式和XML配置方式,开发者可以在二者之间自由选择。

6.1:直接应用容器
直接通过注册来使用该框架,需要开发人员亲自创建容器,元素,参数等,然后注册它们,最后获取POJO实例,如
1
2
3
   IocContainer container = new DefaultIocContainer();
   Ojbect key =  container.register(String.class);
   String value = (String) container.getBean(key);


一个直接使用容器的例子

6.2:XML配置应用
该框架支持XML应用配置方式,将对Bean的元素描述成XML格式,开发时只要遵循描述规则进行元素定义配置,最终获得XML格式的配置文件,利用框架中的工具应用这些XML文件即可。该方式使开发方式更为便利。

1:服务组件
在继续XML配置讲解之前,先了解一些组件知识. 组件通常被用来描述对象的构成,能够帮助它的主体完成某些功能的对象。如果以整体-部分观点看问题,我们可以把一个软件系统看作一个有机体,那么它应该是由若干部分组成,每部分都可以发挥其应有的功能与作用。我们都知道java将一切事物描述为对象,那么一个系统也应该是一个对象吧(对吗?),而它的构成部分就可以称为组件了(是吗?). 从整体出发,那么模块可是系统的组件;继续整体观察模块,一个模块可以提供若干服务,那么这些服务又可以称之为模块的组件,这样的例子是可以举出很多。组件是一种整体与部分的观点,其体积可大可小。通常可从服务或领域角度定义组件,由于服务与领域的不定性与多样性,使得相应组件也具有其特点,因此组件定义变得困难。在Jmin平台下采用统一组件描述方式定义组件,如下XML样式。
1
2
3
<component id ="" type="">
 ............
</component>


在以上组件基本描述框架中,需要提供组件ID及组件类别,其省略部分则为服务自定义组件主体描述部分,该描述框架可适应组件的不定性与多样性。

2:POJO组件
该IOC工具作为Jmin平台核心部分而存在,并应用了该平台的组件统一描述思想,把受管的的POJO看作最简单形式的组件,只不过组件类别为bean,相应的XML描述如下。
1
2
3
<component id ="" type="bean">
 ............
</component>


3:元素定义
回顾POJO组件描述样式,很容易让人想到那些描述组件主体的省略号. 对于POJO组件而言,我们在此定义POJO描述元素,下面就具体讲述这些元素的配置。

类的定义
在POJO描述主体中可以使用如下XML样式定义POJO类名
1
<class>xx.xx.xx.xx</class>


构造方式
定义构造实例时需要的参数,可以配置三种类别的参数。它对应构造注入。
1
2
3
4
5
 <constructor>
<constructor-arg value="123"/>
     <constructor-arg class="xx.xx.xx.xx"/>
     <constructor-arg ref="ref1"/>
</constructor>


工厂方法
容器将调用该方法创建POJO实例
1
<factory-method>xxxx</factory-method>


工厂Bean
容器将调用另一个Bean的方法去创建当前POJO实例,但是工厂Bean与工厂方法是一起是使用的,在配置工厂Bean时,请工厂方法也配置。以下样板中xxx为工厂Bean的ID号。
1
<factory-bean>xxxx</factory-bean>


属性
POJO属性描述元素配置,需要指定属性名和属性值,还有POJO的Class中必须存在属性的set方法。容器在实例化后POJO,将会实施属性注入。
1
2
3
  <property name="" value=""/>
  <property name="" class=""/>
  <property name="" ref=""/>


调用
POJO方法调用注入。容器将自动调用该描述方法实施参数注入。在配置时,需要指定调用方法名和一些参数值。
1
2
3
4
5
6
7
8
  <invocation>
   <method-name>xxx</method-name>
   <method-param-values>
      <method-param-value value="">
      <method-param-value class="">
      <method-param-value ref="">
   </method-param-values>
  </invocation>


单态
描述当前POJO是否为单实例,可选择true或false
1
<singleton>true</singleton>


初始化方法
配置该元素时,可指定POJO实例的初始化方法,
1
<initialization-method>xxx</initialization-method>


销毁方法
当应用结束时,容器自动该销毁方法实行资源清理。
1
<destroy-method>xxx</destroy-method>


自动装配
指定POJO属性是否需要自动装配,可选择true或false
1
<autowire>true</autowire>


拦截
指定方法调用的拦截,需要配置方法名及参数类别和拦截实例
1
2
3
4
5
6
7
8
9
  <interception>
     <method-name>sayHello</method-name>
     <method-param-types>
          <method-param-type>java.lang.String</method-param-type>
     </method-param-types>
     <interceptor class="xxxxxx"/>
     <interceptor ref="xxxx"/>
   </interception>
 


4:应用
目前在该Framework中存在三个应用于XML的三个context.
FilePathAppContext 
ClassPathAppContext  
URLAppContext

5:XML例子
如定义一个XML文件(POJO.xml)
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0"?>
<service id="POJO">
        <components>
 
            <component id="bean1" type="bean">
                  <class>java.lang.String</class>
             </component>
 
   </components>
</service>


编写获取POJO的代码
1
2
3
URL fileURL = (Test.class).getResource("POJO.xml");
URLAppContext context = new URLAppContext(fileURL);
System.out.println("bean: " + context.getBean("bean1"));


当然也可以使用其他两种context去应用这个XML

一个XML例子


下载该框架工具


欢迎使用该Framework,我们将提供免费的服务.有任何问题请联系: jmin520@21cn.com

平均得分
(0 次评分)





文章来自: 本站原创
标签:
评论: 29 | 查看次数: 1478
  • 共有 29 条评论
  • 1
  • 2
  • |
  • >>
游客 [2008-11-22 14:24:30]
游客 [2008-11-21 14:30:23]
提供手机游戏:At Game Mobile, you can find cheap mobile Games for your phone with best quality. You can also download free Java Games & free cell phone games.

3D mobile & cell phone games at Game Mobile. Free Java Games for Mobile & Cell Phone.
We provide cheap wow gold and wow power levelingto each loyal and reliable customer, each of them is able to buy wow gold here.

Multiplayer mobile & cell phone games at Game Mobile. Free Java Games for Mobile & phone games gow9ge hyyqqgo.

You can find large collection of Alcatel mobile Games at Game Mobile. All Alcatel phones are listed below. Select your cell phone model to check the Alcatel games available.
游客 [2008-11-15 09:26:52]
汗! 高人啊!
yxxiao0929 [2008-11-14 11:33:12]
已推荐到blog首页,欢迎继续发表!
游客 [2008-11-03 16:19:56]
游客 [2008-11-01 14:13:15]
游客 [2008-10-27 17:51:12]
Buy Lotro Gold | Lord Of The Rings Online Gold
Lotro Accounts
| Buy Lotro Accounts
Lord Of The Rings Online Power Leveling | Lord Of The Rings Online PowerLeveling
Lotro Cd Key | Lord Time Card
Lotro Gold | Lotro Gold Instant Delivery
lord of the rings online accounts | lord of the rings online accounts for sale
Lotro Power Leveling | Lotro Powerleveling
Lord Of The Rings Online Cd Key | Lord Of The Rings Online Time Card
Lord of the Rings Online Gold
Buy Lotro Gold
Sell LoTRO Gold
LoTRO CD Key
LoTRO Europe Gold
Cheap LoTRO Accounts
Lord of the Rings Online Power Leveling
Lord of the Rings online CD Key
Cheap Lotro Gold
Air Jordan Shoes
Warhammer Gold
Warhammer Online Gold
Warhammer Accounts
Warhammer Power Leveling
Warhammer Online Key
Warhammer Gold
Warhammer Online Gold
Warhammer Time Card
Warhammer CD Key
WAR gold
warhammer online gold
Buy WAR gold
Buy warhammer gold
Buy warhammer online gold
warhammer gold
WAR Accounts
warhammer Accounts
warhammer online Accounts
Buy WAR Accounts
warhammer Accounts for sale
Warhammer Power Leveling
Warhammer Online Power Leveling
War Power Leveling
Buy Warhammer Power Leveling
Warhammer PowerLeveling
Cheap Warhammer Power Leveling
Cheap Warhammer Online Power Leveling
Buy War Power Leveling
Warhammer EU Power Leveling
Cheap Warhammer Gold
Cheap Warhammer online gold
Buy Cheap Warhammer Gold
Buy WAR Gold
Warhammer EU Gold
Warhammer EU Power Leveling
Warhammer EU CD Key
Warhammer EU Accounts
Warhammer CD Key
Warhammer online CD Key
Warhammer Timecard
Buy Warhammer Time Card
Warhammer 60 days Time Card
Cheap WAR Accounts
Cheap warhammer Accounts
Cheap warhammer online Accounts
Buy Cheap WAR Accounts
buy Warhammer CD Key
buy Warhammer online CD Key
cheap Warhammer CD key
warhammer time card
Warhammer prepaid time card
游客 [2008-10-22 17:17:57]
Air Jordan Shoes
Warhammer Gold
Warhammer Online Gold
Warhammer Accounts
Warhammer Power Leveling
Warhammer Online Key
Warhammer Gold
Warhammer Online Gold
Warhammer Time Card
Warhammer CD Key
WAR gold
warhammer online gold
Buy WAR gold
Buy warhammer gold
Buy warhammer online gold
warhammer gold
WAR Accounts
warhammer Accounts
warhammer online Accounts
Buy WAR Accounts
warhammer Accounts for sale
Warhammer Power Leveling
Warhammer Online Power Leveling
War Power Leveling
Buy Warhammer Power Leveling
Warhammer PowerLeveling
Cheap Warhammer Power Leveling
Cheap Warhammer Online Power Leveling
Buy War Power Leveling
Warhammer EU Power Leveling
Cheap Warhammer Gold
Cheap Warhammer online gold
Buy Cheap Warhammer Gold
Buy WAR Gold
Warhammer EU Gold
Warhammer EU Power Leveling
Warhammer EU CD Key
Warhammer EU Accounts
Warhammer CD Key
Warhammer online CD Key
Warhammer Timecard
Buy Warhammer Time Card
Warhammer 60 days Time Card
Cheap WAR Accounts
Cheap warhammer Accounts
Cheap warhammer online Accounts
Buy Cheap WAR Accounts
buy Warhammer CD Key
buy Warhammer online CD Key
cheap Warhammer CD key
warhammer time card
Warhammer prepaid time card
Buy Lotro Gold | Lord Of The Rings Online Gold
Lotro Accounts
| Buy Lotro Accounts
Lord Of The Rings Online Power Leveling | Lord Of The Rings Online PowerLeveling
Lotro Cd Key | Lord Time Card
Lotro Gold | Lotro Gold Instant Delivery
lord of the rings online accounts | lord of the rings online accounts for sale
Lotro Power Leveling | Lotro Powerleveling
Lord Of The Rings Online Cd Key | Lord Of The Rings Online Time Card
Lord of the Rings Online Gold
Buy Lotro Gold
Sell LoTRO Gold
LoTRO CD Key
LoTRO Europe Gold
Cheap LoTRO Accounts
Lord of the Rings Online Power Leveling
Lord of the Rings online CD Key
Cheap Lotro Gold
游客 [2008-10-19 11:19:35]
游客 [2008-09-26 17:58:09]
Warhammer Gold
Warhammer Online Gold
Warhammer gold
cheap Warhammer gold
Warhammer Online gold
Warhammer gold
Buy WAR gold
Cheap Warhammer Gold
Buy warhammer online gold
cheap warhammer online gold
Buy warhammer gold
buy warhammer online gold
buy cheap warhammer gold
War Gold
Buy Warhammer Gold
Warhammer Online Gold
Warhammer Gold for sale
Cheap Warhammer Gold
Warhammer Accounts
Buy Warhammer Accounts
Cheap Warhammer Accounts
Warhammer Power leveling
War Power leveling
Warhammer Online Power Leveling
heap Warhammer Power Leveling
Warhammer CD Key
War CD Key
Warhammer Online CD Key
Warhammer Game Time Card
Warhammer Game Card
Buy Warhammer Online CD Key
Buy War Gold
Sell Warhammer Gold
Warhammer EU Gold
Warhammer Online EU Gold
Sell Warhammer Gold
Warhammer EU Gold
Buy War Gold
Warhammer Online EU Gold
Buy Cheap Warhammer Gold
Cheap warhammer EU gold
Cheap War Gold
Cheapest Warhammer Gold
Buy Cheap Warhammer Gold
Buy Warhammer Online Accounts
Buy WAR Accounts
Buy Warhammer Power Leveling
Warhammer Powerleveling
Buy WAR Power Leveling
Buy Cheap Warhammer Power Leveling
Buy Warhammer CD Key
Warhammer EU CD key
Buy Warhammer Online key
Warhammer Time Card
Buy Warhammer Time Card
Buy Lotro Gold | Lord Of The Rings Online Gold
Lotro Accounts
| Buy Lotro Accounts
Lord Of The Rings Online Power Leveling | Lord Of The Rings Online PowerLeveling
Lotro Cd Key | Lord Time Card
Lotro Gold | Lotro Gold Instant Delivery
lord of the rings online accounts | lord of the rings online accounts for sale
Lotro Power Leveling | Lotro Powerleveling
Lord Of The Rings Online Cd Key | Lord Of The Rings Online Time Card
LoTRO Gold
Lord of the Rings Online Gold
Buy Lotro Gold
Sell LoTRO Gold
LoTRO CD Key
LoTRO Europe Gold
Cheap LoTRO Accounts
Lord of the Rings Online Power Leveling
Lord of the Rings online CD Key
Cheap Lotro Gold
fashional cloth
| fashion clothing
clothing and fashion
| clothing fashion wholesale
fashional cloth
| fashion clothing
fashion style |
fashionable cloth
游客 [2008-09-25 17:55:03]
Warhammer Gold
Warhammer Online Gold
Warhammer gold
cheap Warhammer gold
Warhammer Online gold
Warhammer gold
Buy WAR gold
Cheap Warhammer Gold
Buy warhammer online gold
cheap warhammer online gold
Buy warhammer gold
buy warhammer online gold
buy cheap warhammer gold
War Gold
Buy Warhammer Gold
Warhammer Online Gold
Warhammer Gold for sale
Cheap Warhammer Gold
Warhammer Accounts
Buy Warhammer Accounts
Cheap Warhammer Accounts
Warhammer Power leveling
War Power leveling
Warhammer Online Power Leveling
heap Warhammer Power Leveling
Warhammer CD Key
War CD Key
Warhammer Online CD Key
Warhammer Game Time Card
Warhammer Game Card
Buy Warhammer Online CD Key
Buy War Gold
Sell Warhammer Gold
Warhammer EU Gold
Warhammer Online EU Gold
Sell Warhammer Gold
Warhammer EU Gold
Buy War Gold
Warhammer Online EU Gold
Buy Cheap Warhammer Gold
Cheap warhammer EU gold
Cheap War Gold
Cheapest Warhammer Gold
Buy Cheap Warhammer Gold
Buy Warhammer Online Accounts
Buy WAR Accounts
Buy Warhammer Power Leveling
Warhammer Powerleveling
Buy WAR Power Leveling
Buy Cheap Warhammer Power Leveling
Buy Warhammer CD Key
Warhammer EU CD key
Buy Warhammer Online key
Warhammer Time Card
Buy Warhammer Time Card

LoTRO Gold
Lord of the Rings Online Gold
Buy Lotro Gold
Sell LoTRO Gold
LoTRO CD Key
LoTRO Europe Gold
Cheap LoTRO Accounts
Lord of the Rings Online Power Leveling
Lord of the Rings online CD Key
Cheap Lotro Gold
Buy Lotro Gold | Lord Of The Rings Online Gold
Lotro Accounts
| Buy Lotro Accounts
Lord Of The Rings Online Power Leveling | Lord Of The Rings Online PowerLeveling
Lotro Cd Key | Lord Time Card
Lotro Gold | Lotro Gold Instant Delivery
lord of the rings online accounts | lord of the rings online accounts for sale
Lotro Power Leveling | Lotro Powerleveling
Lord Of The Rings Online Cd Key | Lord Of The Rings Online Time Card
游客 [2008-09-24 15:53:26]
Warhammer gold
Warhammer Online Gold
Warhammer Accounts
Warhammer Power Leveling
Warhammer CD Key

WAR gold
warhammer gold
warhammer online gold
Buy WAR gold
Buy warhammer gold
Buy warhammer online gold

WAR Accounts
warhammer Accounts
warhammer online Accounts
Buy WAR Accounts
warhammer Accounts for sale

WAR Power leveling
WAR Powerleveling
warhammer Power leveling
warhammer online Power leveling
Buy WAR Powerleveling
Buy warhammer Powerleveling
Buy warhammer online Powerleveling

warhammer game card
warhammer cd key
warhammer online game card
warhammer online cd key
warhammer cdkey
warhammer online cdkey

Warhammer Gold
Warhammer Online Gold
Warhammer Accounts
Warhammer Power Leveling
Warhammer CD Key

Cheap Warhammer Gold
Cheap Warhammer online gold
Buy Cheap Warhammer Gold
Buy WAR Gold

Cheap WAR Accounts
Cheap warhammer Accounts
Cheap warhammer online Accounts
Buy Cheap WAR Accounts

Cheap Warhammer Power Leveling
Cheap Warhammer Online Power Leveling
Cheap WAR Power Leveling

buy warhammer cd key
buy warhammer online cd key
cheap warhammer online cd key
warhammer time card

LoTRO Gold
Lord of the Rings Online Gold
Buy Lotro Gold
Sell LoTRO Gold
LoTRO CD Key
LoTRO Europe Gold
Cheap LoTRO Accounts
Lord of the Rings Online Power Leveling
Lord of the Rings online CD Key
Cheap Lotro Gold
Buy Lotro Gold | Lord Of The Rings Online Gold
Lotro Accounts
| Buy Lotro Accounts
Lord Of The Rings Online Power Leveling | Lord Of The Rings Online PowerLeveling
Lotro Cd Key | Lord Time Card
Lotro Gold | Lotro Gold Instant Delivery
lord of the rings online accounts | lord of the rings online accounts for sale
Lotro Power Leveling | Lotro Powerleveling
Lord Of The Rings Online Cd Key | Lord Of The Rings Online Time Card
游客 [2008-09-18 16:49:11]
<