Avalon phoenix文档之服务器装配者(Server Assemblers

服务器装配者(Server Assemblers)向导<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


谁应该读本文档

服务器装配者向导是为想为装配phoenix服务器应用程序的人编写的。前提假设你对phoenix框架的基本概念比较熟悉。

本章集中在装配方面,对java 编成无特殊要求。也同样假设你对服务器的基本原则,基本安全措施和性能调整比较熟悉。

本章的组织

信息以节组织的,每一节详细的阐述装配服务器应用的一个方面。

内容

1.

       什么是服务器应用?

2.

       如何创建一个服务器应用?

3.

       Config.xml规格说明

4.

       Assembly.xml规格说明

5.

       Environment.xml规格说明

Avalon 文档小组编写

什么是服务器应用


介绍

在phoenix中,服务器应用是一套blocks,它一起提供一个统一的用户服务。服务器应用的例子包括邮件服务器,文件服务器,Web服务器等。服务器应用是包含一套blocks组件的高层次的组件。

除了blocks以外,服务器应用还需要一定数量的其他组件来完成。服务器应用需要配置文件定义设置(例如线程,安全,日志等);定义那些blocks如何包裹在一起;为block实例定义配置数据。Block还需要应用程序所指定的其他资源。

Peter Donald,Berin Lortisch 编写

创建服务器应用


介绍

本文档将描述装配你第一个服务器应用的步骤。创建一个服务器应用有以下步骤:

1.

       选择你想装配的blocks。

2.

       编写config.xml。

3.

       编写assembly.xml。

4.

       编写environment.xml。

5.

       将组件及其相关资源打包在一个sar文件中。

选择你想装配的blocks

作为一个装配人员,为你的应用选择一个所需的精确的block是你的责任。可以从你自己的资源中获得你所需的blocks,你也可以使用phoenix提供的核心blocks,定约他人的组件,或者在在线知识库中下载组件。

编写config.xml

Blocks的配置数据存储在config.xml文件中。想了解更多的关于config.xml的详情请参看config.xml规范。

编写assembly.xml

下一步是编写assembly.xml文件,assembly.xml文件详细指定了作为服务器应用部分的blocks实例。每一个block都有一个名字。每一个block可以有从属(dependencies),这可以通过“provide”子元素实现。Provide元素可以映射从服务器应用命名空间到BlockInfo文件中Block角色命名空间。想了解更多的关于assembly.xml的详情请参看assembly.xml规范。

编写environment.xml

下一步是编写environment.xml文件,该文件是用于配置基于代码安全的原则、日志管理原则和线程池。想了解更多的关于environment.xml的详情请参看environment.xml规范。

创建Sar文件

Sar 文件格式是标准的分布式phoenix服务应用格式。它是拥有特定目录布局的标准jar文件,config.xml、assembly.xml和environment.xml必须存储在文件的SAR-INF/目录下,而所有的jar文件,包口所有的blocks和支持类库都必须存储在SAR-INF/lib目录下。

Peter Donald 编写

Config.xml文件规范


介绍

Config.xml文件存在的目的是为每一个需要配置数据的block提供配置数据。配置数据的格式是block规范指定的。因而,请参考block文档了解相应的细节。在assembly.xml文件中,根元素下面的每一元素拥有一个相应于block规范的名字。该元素的内容就是block的配置数据。

Config.xml例子

<?xml version="1.0"?>

<config>

    <myAuthorizer>

      <!-- ...configuration data here... -->

    </myAuthorizer>

    <myBlock>

      <param1>param1-value</param1>

      <an-integer>2</an-integer>

      ...

    </myBlock>

</config>

Peter Donald 编写

Assembly.xml文件规范


装配文件

Assembly.xml定义了如何装配应用程序,它也定义了组成应用程序的blocks和如何连接blocks,太还定义了包含在应用中的应用监听者。

在早期的phoenix版本中,配置文件也可以存储在Assembly文件中。现在不同了,配置数据存储在一个单独得配置文件(config.xml)中。

Assembly.xml的根元素必须是<assembly>元素。对于每一个block和属于应用程序一部分的应用监听者根元素必须包含一个子元素。这些元素在下文描述。

<block>元素

<block>元素定义了一个block和如何为这个block提供服务。<block>元素有以下属性。

属性


描述


class

Block实现类的全当限名称(fully-qulified name),这个类必须是public,必须拥有一个无参的public 构造函数。必须有一个BlockInfo文件与此类相关。

name

Block的唯一命名。该命名用于assembly文件中其他部分查阅此block,或者在config文件中查阅该block。Block命名只能包含字母、数字、“-”和“.”。

<provide>元素

<provide>元素定了如何为一个block提供特殊服务。它连接一个block和另一个为它提供所需服务的block。在block的BlockInfo文件中对于每一dependency列表至少有一个<provide>元素。对于大批的计划的服务,对于每一个denpendency可能有多于一个的<provide>元素。<provide>元素有以下属性。

属性


描述


alias

使用服务和映射服务的关键元素。默认值是name属性的值。

name

该属性是为目标block提供服务。这必须参考同一应用中的另外一个block.

role

服务的角色(role)。这必须参考block的BlockInfo文件中denpendency列表之一。该服务名和版本由dependency指定,必须同BlockInfo文件的服务列表之一对应。

<proxy>元素

<proxy>元素控制着在向其他block提供blocks前phoenix是否将proxy对象和block打包。

属性


描述


disable

使用proxy对象失效。默认值是false.

<listener>元素

<listener>元素定义了一个服务器监听。<listener>元素有以下属性:

属性


描述


class

监听类的全当限名称(fully-qulified name)。这个类必须是public,必须提供一个public的无参的构造函数。它必须实现哦org.Avalon.phoenix.ApplicationListener接口。

name

监听者的唯一的命名。它用于指向配置文件中的监听者。命名中只能含有字母、数字、“-”和“.”。

<block-listener>元素(不提倡)

<block-listener>元素定义了block的监听者。注意这种使用block的方法是不提倡的。<block-listener>的属性和<listener>元素相同。

Assembly.xml文件例子

下面是一个assembly.xml的例子。它定义了2个blocks,分别叫做myAuthorizer和myBlock,并定义了一个监听者。myBlock使用了myAthorizer提供的Athorizer服务。

<?xml version="1.0"?>

<assembly>

    <block name="myAuthorizer"

           class="com.biz.cornerstone.blocks.MyAuthorizer">

    </block>

    <block name="myBlock"

           class="com.biz.cornerstone.blocks.MyBlock">

        <provide name="myAuthorizer"

                 role="com.biz.cornerstone.services.Authorizer"/>

    </block>

    <listener name="myListener"

              class="com.biz.cornerstone.listeners.MyListener">

    </listener>

</assembly>

Peter Donald 编写

Environment.xml文件规范


介绍

Environment.xml文件的目的是配置环境或者服务器应用设置。当前这意味着可以设置安全原则和配置日志设置。下面是一个environment.xml文件样本。早期的线程池也是在本节设置的,但这已经不提倡了。注意早期的存储在environment.xml文件中的数据是存储在Server.xml文件中的。

Environment.xml例子

<?xml version="1.0"?>

<environment>

    <logs>

      <category name="" target="default" priority="DEBUG" />

      <category name="myAuthorizer" target="myAuthorizer-target"

                priority="DEBUG" />

      <log-target name="default"

                  location="/logs/default.log" />

      <log-target name="myAuthorizer-target"

                  location="/logs/authorizer.log" />

    </logs>

    <policy>

      <keystore name="foo-keystore"

                location="sar:/conf/keystore"

                type="JKS" />

      <grant code-base="file:${app.home}${/}some-dir${/}*"

              key-store="foo-keystore" >

        <permission class="java.io.FilePermission"

                    target="${/}tmp${/}*"

                    action="read,write" />

      </grant>

      <grant signed-by="Bob"

             code-base="sar:/SAR-INF/lib/*"

             key-store="foo-keystore" >

        <permission class="java.io.FilePermission"

                    target="${/}tmp${/}*"

                    action="read,write" />

      </grant>

    </policy>

</environment>

如果装配人员对标准的policy十分有经验的话,Policy片段格式就十分的明显。注意,如果给有指定policy,Server应用程序将在所有允许的权限下运行。属性评价发生在类似于标准plocy文件属性扩展下发生。有几个额外的属性可以用于估计。他们包括:App.home和App.name。

有一件特殊的事情需要提醒,用户可以使用URLs的形式。例如:“sar:/SAR-INF/lib/*”。这必须申请sar文件中jar权限。注意:这些URLs必须以“sar:/”起始,必须以“/”作为文件分割符而不必关心操作系统。

Logs片段可以同时拥有两种元素。Log-targets描绘的是日志及其种类,必须拥有一个命名为“default”的log-targets。种类是自然界的继承,又一个优先权,和一个或者多个log-targets关联。参看logging文档作进一步了解。

有另一种类型的日志配置。它更容易配置。指定日志版本属性。参看javadoc中的org.apache.Avalon.excalibur.logger做进一步了解。下面是一个配置实例:

<?xml version="1.0"?>

<environment>

  <logs version="1.1">

    <factories>

      <factory type="file" class="org.apache.Avalon.excalibur.logger.factory.FileTargetFactory"/>

    </factories>

 

    <categories>

      <category name="" log-level="INFO">

        <log-target id-ref="default"/>

      </category>

 &nb

时间: 2024-10-12 06:24:46

Avalon phoenix文档之服务器装配者(Server Assemblers的相关文章

Avalon Phoenix文档之概述

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 概述 介绍 Phoenix 是在Avalon Framework 之上的微内核设计和实现.它提供了一些工具用来管理服务器应用环境.这些工具包括日志管理,类装载(

weboffice 在线预览后,编辑文档回传服务器,我怎么拿到编辑后的临时文件

问题描述 weboffice 在线预览后,编辑文档回传服务器,我怎么拿到编辑后的临时文件 在线预览功能 我已实现,再次编辑这个文档回传服务器 需求是我拿到编辑后的临时文件 解决方案 document.all.WebOffice1.HttpAddPostCurrFile("DocContent",""); 点聚操作office的api是这样的,然而这个DocContent具体是啥? 麻烦懂的人 指点下!

[Phoenix文档系列] 二、数据类型

目前Phoenix支持24种简单数据类型和1个一维Array的复杂类型.以下是对支持数据类型的说明: 1. INTEGER 2. UNSIGNED_INT 3. BIGINT 4. UNSIGNED_LONG 5. TINYINT 6. UNSIGNED_TINYINT 7. SMALLINT 8. UNSIGNED_SMALLINT 9. FLOAT 10. UNSIGNED_FLOAT 11. DOUBLE 12. UNSIGNED_DOUBLE 13. DECIMAL 14. BOOLEA

我照着文档链接服务器,为什么还报EMChatManager+Chat == asyncSendMessage:progress:::didSendMessage:error: - 无法连接到服务器.

问题描述 解决方案 报的错误是无法连接到服务器,这种情况是您那边的网络不好导致的报错,您用我们的demo发消息试试,看能不能发出去.解决方案二:demo能发出去,也没打印出NSLog:登录成功解决方案三:demo能发出去,这是打印出来的  2015-12-11 13:37:50:700 E_Supply[15655:807] begin insert message to chatter::6001, messageId::1518f8b9e6c2015-12-11 13:37:50:702 E

MVC上传文档本地测试成功,server上失败,可能原因除了文件夹权限还有哪些

问题描述 MVC写的一个系统,上传文件功能每次本地测试均能正常运行,放到服务器都失败,我试过修改server文件夹权限,还是不行,也许是我修改的不对,代码量有些大不方便贴,求高手意见,如若必要贴出关键代码.小弟初入职,还望不吝赐教啊. 解决方案 解决方案二:贴异常内容stacktrace解决方案三:不贴出错,怎么搞?解决方案四:代码奉上:这是JS写的上传文件代码,后台Controller有相应处理函数,本地测试无问题,放到服务器一直停在最后一个else,不解啊functiontoFileUplo

服务器安全部署文档

原文:服务器安全部署文档 年前一直在赶项目,到最后几日才拿到新服务器新添加的硬盘,重做阵列配置生产环境,还要编写部署文档做好安全策略,交给测试部门与相关部门做上线前最后测试,然后将部署文档交给相关部门同事,让他根据部署文档再做一次系统,以保证以后其他同事能自己正常部署服务器,最后终于赶在放假前最后一天匆忙搞定测试后,简单的指导同事按部署文档将服务器重新部署了一次就先跑路回家了,剩下的就留给加班的同事负责将服务器托管到机房了.年后回来上班后按工作计划开始做文档(主要对之前编写的部署文档进行修正和将

用COM和ASP创建动态Word文档(转)

word|创建|动态 大多数公司由于意识到无文档的工作过程会成为前进的绊脚石,因此都开发了定义详细的文档程序.每个公司都为不同的过程定义自己的一套文档模板,使它们随时可被职员使用,用于进行购买请求或申请度假等. 但是,随着Internet 逐渐为大家熟悉和逐渐普及,越来越多的功能被移植到"开放空间",以实现更好的可视性和更有效的通讯.比如说,一个人也许要问:"我可以登录到Internet / Intranet,填写一张休假申请表,然后以公司标准模板样式将它作为Word 文档发

借用OpenOffice将上传的Word文档转换成Html格式

有个博友写的比较详细,参考地址:http://www.cnblogs.com/luckyxiaoxuan/archive/2012/06/13/2548331.html 将Word转Html的原理是这样的: 1.客户上传Word文档到服务器 2.服务器调用OpenOffice程序打开上传的Word文档 3.OpenOffice将Word文档另存为Html格式 4.Over 至此可见,这要求服务器端安装OpenOffice软件,其实也可以是MS Office,不过OpenOffice的优势是跨平台

邮件中点击按钮后保存该文档到指定的数据库。谢谢,加急

问题描述 将DB中的表单以邮件形式发送给许多用户后,用后在收到的邮件中直接进行调查内容的填写.填写完后如何通过点击按钮将填写后的文档保存到指定的数据库中呢.主要是想做一个调查的db.用户可以直接在邮件中填写调查内容后,点击按钮直接将这个文档保存到数据库中.就是保存到数据库中的这个按钮的代码该如何写呢.谢谢大家啊! 解决方案 解决方案二:没有回复.自己顶下.解决方案三:在发送那个表单的时候,增加两个字段:要保存文档的服务器名(ResultServer),要保存文档的数据库路径及文件名(Result