Terracotta配置文件

来源:互联网 发布:淘宝女装海报 编辑:程序博客网 时间:2024/05/21 22:53

1.<Servers>
在Servers节点内,用来指定Servers Array里的所有服务器。TC Server通过子节点<dso-port>来配置服务监听端口为9510,使TC client 与 DSO 模式协同工作 。

2.<system><configuration-model>development</configuration-model></system>
配置DSO为开发模式

3.<clients><logs>terracotta/client-logs/pojo/chatter/%D</logs></clients>
告诉DSO把TC client的日志放在哪里

4.<instrumented-classes><include><class-expression>demo.sharedqueue..*</class-expression></include></instrumented-classes>
应用程序需要这些自定义的对象/类被共享,接下来的声明告诉DSO,哪些是他们需要的,当应用程序在DSO模式下运行的时候,那么这些类的实例
将会用他们自己的方式广播他们的变化。
当你打算将一个应用通过TC集群,一个好的方法(和一个MVC的模式)是对一个包下面的所有类进行分组,这样的写法会让你的工具化类的列表变
得十分的简洁。

<instrumented-classes><include><class-expression>demo.chatter.ChatManager</class-expression><honor-transient>true</honor-transient><on-load><method>init</method></on-load></include></instrumented-classes>
ChatManager类已经被共享,但是在这个类中有的字段是被描述成“transient”,还是应该保持“transient”字段应有的特性。通过设置<honor-transient>为'true',声明成“transient”的字段所有有的都“transient”,并且他们的状态
和值不会在不同应用的实例间可用。只有本地的应用实例可以创建,读,写这些字段。
在ChatManager类中,大多的成员(“transient”和其它)都是在创建的基础上实例化。然而,当DSO发现服务器端已经有一个应用对象是可用的,那么其它的应用对象就只能简单的收到那个应用的引用,并且它的构造器不会
被调用,“transient”字段在这个点上是不会被初始化的,所以<on-load>是来声明用来暗示,当DSO从服务端加载对象的时候,这个类是需要拿走的操作。

5.<distributed-methods><method-expression>void demo.chatter.ChatManager.sendNewMessageEvent(..)</method-expression></distributed-methods>
这个方法属于root对象,这个配置可以成功的使调用放生在任何应用的实例中。

6.<transient-fields><field-name>demo.sharededitor.models.ObjectManager.listener</field-name></transient-fields>
这个字段是属于root对象的,使这些字段“transient”,这样这些值就只能在本地上是可用的。

7.<autolock><method-expression>* demo.sharedqueue.*.*(..)</method-expression></autolock>
这个方法(从本地对象中得来的)对一个已经被声明为共享的对象进行操作。这个部分告诉DSO,当调用这些对象的时候,假设给它加上了一把持久的锁。实际上,这个部分声明了所有能在
'demo.sharedqueue.Main'类中找到的方法,这个类中的所有方法假设都需要进行加锁。

原创粉丝点击