说到服务器,大家最熟悉的可能就是apache的tomcat,这个流行的web容器。对于大型的,支持N多JAVAEE规范的应用服务器,比如:商用的websphere,weblogic,borland appserver,apusic;以及开源的glassfish,jboss,geronimo等等。大多数人可能有使用经验,而且绝大部分人是用安装包进行安装的。你是否想过,从源代码自己build出一个应用服务器来?修改一些核心代码?深入研究一下JAVAEE服务器启动时到底做了什么? 这些,也许你都想过,但是可能你觉得好复杂,所以就放弃了你这个非常好的想法。
你是否经常问自己,什么时JAVAEE,JAVAEE应用服务器又是什么东西?
其实,JAVAEE应用服务器不是那么高不可攀。建议你像笔者一样,采用循序渐进,一点点的去接触代码,不要急于求成。你定能通过自己的努力,驾御应用服务器。从这里开始启航,以glassfish(这里选用v2.1.1版本)为对象,开启你研究应用服务器底层实现的大门。
Long story short,开始吧!
前言:本章给出的步骤,也许不是唯一的,比如说代码的下载,用svn和cvs都可以。如果你是新手,那么还是按照笔者的步骤做。
环境准备篇开始:
1,工具准备
1.1,如果用eclipse的cvs插件的话,请略过这一步。cvsnt:用于从glassfish的cvs库里下载代码,如果你有csdn帐号,那就到我的资源库下载(我刚才上传了的,但是现在一直刷新不出来,所以URL暂时提供不了,重新上传又提示“已经上传过”,等你看到这篇东西的时候应该可以看到了)。如果没有,那你就baidu吧,随便都能找到。
1.2,ant,到http://archive.apache.org/dist/ant/binaries/apache-ant-1.6.5-bin.zip,高版本也可以。
1.3,maven,http://archive.apache.org/dist/maven/binaries/maven-1.0.2.zip,这个没的选择,只能用1.0.2版本
安装之后请保证以上工具的bin路径在你OS的path环境变量中。
2,代码下载
2.1,新建一个根目录,比如d://appserver,注意:以下所有操作的路径都基于此路径
2.2,glassfish/bootstrap:此模块是下载其他代码和build的根基。在appserver目录下运行[cvs -d :pserver:guest@cvs.dev.java.net:/cvs checkout -r SJSAS91_FCS_BRANCH glassfish/bootstrap]就可以下载。
这里选择SJSAS91_FCS_BRANCH分支就可以,尽管这不是目前最新的,但是对于学习来说已经足够。
此外,可以使用eclipse的cvs工具去下载,还可以选择另外一个分支【SGES211_FCS_BRANCH】
2.3,下载所有源代码:2.2之后,需要修改一下appserver/glassfish/bootstrap/build.properties
glassfish.os.name=WINNT
glassfish.cvs.username=guest
[glassfish.os.name的值根据你自己的系统而定:WINNT, SunOS, Linux, SunOS_X86, Darwin]
设置好之后,cd appserver/glassfish/bootstrap,运行[maven checkout],取决于你机器的网速,这个过程会比较长。
2010-09-29 add 【现在checkout时下载一些jar包或者源代码的时候,以前的URL(http://download.java.net)已经过期,如果checkout失败,glassfish/bootstrap/project.properties文件中的相应URL应该修改为http://dlc.sun.com.edgesuite.net。已经给glassfish社区发邮件,不知道他们何时更新CVS。】
这步操作完了之后,你会在appserver/glassfish下看到很多模块,比如admin-cli,这个就是命令行代码。
你要是着急了,可以顺便看看里面的代码和build脚本,但是现在可能你看了也是一头雾水。
3,开始build
还是cd appserver/glassfish/bootstrap
3.1,bootstrap-all:运行[maven bootstrap-all],这一步主要是从glassfish官网下载一些依赖组件(比如openmq,openesb等)和解压缩这些组件。至于从那里下载:你看一下appserver/glassfish/bootstrap/project.properties中的repo.remote*就知道了。下载的所有组件都保存在appserver/glassfish_dependencies下,你也可以去看看.这一步完成之后,你还会看到多了appserver/publish/glassfish目录,这里面有刚才提到的openmq目录等。
3.2,正式build:运行[maven build],这一步主要是分别调用,appserver/glassfish下的所有模块的build脚本。该打包的打包,该直接copy的就直接copy。这一步完成之后,你会在appserver/publish/glassfish/lib下看到很多jar,其他的目录也多了一些文件。
3.3,创建domain:domain是应用服务器中一个重要的概念,这里就不赘述了,自己baidu去吧。运行[maven configure-runtime]或者[maven configure-cluster],这里建议运行后者,因为集群是v2的新特性。再说了,集群也是企业级应用的必备。这一步完了之后,你会看到appserver/publish/glassfish/domains/domain1目录,自己想看就看吧,里面很多配置文件,比如最最最重要的config/domain.xml文件。
4,运行domain(开始享受)
以下操作需要cd appserver/publish/glassfish/bin
4.1,启动domain:[asadmin start-domain domain1],就会看到控制台的提示信息,如果你看到如下信息,那么恭喜你!
Domain listens on at least following ports for connections:
[8080 8181 4848 3700 3820 3920 8686 ].
4.2,运行控制台(看看你辛苦一天的可视化效果):打开ie, http://localhost:4848,之后用admin/adminadmin登陆,你将会看到很多在后台运行的glassfish服务和模块的配置。自己瞎点瞎看吧!只要在感性上有点认识就可以了。
4.3,你应该累了,asadmin stop-domain domain1之后休息去吧,要慢慢来,心急吃不了热豆腐。
5,下载glassfish文档:
去http://docs.sun.com/app/docs/coll/1343.11 把所有glassfish的文档下载下来。
如果你现在还不累,那么就研究文档吧。
你现在应该做的就是:
=======看文档,至少把glassfish用熟了。你用熟了之后,以后对于代码的学习,架构的学习就会有大很大的帮助。
=======好戏才刚刚开始,请期待我之后的“杰作”,哈哈!
=======遇到任何问题可以msn或者邮件:xuqingkang2@163.com