ICANN认证国际域名顶级注册机构
网站建设,域名注册,空间租用,软件销售,广告设计 域名注册,空间租用, 网站建设,东莞网页设计,域名注册,网站推广,网站开发,网页设计 网站推广,,百度推广,新浪推广,雅虎推广,网易推广 标志设计,画册设计,包装设计,VI策划,企业形象顾问 连邦软件加盟店,提供销遥行,管家婆,速达,用友ERP,诺顿等软件报价及销售 建站必读 腾达网络,上网帮助中心, 腾达为东莞等地,提供网站建设,网站推广,广告设计,软件销售等优质服务!
建站必读


 
 
当前位置:首页 -> 建站必读 -> JSP技术
PASX简化Java开发
你是否曾经编写了一个程序,却在复检的时候发现它的配置过程很不合理?你是否曾经使用过配置文件,却发现它们不能满足描述应用程序的需要?你是否为了解决几个特殊问题而创建过临时配置补丁,却把花费更多时间、开发普遍适用方案的希望寄托到了未来?



如果你的回答是肯定的,那么,你和大多数其他Java程序员一样幸运,有一些工具能够帮助你解决这些问题。如果你的回答是否定的,关于属性文件局限的讨论也许能够让你信服——还有更好的方法可供使用。



属性文件是Java编程和运行环境的一个重要组成部分。然而,当一个程序员需要的功能远远超过Properties类提供的简单名字-值对时,他需要有更丰富的表现手法。通常,Java程序员扩展属性文件的方法是为属性本身的名字或值(或两者同时)增加额外的语义信息。很多时候,这种看来有效的方法会使问题越来越复杂。



为说明问题,请利用属性把一系列的值赋给单个名字。让我们假定你想要管理一组名称服务器,可能采用的属性文件内容如下:



hosts_1=ns.foo.com

hosts_2=ns.bar.com

hosts_3=ns.acme.com





代码很简单。改变名字-值对中名字的含义之后,你可以轻松地编写出把“hosts_”开头的名字当成“hosts”列表中一个元素的程序。



下面,我们来看看一个更复杂的例子。假设你有同一Bean类InternetHost的两个不同实例:实例A关联到一个Web服务器的列表;实例B关联到一个名称服务器的列表。要从同一个文件配置这两个实例,一种可能的方案如下:



name_hosts_1=ns.foo.com

name_hosts_2=ns.bar.com

name_hosts_3=ns.acme.com

web_hosts_1=www.foo.com

web_hosts_2=www.bar.com

web_hosts_3=www.acme.com





这种方法行得通,但总是给人以拼拼凑凑的感觉。如果你还不相信的话,稍微增加一点问题的复杂性:让这些列表中的某个元素自己也成为一个列表;或者,使得下划线字符(“_”)在名字-值对中合法。在这些情况下,简单的属性文件变得非常复杂。



作为一个细心的读者,你可能已经发现,InternetHost各个实例的命名方式逐渐模糊。为了把前三个属性赋值给实例A,把后三个属性赋值给实例B,你必须用某种与具体实例无关的方法告诉实例它们该用哪一组属性值。如果用直接编码的方式,让实例A寻找以“name_”开头的属性,让实例B寻找以“Web_”开头的属性,那么,这两个实例将不再属于同一对象类。



最后的例子还显示出另外一个问题。这就是,如何来调用实例A?简单地叫它“A”?到哪里去寻找它?它是本地实例还是远程接口?是否存在指向它的全局静态引用?如是,如何访问实例B(或者,那是否是“B”)?



解决这些问题的方案是使用一个组件配置和命名框架。有许多工具能够帮助你完成这个任务,其中之一就是PASX。PASX是一个源代码开放的Java工具,它通过XML进行配置,通过JNDI实现命名。PASX框架用XML配置用户定义的服务、JNDI名称空间、JDBC连接池、事件树、工作队列和系统日志。



PASX利用XML进行配置,因为XML比简单的属性列表具有更丰富的描述能力。为了理解为何XML更适合完成这类任务,请再次考虑第一个例子。如果用PASX定义的标记重新描述,则结果应该如下:



<List>

<String>ns.foo.com</String>

<String>ns.bar.com</String>

<String>ns.acme.com</String>

</List>





虽然代码更加冗长,但它的含义比原来要清楚得多。由于一些列表可能被排序,元素在XML文档中出现的次序决定了它们在最终数据结构中的次序。属性文件最终用来构造Properties对象,它的名字必须指示出元素的索引,因为Properties对象直接从Hashtable派生得到。



用XML描述时,第二个属性示例如下所示:





<List name="name-servers">

<String>ns.foo.com</String>

<String>ns.bar.com</String>

<String>ns.acme.com</String>

</List>

<List name="web-servers">

<String>www.foo.com</String>

<String>www.bar.com</String>

<String>www.acme.com</String>

</List>





还记得示例二之后提出的难题吗?让列表中的某个元素成为一个子列表,让其中一个列表成为元素名字可以包含下划线的映射结构。下面是它的答案:



<List name="name-servers">

<String>ns.foo.com<String>

<List>

<String>ns1.bar.com</String>

<String>ns2.bar.com</String>

</List>

<String>ns.acme.com</String>

</List>

<Map name="web-se
 
 
本站关键词:
|东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间||东莞域名申请|东莞主机申请|东莞空间申请|东莞网站建设|东莞网页设计|东莞网络公司|网站建设|网页设计|网络公司|网站制作|网站开发|东莞域名空间|
域名注册 | 虚拟主机 | 网站建设 | 网站推广 | 广告设计 | 帮助中心 | 软件中心 | 关于腾达
东莞市腾达信息工程有限公司      本站网络实名: 东莞网站建设
地址:东莞市新城市中心区第一国际B座610   邮编:523007
电话:0769-22026071 22026072 传真:0769-22026076 24小时服务热线:13712032014
© 2002~2005 腾达网络   版权所有