作为咨询师,我在许多不同的软件公司工作过,看到人们一次又一次地重复实现相同的代码,我越来越感到枯燥。我认为一定存在一种编写商业应用程序的方法,这种方法应该比在每个项目里重复使用安全框架和远程访问框架更好、更快。重复编码是面向对象编程的魅力所在,这个说法对吗? 我从2001年就开始使用WebSphere--它使我掌握了更多J2EE规范。关于标准的知识是可以通用的,这个想法令我格外兴奋。我到各家使用J2EE应用服务器的公司工作时,只需将精力投入到业务代码的学习和编写上,而无须花大量的时间来做一些琐碎的事,如自己编写框架,最终事倍功半,并且学无所成,因此掌握可融会贯通的知识对于咨询师至关重要。 我曾试图自己在家研究WebSphere,但是发现缺少项目和代码透明度,这让人很沮丧。我又学习了JBoss,花了大量的时间学习研究EJB、JNDI、安全性和类加载等。尽管早就用过开放源码框架,但那时我从未浏览过论坛和代码来学习并讨论过框架。过去,我利用了免费的开放源码,不是对其进行发布、检查、改进和修改的自由,后来我才开始了解到这种模型的好处。 2002年,我开始利用JBoss完成一些项目,2004年写了JBoss的一些相关文章。然后在2005年年底时,几乎同时发生了两件有趣的事情。第一件事情是我所工作的咨询培训公司成为JBoss的合作伙伴(在它被Red Hat收购之前),并且邀请我担任合伙企业的负责人并开始讲授JBoss课程。第二件事情是我接到了Manning出版社的一位组稿编辑的电话,询问我是否知道有谁对写书感兴趣。她浏览了我写的关于JBoss的所有文章,认为我应该是很好的询问对象。当时我觉得写书就像写一系列技术文章一样简单,因此就毛遂自荐。然后经过一番游说,我终于得到了这份工作。 当时,我必须确定这本书介绍的内容以及面向的读者对象。我读过很多有关JBoss AS的文档和书籍,尽管JBoss AS代码和文档的开放性非常值得欣赏,但是它们的风格、质量和预期的读者却不能尽如人意。大多数文档看起来非常晦涩难懂,并且(个人观点)过于针对这种应用服务器的开发人员,却没有考虑它的用户。但是我也不希望再写一本如何开发Java EE应用程序的书。从与应用服务器无关的角度编写的书和文章已经很多了。我不觉得再写一本介绍规范,其中混杂JBoss AS琐碎内容的书会有什么意义。因此,我最终确定该书的读者应该是那些希望学习如何配置这种应用服务器的开发人员和管理人员。 确定了读者对象之后,我就开始思考该介绍哪个软件版本。刚开始着手写书的时候,JBoss AS 4已经得到广泛的部署,但是因为JBoss AS 5原计划在2006年就要发布了,因此我选择介绍JBoss AS 5,这样不可能书一出版,内容就过时了。 相对而言,确定书所面向的读者对象以及要介绍的软件版本还是比较容易的。写书才是一项艰巨的工作!为了写出一本内容较为全面的书,不得不了解应用服务器的方方面面,这令我颇为头疼。一台应用服务器就像是一个宇宙,很少人能够洞悉宇宙的所有奥秘。尽管我对关于JBoss的很多知识都非常了解,但是很快意识到学无止境这个道理。另一个颇具挑战性的问题是在我概述JBoss AS 5时,这款软件还正处于开发阶段。每当我觉得自己刚刚琢磨出些结论时,它又被修改了,结果在试用版中的软件故障上耗费了大量时间,同时我还必须常常查看开发人员的论坛,密切关注设计方面的讨论。 到了2006年7月,我发现自己已经不堪重负了。不过,还是认为JBoss AS 5的发布日期很快就会到来,因此我告诉Manning出版社想要找帮手来帮助我如期完稿。我联系每一个认识的人,还搜遍JBoss论坛,试图找到这么一个人。有几个合适人选跳入我的眼帘,不过其中最令人印象深刻的是Peter Johnson。我看到他在论坛上回答了一个又一个问题。他提供了详尽的解释,给出了许多参考和背景知识,而且描绘得绘声绘色。 在和Peter交谈之后,我发现他在JBoss AS上的学识颇深。他在Unisys公司工作,这家公司在JBoss AS 3.2.3推出之后成为JBoss的合作伙伴。他在这家公司里是一个团队的技术负责人,该团队评估JBoss的使用企业是否准备就绪。JBoss缺少良好的管理界面是他所担心的问题之一,于是,他特别担任了开发管理控制台团队的组长。Unisys公司将这个控制台作为开放源码,并且将其用于JBoss AS 2.2.7~4.2.3版本。他和他的一些同事还与JBoss管理控制台团队合作,开发本来将随JBoss AS 5一同推出的管理控制台,不过后来为了嵌入式Jopr而将它舍弃了。 Unisys公司作为开源社区里的良好合作伙伴--不仅索取,还有奉献--允许Peter和他的同事采用多种方式进行参与,例如,提供补丁以改进JBoss As和PostgreSQL的性能。Peter曾经当过老师,他知道学习新知识的最好办法就是试着解答他人的疑问。因此,他活跃在论坛里,查看别人提出的各种各样的问题,绞尽脑汁想出解决办法,然后把他觉得有帮助或者有见解的答案在线发布。他通过积极参与论坛活动,做到一举两得:回馈开源社区,加深对JBoss AS的理解。 Peter对加入这个项目感到非常兴奋,并且我们几乎对任何问题都能达成一致意见。我们对读者对象和这本书的方向有着相同的视角,而且他立刻就全身心投入到写书当中,完成一章又一章的稿子,还对我已经完成的那部分文稿提出了很多宝贵意见。 我讲授JBoss课程的背景,加上Peter在网络论坛里的辛勤耕耘,让我们对许多常见问题都有丰富的经验。我们确定将这本书的重点放在JBoss AS初级和中级用户在配置过程中遇到的最常见问题上。基本上每一章都会先介绍背景知识,然后介绍该章所涉及的有关应用服务器基本配置方面的具体内容。 至于JBoss AS 5,它的发布日期不断延迟。这次发布十分令人期待,因为应用服务器会在架构和基础设施上做出许多重大改变。2008年12月,我在写这篇前言的时候,刚发布了JBoss AS 5的GA版本,当时预期2009年1月发布最终版本,正好与这本书的美国印刷版同步。我和Peter为了这个项目付出了长期而艰辛的努力,希望读者可以从本书中找到大多数基础问题的答案,对于那些没有答案的问题,也希望读者在学习这本书的过程当中,自己摸索出答案来。 Javid Jamae