竹磬网-邵珠庆の日记 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier


224月/080

关于广告单个点击成本和千人访问成本的计算问题

发布在 邵珠庆

点击成本应该比较好理解,比如你买包时广告,一个周花了10块,而广告总共给你带来了100个点击,那你每次的点击成本是1毛钱,如果只带来20个,那成本就是5毛钱。
这个是说的包时广告,就是MM里大多数网站提供的服务,一买至少一周,每个周多少钱之类的。
还有种就是付费点击广告,也就是你的广告显示在对方网站上,并不按时间收费,只需要设定好每个点击要支付的费用,另外设定好上限就可以了。MM的我还没仔细看,但GOOGLE、百度就这么操作的,比如你可以存两千块钱,每个广告点击付5毛钱,每天就投50块钱的。那他们就会自动帮你投放广告,每天点够50块钱的,也就是100次,就不投放广告了,第二天继续投放
我曾在百度买过广告,按点击付费的,每次5毛,几天就几百块钱进去了,太快了,效果一般,后来就停了。
百度好象最低设置5毛,但有的关键词可能需要设置高达几块钱,才有可能排到前面。
至于广告联盟,一般的是每次点击0.15--0.2元,我想可能MM里大多数人承受不了,但如果太低的话,站长又不干。在MM有个好处就是你可以设置的低一些,我能接受5分到1毛费用,如果少了我的站就不给放了,
当然如果买包时广告的话,呵呵,买的广告位好了,点击多,平均每个低于5分也有可能,像这样的,我认为是赚的,很值得继续投。
以前曾帮客户在新浪、搜狐、QQ等站投放过广告,位置选的不好平均几块,选得好了2毛多,成本还是相当高的。但客户还愿意投,因为这个还涉及到另一个问题,就是品牌形象宣传。比如我在新浪投放齐鲁都市网的广告,其他人看了可能不会点击,但肯定会想都在新浪投放广告了,肯定很有实力。
我们以前的客户也在一些地方的站点也投过广告,如信息港、新闻网之类的,都是三流网站,访问量高,但相对大站又低很多,甚至比不上一些个人网站,可他们要价还很高,一个月几万甚至十多万块钱,投放完广告一算,平均每个点击十几块几十块的,客户亏大了。

再说说千人访问成本,以前也帮别人投放过广告,费用不少,大概合每个显示5厘,也就是说千次显示是5块钱。当然对于MM的大多数人来说,也许难以接受,我觉得低于两块钱的都可以投,如果低于1块钱就好了,但说实在的,太低了当站长的不干,我辛苦搞站,卖个广告位就这么点钱,不值得,还不如不投。MM给的广告位建议价应该按是每千次显示2块多来的,不过好象大多数站长都砍了一半再卖。
另外你还得看广告的位置,同样是10块钱/周,一个是上面的通栏广告,一个是最下面的LOGO广告,效果当然不一样,如果你只贪便宜,买些边边角角的广告,我的意见是干脆别投,即使千次访问成本只有1毛钱也不干。试想谁会关注角落里的广告呢,你显示的次数是很多,一个周上万,可点击才几个,值得吗?

我的建议是大家投放广告时要参考千人访问成本和点击成本,两个都要算,合计好了再投放,最后效果才好。

给自己做点广告,大家没事来看看,位置很好,价格也不高,地方站,适合很多类型的客户投放广告。广告需要审核,我认为这是对MM、对客户、对自己负责。

224月/080

网络广告专业词汇

发布在 邵珠庆

1. CPC(Cost Per Click;Cost Per Thousand Click-Through) 每点击成本

以每点击一次计费。这样的方法加上点击率限制可以〖WX)〗加强作弊的难度,而且是宣传网站站点的最优方式。但是,此类方法就有不少经营广告的网站觉得不公平,比如,虽然浏览者没有点击,但是他已经看到了广告,对于这些看到广告却没有点击的流量来说,网站成 了白忙活。有很多网站不愿意做这样的广告,据说,是因为传统媒体从来都没有这样干过。

2.CPM(Cost Per Mille,或者Cost Per Thousand;Cost Per Impressions) 每千人成本

 网上广告收费最科学的办法是按照有多少人看到你的广告来收费。按访问人次收费已经成为网络广告的惯例。CPM(千人成本)指的是广告投放过程中,听到或者看到某广告的每一人平 均分担到多少广告成本。传统媒介多采用这种计价方式。在网上广告,CPM取决于“印象”尺度,通常理解为一个人的眼睛在一段固定的时间内注视一个广告的次数。比如说一个广告 横幅的单价是1元/CPM的话,意味着每一千个人次看到这个Ban-ner的话就收1元,如此类推 ,10,000人次访问的主页就是10元。

至于每CPM的收费究竟是多少,要根据以主页的热门程度(即浏览人数)划分价格等级,采 取固定费率。国际惯例是每CPM收费从5美元至200美元不等。

3.CPA(Cost Per Action) 每行动成本

CPA计价方式是指按广告投放实际效果,即按回应的有效问卷或定单来计费,而不限广告投 放量。CPA的计价方式对于网站而言有一定的风险,但若广告投放成功,其收益也比CPM的计 价方式要大得多。  广告主为规避广告费用风险,只有当网络用户点击旗帜广告,链接广告主网页后,才按点击 次数付给广告站点费用。

4.CPR(Cost Per Response) 每回应成本

以浏览者的每一个回应计费。这种广告计费充分体现了网络广告“及时反应、直接互动、准 确记录”的特点,但是,这个显然是属于辅助销售的广告模式,对于那些实际只要亮出名字 就已经有一半满足的品牌广告要求,大概所有的网站都会给予拒绝,因为得到广告费的机会 比CPC还要渺茫。

5.CPP(Cost Per Purchase) 每购买成本

广告主为规避广告费用风险,只有在网络用户点击旗帜广告并进行在线交易后,才按销售笔 数付给广告站点费用。

无论是CPA还是CPP,广告主都要求发生目标消费者的“点击”,甚至进一步形成购买,才予 付费:CPM则只要求发生“目击”(或称“展露”、“印象”),就产生广告付费。

6.包月方式

 很多国内的网站是按照“一个月多少钱”这种固定收费模式来收费的,这对客户和网站都不 公平,无法保障广告客户的利益。虽然国际上一般通用的网络广告收费模式是CPM(千人印象 成本)和CPC(千人点击成本),但在我国,一个时期以来的网络广告收费模式始终含糊不清, 网络广告商们各自为政,有的使用CPM和CPC计费,有的干脆采用包月的形式,不管效果好坏 ,不管访问量有多少,一律一个价。尽管现在很多大的站点多已采用CPM和CPC计费,但很多 中小站点依然使用包月制。

7.PFP(Pay-For-Performance) 按业绩付费

著名市场研究机构福莱斯特(Forrerster)研究公司最近公布的一项研究报告称,在今后4年 之内,万维网将从目前的广告收费模式——即根据每千次闪现(impression)收费——CPM(这 亦是大多数非在线媒体均所采用的模式)变为按业绩收费(pay-for-performance)的模式。

 虽然根据该公司研究人员的预测,未来5年网上广告将呈爆炸性增长,从1999年的28亿美元 猛增至2004年的220亿美元,但是经营模式的转变意味着盈利将成为网络广告发布商关心的 首要问题。

 福莱斯特公司高级分析师尼尔说:“互联网广告的一大特点是,它是以业绩为基础的。对发 布商来说,如果浏览者不采取任何实质性的购买行动,就不可能获利。”丘比特公司分析师 格拉克说,基于业绩的定价计费基准有点击次数、销售业绩、导航情况等等,不管是哪种, 可以肯定的是这种计价模式将得到广泛的采用。

 虽然基于业绩的广告模式受到广泛欢迎,但并不意味着CPM模式已经过时。相反,如果厂家 坚持这样做,那么受到损失的只会是它自已。一位资深分析家就指出,假如商家在谈判中不 能灵活处理,而坚持采取业绩模式,它将失去很多合作的机会,因为目前许多网站并不接受 这种模式。

8.其他计价方式

某些广告主在进行特殊营销专案时,会提出以下方法个别议价:

 (1)CPL(Cost Per Leads):以搜集潜在客户名单多少来收费;

 (2)CPS(Cost Per Sales):以实际销售产品数量来换算广告刊登金额。

 总之,网络广告本身固然有自己的特点,但是玩弄一些花哨名词解决不了实际问题,一个网站要具备有广告价值,都是有着一定的发展历史,那么,在目标市场决策以后挑选不同的内容网站,进而考察其历史流量进行估算,这样,就可以概算广告在一定期限内的价格,在这个基础上,或者根据不同性质广告,可以把CPC、CPR、CPA这些东西当作为加权,如此而已 。

相比而言,CPM和包月方式对网站有利,而CPC、CPA、CPR、CPP或PFP则对广告主有利。目前 比较流行的计价方式是CPM和CPC,最为流行的则为CPM。

214月/080

汉化软件的几种方法

发布在 邵珠庆

现在的汉化软件和汉化补丁是越来越多了,你肯定也想自己汉化一些软件试试吧。肯定你又会以为这是很麻烦或者很难的事情,只有高手才会做,其实并不是这样,你也完全可以自己汉化一些软件,有些方法还是很简单的,不需要设计到编程的知识。不相信,不相信就听我下面给你介绍三种方法,保证你看完后,你也能汉化一些平常见的软件了。(哎,我把胸口都拍痛了)

第一种方法:
直接修改源二进制的代码,不要紧张,也不要被吓倒,很简单的。这里需要用到一个二进制代码查看器,如果你没有,我推荐你用一个名字为Ultra Edit的编辑器,相信你已经用过这个编辑器,(没有用过?没有用过也不要紧,往下看!)这个软件比Windows自带的记事本的功能强大许多,用法上倒没有什么复杂的地方,至于具体好在哪里,我就不说了,呵呵,可以自己看看专门介绍它的软件。比如说,我们要汉化一个英文软件,就比如汉化Turbo C吧,把菜单中的“File”汉化成中文的“文件”。用此编辑器打开TC的可执行文件tc.exe,当然啦,在做这之前,你要先备份好你要操作的文件,免得到时候没有汉化成功,倒弄坏了文件,回不来了。打开以后,就可以看到它的原二进制代码文件。这时候,你选择查找功能。从二进制中查找到“file”,找倒后,将它修改成“文件”,然后关闭,执行这个文件,看看是不是已经汉化了。当然,这次你找到的不一定就是你要汉化的菜单,不一定会成功。这就需要反复实验了。
这类方法比较累,并且也不一定准确。这种方法现在也基本没有人使用了。

第二种方法:
这种方法是比较简单的一种,但这种方法只能适用于带有语言选择的软件,这样的软件不是很多,只能是偶尔逮着一个,方法很简单,找到它的语言选择文件夹,里面会有各个语言的选择文件,比如FlashGet的language目录下面有三十几个国家的语言版本。这里面已经有中国的了,假如你想新建一个的话,则也可以用记事本按照它的格式建立一个语言版本。提供给大家的一个思路就是将它的原语言版本复制一个后,用记事本打开,然后按照它的格式修改,将它的内容换成你的内容,注意要一行一行地换,如果你把两行弄到一行去了,这就可能会产生错误了。换完后,你也就已经汉化了这个软件了。
这种方法用途不是很大,一般的多语言版本的程序都有中文的语言版本,不需要你的汉化了。

第三种方法:
好的方法当然留在最后讲,这种方法是汉化者们经常用的一种,那就是修改文件的资源文件。我们知道,用VC和DEPHI编译成的软件都有资源文件。高手呢,就是打开VC,直接修改内核,而我们嘛,就不必掌握这些复杂的方法了,这里给大家介绍一个简单的方法,用eXeScope软件修改,特别的简单。(没有听说过?那没有关系,网络学院里面有教程的)像这类的软件还有很多,不过这个历史比较长,使用也非常的简单。就给大家介绍它了。比如我们要汉化OICQ,当然这本来就是中文版了,不需要汉化,没有关系,这里只是给大家演示一下汉化的过程而已。(要详细了解eXeScope,有专门的文章介绍)
启动eXeScope,选择文件菜单,再选择打开,打开QQ的可执行文件。这时候左边的资源栏目里面就会出现该文件的全部资源,包括什么头部文件,导入的动态连接库,以及它所用到的资源文件。而资源文件,就是我们汉化时要终点修改的内容。从资源中间选择菜单(一般汉化就是汉化菜单和对话框)当菜单栏目展开以后,你可以看到右边的栏目里面有该菜单的全部内容了,这时候,只需要你自己改动就可以了,将各个菜单的名字都改成你所要的名字就可以了,比如说要是“File”,你讲它改成“文件”就可以了。注意的是“&”这个符号,编过程序的人应该知道,这个是不能动的,如果你不知道意思,只要记住,这个符号的意义是:这个符号后面紧跟的字母是这个菜单的快捷键,就像记事本的菜单“文件(F)”那么这个F就是快捷键,最好不要删除掉。比如说有个菜单为:“&Edit”,那么你换的时候,就不能把快捷键去掉,把它写成“(&E)编辑”,就可以了。这是一个要注意的地方。
汉化还包括汉化对话框,同样从左边资源树中点开对话框,从右边就可以看到各个具体的标签与空间的名称了,只需要将各控件显示的文字改过来就可以了,按下F8键,就可以可视化地进行修改了。将修改后的文件保存就可以了(在编辑菜单中有“保存修改”项)。你运行一下你刚才修改过的文件,可以看到修改后的效果了。
当然啦,eXeScope的功能远不止这一些,但汉化是非常好的一个功能。*_*

汉化软件要注意的几点是:
1. 汉化前的备份,如果失败,还可以还原回来。切记!
2. 汉化软件的时候,最好就不要做别的事情了,因为我们都是刚学汉化的人,有可能某个错误,而使软件运行后死机,如果你别的文档没有存盘,可不要说我没有预先通知你了。呵呵。
3. 习惯问题,为了软件的通用性,一般都把“File”汉化成“文件”,把“Edit”汉化成“编辑”,最好遵守一下这个规则。
4. 软件版权问题,还是尊纪守法的好,打官司了,不要说是我害了你哟。

希望上面的汉化方法会对大家有一点帮助,谢谢。

204月/080

2009年考研时间表

发布在 邵珠庆

2008年

1月 搜集考研信息,听免费讲座。

2月-3月 确定考研目标,听考研形势的讲座。选择专业,全面了解所报专业的信息。准备复习。

4月-5月 第一轮复习,可以报一个基础班,特别是数学班和英语班。不要急于做模拟试题,着重于基础的复习。

6月 全面关注考研公共课的考试大纲,购买最新的辅导用书,准备暑期复习。

7月-8月 制定一个全面复习计划,开始第二轮复习。可以参加一个有权威性的辅导班,有选择地做一些必要的题目。

9月 关注各招生单位的招生简章和专业计划,购买专业课辅导用书,联系导师,获取专业课考试信息。

10月 确定十一黄金周复习计划,对前两个阶段的复习进行总结。同时,开始专业课的复习,可报一个长期班系统复习。

11月10-14日 研究生考试报名工作开始,报名、填报专愿。

11月中下旬 第三轮复习阶段开始,政治、英语、数学、专业课的冲刺复习,购买辅导冲刺的内部资料。冲刺班报名。

12-1月 进行模拟实训,报一个冲刺班,做考前整理。

2009年

1月中下旬 调整心态、准备考试。熟悉考试环境。

2月 放松心情,查询初试成绩。

3月 关注复试分数线。

4月 准备复试,联系招生单位。

5月 关注复试成绩。

6月 关注录取通知书。

9月 报到。

184月/080

JSP开发工具的选择(3)

发布在 邵珠庆

Jrun

Allaire公司的JRun是一个具有最广阔适用性的Java引擎,用于开发及实施由Java Servlets(JSP)和JavaServer Pages编写的服务器端Java应用。JRun是第一个完全支持JSP 1.0 规格书的商业化产品,全球有超过80,000名开发人员使用JRun在他们已有的Web服务器上添加服务器端Java的功能。其中Web服务器包括了Microsoft IIS,Netscape Enterprise Server,Apache等。
JRun是开发实施服务器端Java的先进引擎。如果你希望在你的Web应用中添加服务器端Java功能,那么JRun将成为你的正确选择。
你可以使用JRun运行Java Servlets -- 运行Java Servlets有2种方法,扩展你的Web 服务器或是使用内置JRun的Web服务器。通过在整个环境中将servlets作为一个可扩展的,完整定义过的Java部件模型来使用,你就可以更加方便、快速的开发、实施复杂的应用,维护起来也更加经济
JRun目前有3个版本,它是第一个支持JavaServer Pages(JSP)规格书1.0的商业化产品。JSP是一种强大的服务器端技术,它是用于创建复杂Web应用的一整套快速应用开发系统。
JRun可以使你开始开发并测试Java应用。它最多接受5个并发的连接并且:
包括全部Java Servlet API
支持JavaServer Pages(JSP)
支持所有主要的Web servers和计算机平台
JRun Pro能够在生产环境下承受大访问量的负载,帮助你实施应用、服务或Web站点(包括内联网)。JRun Pro 支持无限量并发式连接运行多个Java虚拟机,包括多个并发的Java虚拟机(JVM)。
提供一个远程管理applet以及一个远程可再分布式的管理applet。JRun Pro Unlimited包括了所有JRun Pro的功能,除次以外,还可以运行无限量的,并发的JVM。

Allaire JRun一个适用性广泛的引擎,用于开发及实施使用JavaServer Pages(JSP)及Java Servlets开发成的Java应用。利用Java技术,你可以在现有的Web server之上添加服务器端Java功能,JRun所支持的Web服务器包括Microsoft IIS和Personal Web Server,Netscape的Enterprise或FastTrack,Apache, O´Reilly公司的WebSite以及StarNine公司的WebSTAR。

JRun依靠其内置的JRun Web Server可以单独运行。使用服务器端Java,用户可以开发出复杂的商业应用系统。最重要的一点是,由于servlets的平台独立性,以及更加简单的开发、更快速的实施、更经济的维护成本,它是CGI(Common Gateway Interface)或Perl scripts的极佳的替代产品。
主要功能:
JRun 2.3可以全面实施最新Java Servlet API。同时,JRun还可以利用Java Web Server中的许多先进功能。一些JRun2.3的重要功能列举如下:
? 全面支持Java Servlet API version2.1
? 全面支持JavaServer Pages(JSP)1.0 draft spec
? 动态 taglets
? 提供现成模板
? 页面编辑
? dynamic-servlet重载 ? Servlet-initialization属性
? Servlet 串联及过滤
? 多个宿主(虚拟主机)支持 ? <servlet> tag支持
? 任务跟踪
? 安装向导
? 复杂的Swing-based管理应用
? 100%纯粹Java以及完全跨平台
? 可运行于任何Java Virtual Machine ? 最多运行于5台Java Virtual machine(JRun Pro) ? 可运行于无限多个Java Virtual machine(JRun Pro Unlimited)
? 远程管理(JRun Pro)
技术优势
Java Servlets是由Java Servlet API--Java平台的一部分,编写成的独立跨平台的服务器端程序。Java Servlets拥有“一次编写,随处运行”的强大力量,同时具备网络传递安全性以及对服务器端应用提供了良好伸缩性。Servlets可以替代传统的由Perl,C/C++或其他语言编写的服务器端应用及扩展程序。用户将Servlet作为一个可扩展的,定义良好的跨平台环境来运用,能够更加方便的开发、快速实施服务器端复杂的应用,并节省维护成本。(可以在廉价的Windows NT机器上部署servlets)

在现有的成熟的服务器技术,例如Web 服务器中结合servlets,当编写复杂的应用时,就可以避免特定服务器配置中平台的局限性及复杂性。使用Servlets,开发人员就不必再顾虑服务器的内部工作方式。servlets API内在的classes能够控制Form 数据,server header,cookies等一切物质。

现有服务器端应用和servlets的最大区别就是性能。在服务器中运行一个独立的JVM,servlet一旦被呼叫即被载入。直到servlets改变时才会被再次载入。无须重新启动服务器或应用,一个被修改过的servlet就可以被自动加载。由于servlet永远驻留在内存中,它的加载速度极快。静态或永久信息可以通过多个激活的servlet 达到共享,并且允许多个用户之间共享信息。Servelet也是模块化的,它们即可以单独的完成一项特定任务,同时也可以结合在一起工作。 servlets彼此可以互相对话。

JRun支持的Web Server? Microsoft´s Internet Information Server (IIS) and Personal Web Server (PWS) ? Netscape´s Enterprise and FastTrack Servers
? Apache ? O´Reilly´s WebSite Pro
? StarNine´s WebSTAR
? Novell Netware 5 (Novonyx)

174月/080

JSP开发工具的选择(2)

发布在 邵珠庆

Jbuiler

JBuilder 软件的目标定位是代码开发人员而不是高级设计人员,所以JBuilder中包含了大量的向导程序和其他针对中间层的快速开发工具。JBuilder性能稳定、使用方便,特别适用于创建Java 组件。此外该软件还提供了很多JSP功能。

JBuilder本身通过内置的Java和Swing(Java的GUI程序框架)技术支持跨平台的软件开发:它可以运行在WindowsLinux和Solaris操作系统之上,操作界面和工具完全一致。这种所谓的“all-Java”策略意味着软件运行JBuilder的内存不会太多。128MB是系统最小需求,我们推荐装备256MB内存以获得更好的性能。

和早期版本一样,JBuilder 4 IDE设计得更富于效率性和功能性。你可以在同一开发环境下很方便地查看Java、 HTML和JSP文件、建立Sun推出的新型JDK 1.3 HotSpot虚拟机(这种新型虚拟机优化了Java代码)。JBuilder具有了相当出色的响应界面。在多种令人注目的特性之后,我们特别喜欢方便的自动补充功能(auto-completion wizardry),该功能不仅支持即时帮助还支持键入JBuilder Enterprise版更提供了对Enterprise Java-Bean组件开发的支持。在Jbuilder中,可以更容易的创建(create)配置(deploy)企业JavaBean。提供了一系列的向导来进行创建,处理,配置企业JavaBean的流程。把IAS的配置描述编辑器集成到Jbuilder的开发环境中(不过,并没有把IAS4.1内置到Jbuilder4中,需要另外下载安装)。Jbuilder还支持BEA的WebLogic Server 5.1。

Jbuider4的一个新的特性就是EJB Group功能。每一个EJB Group都代表了一个可配置的JAR文件。通过EJB Group,可以对已有的EJB在EJB Group之间进行移植。一个project工程中可以有多个EJB Group。
Entity Bean Modeler可以创建一个映射到现存表的实体Entity Bean。可以产生所有必须的Java代码,更新EJBGroup中配置描述。
在Jbuilder中,可以:
1、用EJB 向导创建Session Bean和Entity Bean
2、用Entity Bean Modeler将Entity Bean映射到现有的table中。
3、通过EJB Group向导创建EJB Group。这样,就可以在一个应用程序里面放多个的Enterprise JavaBean。
4、可以将一个Enterprise JavaBean从一个EJB Group移植到另一个EJB Group
5、一个应用程序里面可以有多个的EJB Group。
6、用Make和Rebuild就可以自动的创建可配置的JAR文件。
7、可以在node viewer中查看JAR的内容。
8、通过Test Client wizard可以在本地的容器或者与EJB1.1兼容的应用服务器中测试Enterprise JavaBean。
9、运行或调式EJB的时候会自动的配置EJB。 JBuilder支持EJB 1.1,由于采用了灵活的XML解决方案,软件还准备支持EJB 2.0。目前用户可以自动地生成基于后端数据库表的EJB Java类。JBuilder同时还简化了EJB的自动部署功能。此外它还支持CORBA,相应的向导程序有助于用户全面地管理IDL(分布应用程序所必需的接口定义语言interface definition language)和控制远程对象。

JBuilder的本地开发依赖于软件中所包含的轻度Java数据库,这种数据库被叫做JDataStore。软件包含的JDataStore Explorer和JDBC Explorer 可以让用户管理JDataStore和任何遵守JDBC标准的数据源。增强了数据库工具功能,也更加容易使用了。
JdataStore:更快,更灵活了。其底层的连接池的性能有显著的提高。Jbuilder4对支持JTA的支持使JdataStore连接可以利用标准的XA接口参与分布式的事务处理。
JdataStore Explorer可以用图形化的界面创建和操作table。可以创建表的索引。现在JdataStore支持交叉连接,内连接,外连接,左,右连接。
在现在的发行版本中,是通过“natural”或 “using”关键字来指定连接的域。JdataStore现在也支持SQL-92的连接序列,支持分级的子查询

JBuilder 处理同时也建立在中间层的EJB之上的事务可谓得心应手。尽管用JBuilder创建默认的JSP非常容易,你还是可以用基本的HTML表单而不是WebSphere Studio中的工具来完成该项工作。JSP本身对JBuilder而言还是一种很新颖的技术,你可以用简单的JavaBean 技术来管理JavaServer Page。

JBuilder 4 Enterprise包含了300多种组件,其中,大多数组件都属于JavaBean和Swing控件,这对建立客户端小程序和独立运行的Java应用程序是很有用的。此外软件还包括16种名为InternetBeans的特殊控件。不过,这些控件都是专用于JSP和servlet的。这些组件封装了Web表单中采用的控件,其范围不仅包括了简单的按钮也包括表这样的高级特性。

这些对象都将HTML和后台的JSP/servlet代码分割开来,这样Web设计人员在无须Java程序员修改底层代码的情况下就可以单独修改HTML。这种解决方案对我们很有吸引力,有了它也就拥有了未来扩展的足够余地。事实上,同类组件还可以让用户生成用于无线设备的WML代码,你只需要将模版改为WML,这些InternetBeans就会动态地填充用于WAP设备的数据。在真实的应用环境中,我们完全可以采用自己喜欢的HTML工具从事HTML编辑工作。Jbuilder支持Web应用程序的开发,增加了对XML的支持,提供了更好的Servlet和JSP的支持。通过InternetBeans Express和一些组件,能够在Java和html之间进行无缝数据转换。 Jbuilder内置了Tomcat3.1,可以动态的调试Servlet和JSP程序。 每一个Servlet都有一个别名(Servlet-name)和init()初始化函数的参数,能够离开SHTML独立执行。  Jbuilder提供了增强的JSP支持,很容易的就可以直接调试JSP源代码。提供了XML的支持。能够简单快速的编写XML文件。XML关键字的高亮度显示很容易的对整个XML文件的结构了如指掌。 通过InternetBeans Express控件,可以动态的产生WEB页面的内容。

JBuilder还针对团队开发推出了CVS版本控制功能,该技术已经被我们的程序员用于建立测试应用程序。采用CVS,开发队伍就可以方便地跟踪项目开发全过程了。
工程文件(*.jpr和*.jpx)可以分为两部分,private和shared。Windows, watch, breakpoints保存在private私有部分,而libraries和编译选项保存在公有shared部分。

版本追踪和控制:Jbuilder4对每一个版本都提供更改的支持。要查看一个文件的版本信息,单击底部的histroy标签,里面有每个文件的历史修改记录。Jbuilder自动的保持着文件的备份。可以设定备份的个数。Histroy页面就用这些备份来管理着历史的修改记录。可以访问上一个版本文件。也可以查看两个版本之间做了哪些修改。Jbuilder4的企业版还提供了CVS(Concurrent Versions System并发版本系统)JBuilder漂亮的IDE环境充分展示了Inprise和Borland开发人员的一贯喜好,JBuilder将继续获得Java程序员的青睐。这一装备了获得好评的帮助程序和服务器端EJB工具的软件在总体水准上是一款相当成熟和优秀的Java开发环境。但是Jbuilder4也还是它的不足:

1. 和中文系统有冲突。至少和Win2000的中文系统有冲突,它的菜单总是触发中文输入条。
2. 速度不够快。还是要求高配置。
3. 由于需要Application Server,而且要求装在同一机器上,开发EJB要求的硬件环境太高
4. 缺乏WebGain Studio里的一些有用工具,如StructureBuilder。缺乏和Rose等工具的高效集成
5. 支持的工具,如版本控制的工具比较少

164月/080

JSP开发工具的选择(1)

发布在 邵珠庆

JSP引擎搭建起来后就可以着手使用开发工具进行JSP的编程了,现下流行的JSP开发工具主要有IBM VisualAge,JBuilder,NetBeans,JRun,Urledit,Dreamweaver,editplus等,这里我们主要介绍IBM VisualAge,JBuilder, Jrun三种工具的一些基本情况,大家可以参照其各自的特点,结合自身开发环境进行开发工具的选择。

IBM VisualAge for Java

IBM的Web开发产品可谓同类之中的庞然大物:体积庞大,功能众多;使用对象是整个开发团队;而设计目标则是搞定视野里能看到的一切!

IBM WebSphere软件平台(全套的集成电子商务解决方案,包括VisualAge for Java 1.2版)是电子商务应用构架的关键部分,该构架是IBM在同一编程模型上开发的统一的端对端体系结构。作为公共编程模型,EJB规范得到了行业范围内的广泛支持,它也是电子商务应用构架的集成部件模型。VisualAge for Java是提供了向导功能的第一个Java IDE,它可以生成大量的EJB基础结构代码,从而简化了EJB开发过程。另外,对话和实体beans的创建向导、把beans映射到现有关系数据存储以及先进的测试环境极大地减少了创建、测试和部署EJB所花的时间。

VisualAge for Java持续性工具能让开发人员把EJB映射到现有的关系数据库结构。利用对对话和实体beans(CMP)的支持,开发人员能从现有的数据库表生成EJB或从现有的EJB生成数据库结构。VisualAge for Java还能提供把对象模型映射到数据模型的手段,从而把数据库管理员和Java开发人员联系在一起。另外,VisualAge for Java 3.5版还支持IBM DB2 S/390和Sybase,以及支持IBM DB2通用数据库和Oracle。

如果在VisualAge for Java中主机运行IBM WebSphere测试环境(WTE),开发人员还能在把EJB和servlet部署到远程服务器前对它们进行预测试。由于开发人员能启动和停止服务器和应用程序,并能在VisualAge for Java IDE中任意改变应用,所以开发人员不必远程部署和测试代码,从而节省了大量时间。

生成测试客户机能让开发人员测试他们服务器端的EJB而无须编写一个用户界面或等待图形制作人员给出的强制性界面。另外,当用户界面完成时,它还能作为一个测试工具,决定问题是存在于应用程序的客户机部分还是服务器部分。

VisualAge for Java还简化了把EJB添加到现有应用程序中的过程。通过生成AccessBeans,VisualAge for Java隐藏了EJB的远程和本地接口并把它融合到JavaBeans编程模型中。这提供了到EJB的简化的JavaBeans接口,简化了企业beans与servlet或JSP间的编程接口,得到了所有Java开发人员的普遍认可。另外,AccessBeans引入了先进的EJB属性本地缓存功能,减少了远程调用的次数,提供了对EJB的快速访问能力。

现在,IBM为建设Web站点所推出的WebSphere Studio Advanced Edition及其包含的VisualAge for Java Professional Edition软件已全面转向以Java为中心,这样,Java开发人员对WebSphere全套工具的感觉或许会好了许多。Studio所提供的工具有:Web站点管理、快速开发 JDBC页向导程序、HTML编辑器和HTML语法检查等。这确实是个不错的HTML站点页面编辑环境。Studio和VisualAge集成度很高,菜单中提供了在两种软件包之间快速移动代码的选项。这就让使用Studio的Web页面设计人员和使用VisualAge的Java程序员可以相互交换文件、协同工作。

Studio提供了建立Java Server Page的完整前端开发环境。许多向导程序可以帮助用户以更快捷、更难以出错的方式实现特定的开发任务。比如说,SQL向导程序就可以让我们在测试所用的Oracle 8i 数据库中浏览各表、执行多种SQL任务(比如增加连接、限制带约束的查询以及在存储结果之前查看查询结果等等)。

IBM新增加的标签可以让JSP访问数据的工作变得更加方便,比如 <tsx:repeat> 标签就负责遍历查询中各行而无须增加处理数据库的Java代码。这些标签表明IBM正在逐步采用以标签为中心的数据访问解决方案(就象ColdFusion所采用的方案那样)。

在编辑页面的时候,我们面前有好几个工具可供选择,包括一个图形界面的所见即所得页面编辑器、一个可以显示页面层次结构的纲要视图以及HTML源代码编辑视图。不过我们发现这些编辑工具之间存在整合方面的一些问题,相比之下还是Dreamweaver 或者ColdFusion做得好一些。

Studio提供了代码补充特性,但是很令人失望??该特性只能用于VoiceXML文件,不能用于 HTML或者JSP文件。不过,它对VoiceXML和WML这样的Web技术,其支持力度还是处于市场领先的地位。

Studio和VisualAge都包括了JavaServer Page调试器。因为JavaServer Page在执行前采用预编译方式运行,所以IBM为其预编译表单所提供的页面调试方式值得关注,这种方式并没有在服务器上实际运行Java 源代码表单。有了VisualAge的Java Server Page调试器,我们就可以在页面调试的时候从输出窗口中查看HTML显示。不过在编译JavaServer Page之后,编译器的输出却只列出错误结果而不自动地标记那些出现错误的源代码。

VisualAge for Java支持团队开发,内置的代码库可以自动地根据我们做出改动而修改程序代码,这样我们就可以很方便地将目前代码和早期版本做出比较。Studio本身并不提供源代码版本管理的支持,它只是包含了一个内置文件锁定系统,当我们编辑项目文件的时候可以防止其他人对这些文件的错误修改。软件还支持诸如Microsoft Visual SourceSafe这样的第三方源代码控制系统。因为Studio对多服务器和多阶段项目部署都提供了完整的可定置支持,所以开发完应用程序之后,在测试服务器和产品服务器上的应用部署都很快。

WebSphere Studio Advanced Edition 3.5 和VisualAge for Java Enterprise Edition 3.5对开发团队而言都是可供选择的优秀开发环境,他们提供了对单一项目下多个开发人员的内置支持。但是这两套产品的界面和编辑缺陷使得IBM产品成为最佳开发包的努力功亏一篑。

114月/080

Oracle、MySQL和PostgreSQL的功能比较

发布在 邵珠庆

本文在安全、触发器、视图、物化视图和存储过程方面对OracleMySQL和PostgreSQL进行了比较……
【IT专家网独家】随着现代数据库中可以被使用的功能的蓬勃发展,已经很难将它们从数据库中分离出来。例如在Oracle中有许多高级的数据仓库功能,这些功能你可能永远都不需要。此外,还可能有一些其它的功能例如你不能没有的ACID遵从性事务。我们将介绍主要的功能,例如存储过程、视图、快照、表数据类型、事务等等。我们将对比Postgresql、MySQL和Oracle,看哪些能够满足你的需要。

  存储过程

  有人支持、也有人反对在数据库中保存应用程序代码。在这个问题上我保持基本公正的态度,所以我会试着从双方来讨论。当你开始将应用程序代码放置到数据库中时,你就变得极其不轻便。在你将你的应用转向另一个数据库时,这个代码将会被重写。但是它放置在数据库上意味着它还可以充分利用和紧密连接这个引擎。在某些情况下在数据库中存储代码可以显著的提高速度。比如你在对数据进行了某些策略后需要更新百万行的数据中的绝大部分。

  在一个存储过程中数据是在一步中被读取、操纵和更新的。而如果你在应用程序代码的中间层做相同的操作,那么你需要将数据通过网络传送过去,进行操作和将它发送回来。这不只会减慢这一个任务,其它在竞争和它使用的相同的数据的操作很可能就要等待了,因为这个数据处于传送过程中,而且将被执行操作。此外,存储过程的代码可以提供服务对特定的请求进行封装,这对简化你的整个应用程序来说是非常宝贵的。这三个数据库都支持存储过程和函数。Oracle还支持存储过程的包或集合,还包括各种面向对象的功能,这些功能几乎没有人使用过。一个数据库引擎实际上在存储过程和内嵌在那里的SQL代码之间进行上下文切换。在9i中,Oracle推出了批量绑定,这样你就可以对行的大型集合进行操作,并一次就更新整个集合,而不是在每个循环迭代中进行更新。这个功能甚至还可以非常显著的进一步提高性能。

  视图

  视图是基本的存储查询,正因为如此,它执行起来不是特别复杂。然而在查询中使用视图时,它们必定会使查询更加复杂。所以很明显,使用数据库中的视图之前,要更新子查询。Oracle显然提供视图有段时间了。在MySQL5.0中,也支持视图了。像Oracle一样,MySQL也支持UPDATEABLE视图,不过有些限制。Postgres也支持视图和UPDATEABLE视图。详见复杂SQL那一节。

  物化视图(快照)

  物化视图在Oracle中默认模式下支持的很好。作为回顾,记住一个物化视图(我更喜欢更加形象的术语“快照”,我离题了)是一个定期更新的拷贝或是一个表的子集。想象一个视图使用它的查询填充一个镜像拷贝。直到下一次刷新,这个拷贝是静态的,不随主本的更新而更新。通常会在更新的频率和支持它的处理日志(很像一个索引)的维护间做个权衡。名义上,MySQL和Postgresql不支持物化视图,但是在网上有这个的实现,它可以满足你的需求,如果你采用这个方法,你还需要一些支持。用一个存储过程创建物化视图,而另一个刷新它。大致上是CREATE TABLE my_copy AS SELECT。。。

  语言集成

  今天,基于web 的应用程序编程真的是一个平等的世界。几乎所有流行的web 语言都支持所有的数据库类型。JavaPHP、Perl、Python、C#/.NET 等等。这世界让你随心所欲。

  触发器

  MySQL、Oracle和Postgres都在INSERT、UPDATE和DELETE上支持BEFORE & AFTER事件触发器。我个人偏向于除非绝对必要,不然不使用触发器。它们正在逐渐被遗忘,但有时又会出现给你制造麻烦。不过如果谨慎的使用它们,它们会是很有用的。

  安全

  所有这三个数据库都有它们的漏洞。软件中有地方隐藏着错误真的是很正常的。而且,这三个数据库都有定期发布的更新补丁。不过我个人觉得,开源意味着必定有更多的眼光,而通常是批评的眼光在看待这个代码。而且,在开源世界里,社会压力要大的多。在商业领域,当修复比所知的等待修复的成本更昂贵的时候,供应商可能、并通常会加快速度。

  在数据库中的安全方面,这三个数据库都采用密码登录和在数据库中对各种类型进行加密。Oracle最近提供了一个叫做虚拟专用数据库(virtual private database)的功能,在它里面数据表的某些部分和字段可以被加密,并隐藏起来不被看到。这对于数据库管理员和其他管理员不应该有权限访问的有争议的或敏感数据来说,非常有用。

  总结

  我们这三个数据库平台很显然有很多功能,和用于相同问题的不同解决方法。在安全、触发器、视图、物化视图和存储过程方面,它们提供了许多相同的功能性,尽管在性能和可配置性方面不尽相同。在第二部分我们将讨论在索引方面这些数据库真正开始显著不同的一些地方,不过可能最重要的是在它们的优化引擎方面。

  【IT专家网独家】在我们的数据库比较的上一节中,我们介绍了各种知识例如触发器、视图和存储过程。尽管在Oracle、Postgresql和MySQL数据库中的功能设置肯定是各不相同的,但是这些内容已经可以满足你的大多数日常所需了。在这一节,我们将介绍一些关于平台间在处理复杂SQL和优化选择方面的不同,这些不同更加显著,也更加重要。

  复杂SQL(优化引擎)

  SQL是你与你的数据库交互的基础和最关键的方法,无论你选择哪个。这三个平台也恰恰是从它开始真正分离。Oracle支持非常复杂的查询、几乎不限制表的个数、所有的类型的连接和合并。虽然Oracle有很多功能,但是它真正宝贵的却是它基于成本的优化器,它可以分析SQL、如果可能的话进行重写和简化、基于成本选择索引、决定对表的操作和它之中的所有其它的各种功能。

  阅读MySQL的文档,你会发现对偏向于性能的描述和供应商定义的细节使优化器和性能调整在任何平台上都很复杂。MySQL规定的最大规模是在任何连接或在一个视图中表的最大数目为61个。再一次的,我个人觉得无论如何在任何一个应用中这么多表的一个查询将是难以使用的,所以正如上面提到的,目前更适用的是优化器而不是查询最大表规格,等等。

  8.x版本的Postgresql支持所有SQL92规范,几乎没有任何限制。再一次的,我认为你会看到的一个数据库优于其它的数据库的方面就是在优化方面。复杂的查询会变得凌乱,并且查询计划是你在诊断性能瓶颈时的最好的朋友。

  索引类型

  索引技术对于数据库性能是至关重要的,而Oracle有大量的选项可供选择。有非常多的不同的索引类型,包括标准的二进制树、转换键的、基于功能的、常被错误使用的位图索引,甚至还有索引表。随着附加项技术的发展,数据库管理员有了可用的提供索引的Oracle文本,它允许你搜索CLOB(字符大对象),并且Oracle Spatial提供用于基于位置的数据的索引。

  在MySQL中,我们发现有二进制树、哈希、纯文本和GIS索引(对于基于位置的数据)。还有集群索引,但是如果说我在Oracle方面的经验给我任何指导的话,那么就是大多数应用通常是不相关的。因此,大多数情况下我在Oracle、MySQL或Postgres应用中看到的只有二进制树索引。另外,尽管像在MySQL中基于功能的索引是不可用的,但是他们可以通过创建另一个保存使用这个函数的数据的列来进行模拟,然后添加一个触发器来将安装它。

  Postgresql提供二进制树和哈希,还有R树,和它自己定制的GiST索引类型,GiST索引类型允许使用用户定义的类型和允许创建基于功能的索引。Oracle提供了一个类似的功能性类型,它的基于功能的索引可以用于基于pl/sql的功能而不只是标准的预定义系统功能,例如你本来可能会使用的trunc、UPPER。要小心像这样的索引可能访问起来非常缓慢,你可能在谈论到要录入或移除数据时,甚至不希望听到“慢”这个词。

  它确实实现了,并且优化器选择索引的方式优于Oracle

  审计

  Oracle使你可以对一个表或一个文件进行审计,通过审查索引工具。一旦允许了,你可以审查对某一个表的插入、更新或删除,或者登录,或甚至是某一特定用户的所有访问。它有许多选项,并且设置为可用的是非常简单的。

  Postgresql也有这个功能,并且它看起来和Oracle的一样灵活和可配置的。

  另一方面MySQL看起来没有提供这个功能,但是你当然可以创建你自己的存储过程和触发器来做你想做的,并录入相关的信息到数据表里,这只需要一点额外的工作。

  数据类型

  Oracle、MySQL和Postgresql都支持最大达到4GB的大型的二进制和文本数据。我们所知道并喜欢的所有的数据类型也是非常有用的,例如数字、字符和日期。每一个都在一定程度上提供一些定制数据类型,尽管我很少看到在应用中使用这些。

  现在我要讲的一件事是Postgresql和MySQL已经超过了过去的基础,不用担心它们实现我们经常使用的一个良好的自增长列类型。Oracle的争论是按顺序来做这项工作更加有效,但是是静态的。Oracle也没有SET数据类型,这个数据类型很重要。它也没有只有时间的时间数据类型,这个数据类型Postgresql和MySQL都有。但是你会发现你能在这三个数据库品平台上做所有你想做的关于日期和时间的操作,从对时区的操作到对间隔的处理,等等。

  另外一个我喜欢Postgresql和MySQL的理由是它们支持各种优秀的数学数字类型,从smallint到decimal、real、double,等等。这些利用了基本的架构实现,与编程语言中可用的数据类型相匹配,例如C语言

  对事务的支持

  在数据库领域,适当的事务操作遵守了acronym到ACID,这意味着原子性、一致性、隔离性和持久性。原子性意思是一个事务是一个完整的单元,所有都被提交或所有都被回滚。一致性意思是你从一个*VALID*状态转移到另一个,例如你执行适当的约束来加强业务逻辑。隔离性意思是一个事务不能看到另一个事务在做什么,直到它完成了(提交了)。持久性意思是一旦提交了,这个变更就是永久的,并且是防止你硬盘失败的*至关重要的*。

  关于这个问题我有一些事情要说,希望能够避免争论。我看到像“任何企业级应用绝不会使用一个没有实现完全的ACID遵从性的数据库,而且非事务型的表是完全没有用的”这样的说法已经消失了。这些都是愚蠢的说法。例如,Oracle在它的数据字典中的它本身的性能视图就不是事务型的。其次,它们在那个环境中根本没有必要。有许多应用是这样的。我看过一个航空票务系统,它需要定期升级和添加第二个服务器用于放置Oracle。他们看了这个软件的所有相关的许可成本和大型设备的硬件成本。然后他们回头看这个应用。有些人正确的认识到在航空网站上90%的操作是浏览航班(只读),而仅仅10%才是真正的购买机票。所以,他们建立了一组低成本的MySQL服务器用于浏览航班,而变更旅程请求则提交给大型的Oracle服务器来执行票务操作。多么好的一个结合解决方案!

  是的,MySQL在事务方面的InnoDB表方面已经走了很长一段路。这也许可以解释为什么Oracle购买Innobase。一些人仍然认为MySQL只是一个用于LDAP或NFS的SQL接口。但是,MySQL确实走了很长的路并且将继续挑战反对它的人。

  在这点上Postgresql更完整,所以我会说你能看到的主要是和Oracle的性能方面的不同,这就是它的问题。

  总结

  正如你在我们的数据库平台的多个部分中看到的,选择一个数据库平台时要考虑很多事情。从功能完整性,到供应商支持和共同支持,到性能和优化。在你充分了解你在构建的应用和它真正需要什么之前,不要投资过多。到了最后你可能觉得这些比较模糊,并且难以确定,但是有了一点创造性,仔细思考这个主题,并且拥有一个好的开发环境,你就应该能够得出一个成本高效并强大的解决方案来。

54月/080

北京玉渊潭公园第二十届樱花节

发布在 邵珠庆

北京玉渊潭公园第二十届樱花节将于3月26日开幕,并持续到4月30日。期间市民将能欣赏到今20个品种,约2000多株樱花组成的“在水一方”、“樱棠春晓”等樱花八景。

活动期间,玉渊潭公园开闭园时间为早6点至晚8点30分。公园成人票上调至10元每人次,学生半价。年、季、月票周一至周五有效,周六日上午9点前、下午4点后有效。

此外,玉渊潭公园樱花园升级改造工程昨天完工,市民可漫步在5000平方米的樱花大道上观赏樱花.

54月/080

Tomcat全攻略

发布在 邵珠庆

随着java的流行,其在web上的应用也越来越广,tomcat作为一个开源的servlet容器,应用前景越来越广,本文将向你讲述tomcat的一些知识。

一:简介
tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的Java产品(Most Innovative
Java Product),同时它又是sun公司官方推荐的servlet和jsp容器(具体可以见http://java.sun.com/products/jsp/tomcat/),因此其越来越多的受到软件公司和开发人员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。

二:安装及配置
tomcat最新版本为4.0.1,这个版本用了一个新的servlet容器Catalina,完整的实现了servlet2.3和jsp1.2规范。注意安装之前你的系统必须安装了jdk1.2以上版本。

(一):安装
1:windows平台
从tomcat网站下载jakarta-tomcat-4.0.1.exe,按照一般的windows程序安装步骤即可安装好tomcat,安装时它会自动寻找你的jdk和jre的位置。

2:Linux平台

下载jakarta-tomcat-4.0.1.tar.gz,将其解压到一个目录。

 

(二):配置
运行tomcat需要设置JAVA_HOME变量

set JAVA_HOME=c:/jdk (win98,在msdos方式下使用,或者放入autoexec.bat中)
export JAVA_HOME=/usr/local/jdk (linux下使用,放到/etc/bashrc或者/etc/profile中)

(三):运行
设置完毕后就可以运行tomcat服务器了,进入tomcat的bin目录,win98下用startup启动tomcat,linux下用startup.sh,相应的关闭tomcat的命令为shutdown和shutdown.sh。

启动后可以在浏览器中输入http://localhost:8080/测试,由于tomcat本身具有web服务器的功能,因此我们不必安装apache,当然其也可以与apache集成到一起,下面会介绍。

下面你可以测试其自带的jsp和servlet示例。

 

三:应用

(一):目录结构
tomcat的目录结构如下:

目录名 简介
bin 存放启动和关闭tomcat脚本
conf 包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml
work 存放jsp编译后产生的class文件
webapp 存放应用程序示例,以后你要部署的应用程序也要放到此目录
logs 存放日志文件
lib/japser/common 这三个目录主要存放tomcat所需的jar文件


(二):server.xml配置简介

下面我们将讲述这个文件中的基本配置信息,更具体的配置信息见tomcat的文档

元素名 属性 解释
server port 指定一个端口,这个端口负责监听关闭tomcat的请求
shutdown 指定向端口发送的命令字符串
service name 指定service的名字
Connector

(表示客户端和service之间的连接)

port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求
minProcessors 服务器启动时创建的处理请求的线程数
maxProcessors 最大可以创建的处理请求的线程数
enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
connectionTimeout 指定超时的时间数(以毫秒为单位)
Engine

(表示指定service中的请求处理机,接收和处理来自Connector的请求)

defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
Context

(表示一个web应用程序,通常为WAR文件,关于WAR的具体信息见servlet规范)

docBase 应用程序的路径或者是WAR文件存放的路径
path 表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
reloadable 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序
appBase 应用程序基本目录,即存放应用程序的目录
unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
Logger

(表示日志,调试和错误信息)

className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口
prefix 指定log文件的前缀
suffix 指定log文件的后缀
timestamp 如果为true,则log文件名中要加入时间,如下例:localhost_log.2001-10-04.txt
Realm

(表示存放用户名,密码及role的数据库)

className 指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口
Valve

(功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样)

className 指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息
directory 指定log文件存放的位置
pattern 有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多

注意:1:经过我测试,我设置Context 的path="",reloadable=true,然后放一个WAR文件到webapps目录,结果tomcat不能检测出此文件(重起tomcat可以),而把此文件解压,则tomcat会自动检测出这个新的应用程序。如果不能自动检测WAR文件,我们可以利用下面管理中讲的方法来部署应用程序。

2:默认的server.xml中,Realm元素只设置了一个className属性,但此文件中也包含几个通过JDBC连接到数据库进行验证的示例(被注释掉了),通过Realm元素我们可以实现容器安全管理(Container
Managed Security)。

3:还有一些元素我们没有介绍,如Parameter,loader,你可以通过tomcat的文档获取这些元素的信息。

 

(三):管理

1:配置

在进行具体的管理之前,我们先给tomcat添加一个用户,使这个用户有权限来进行管理。

打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:


  

注意:这一行的最后部分一定是/>,tomcat的文档掉了/符号,如果没有/符号的话,tomcat重起时将无法访问应用程序。通过logs/catalina.out文件你可以看到这个错误的详细信息。

然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户名和密码即可。

 

2:应用程序列表

在浏览器中输入http://localhost:8080/manager/list,浏览器将会显示如下的信息:

OK - Listed applications for virtual host localhost
/ex:running:1
/examples:running:1
/webdav:running:0
/tomcat-docs:running:0
/manager:running:0
/:running:0 

面的信息分别为应用程序的路径,当前状态(running 或者stopped),与这个程序相连的session数。

3:重新装载应用程序
在浏览器中输入 http://localhost:8080/manager/reload?path=/examples,浏览器显示如下:

OK - Reloaded application at context path /examples  

表示example应用程序装载成功,如果我们将server.xml的Context元素的reloadable属性设为true(见上面表格),则没必要利用这种方式重新装载应用程序,因为tomcat会自动装载。

4:显示session信息
在浏览器中输入http://localhost:8080/manager/sessions?path=/examples,浏览器显示如下:

OK - Session information for application at context path /examples Default maximum session inactive interval 30 minutes  


5:启动和关闭应用程序

在浏览器中输入http://localhost:8080/manager/start?path=/examples和http://localhost:8080/manager/stop?path=/examples分别启动和关闭examples应用程序。

6:部署及撤销部署
WAR有两种组织方式,一种是按一定的目录结构组织文件,一种是一个后缀为WAR的压缩包,因此它的部署方式也有两种:
(1):在浏览器中输入:http://localhost:8080/manager/install?path=/examples&war=file:/c:examples
就会将按目录结构组织的WAR部署

(2):如果输入:http://localhost:8080/manager/install?path=/examples&war=jar:file:/c:examples.war!/
就会将按压缩包组织的WAR部署,注意此url后半部分一定要有!/号。

部署后就可以用 http://localhost:8080/examples访问了。

在浏览器中输入:http://localhost:8080/manager/remove?path=/examples
就会撤销刚才部署的应用程序。

(四):与apache集成
虽然tomcat也可以作web服务器,但其处理静态html的速度比不上apache,且其作为web服务器的功能远不如apache,因此我们想把apache和tomcat集成起来。

我们以linux系统为例介绍.

从apache网站下载apache1.3.22源代码版本,然后使用如下命令配置安装apache:

mkdir /usr/local/apache
tar zxvf apache.1.32.tar.gz
cd apache.1.32
./configure --prefix=/usr/local/apache --enable-module=so 
make
make install

注意configure命令制定目标安装目录,并且加入DSO(Dynamic Shared Object)支持,注意一定不要忘了这一个选项。

然后下载webapp模块,将解压后mod_webapp.so文件放入apache的libexec目录,编辑apache的conf目录下的httpd.conf,在这个文件的最后加入下面三行:

LoadModule webapp_module libexec/mod_webapp.so
WebAppConnection warpConnection warp localhost:8008
WebAppDeploy examples warpConnection /examples/ 

第一行是加入webapp模块,如果编译apache时不增加DSO支持,则无法使用LoadModule指令,第二行指定tomcat与apache的连接,第三行指定部署那个应用,这两个指令使用格式如下:

WebAppConnection [connection name] [provider] [host:port]
WebAppDeploy [application name] [connection name] [url path]  

其中connection name指定连接名,provider只能是warp,port端口与你的tomcat的配置文件server.xml最后几行制定的要保持一致。文件如下:

port="8008" minProcessors="5" maxProcessors="75"
enableLookups="true"
acceptCount="10" debug="0"/>
******

application name与你在tomcat中部署的应用名一致,url path指定访问这个应用的url。例如上面的例子可以通过http://localhost/examples/来访问tomcat中的examples应用。

(五):中文问题

一般jsp的乱码问题可以通过在jsp中加入来解决,至于servlet的乱码在可以使用servlet2.3中提供的HttpServeletRequest.setCharacterEncoding函数。更详细的中文问题请见JSP/Servlet
中的汉字编码问题

四:综述

tomcat作为一个servlet(jsp也被编译为servlet执行)容器,其应用前景是非常好的,如果与jboss结合起来,则可以实现sun的j2ee规范(用jboss作ejb服务器)。jboss的官方网站也提供集成了tomcat3.2*的jboss以供下载。另外一个开源的应用服务器(enhydra)
也是基于tomcat的,其提供了更友好的管理界面,部署应用程序也更简单,功能也更强大。

   下一页