weblogic下ant 的使用

来源:百度文库 编辑:神马文学网 时间:2024/05/23 14:14:30
weblogic下ant 的使用
2005/03/01  作者:yonge   心情:  星期二 (10:09)
关于ant的好处,不多说,大家去http://ant.apache.org去看看就知道了。目前ant支持很多种语言,而且几乎所有的Java开发工具都提供了ant的支持。比如我用的最多的JBuilder和Eclipse都对ant提供了很好的支持。ant使用一个xml文件来描述需要做的事情,然后通过ant的工具包运行这个xml文件来实现我们需要实现的功能。一般情况下,这个xml文件取名叫build.xml。也可以是其它名字,但是必须要在编译的时候指定文件名。
ant功能非常强大,也是XP(极限编程)所推崇的一个工具。就我们用的最多的功能,就是编译.java文件,打包成.jar文件,编译EJB,生成war,生成ear,生成报告等等。前面几种功能用的非常多,但是生成报告和相应的xml/HTML文件报告的功能也是非常有好处的。但是本文不准备做这方面的介绍。(还记得吴忠宪的经典语录吧:“接下来大家一定以为我采访下一个小马,错~我要采访我们的吉他手,这才是我们节目的精髓,让你永远想不到我们要做什么(走到吉他手旁边)现在我站在吉他手旁边,(转向鼓手)那么请鼓手谈谈想法~~但是他的看法我们不care~~(然后走开)”)我们主要介绍前面说道的几种常用的命令。嘿嘿~
首先,需要说明一下build.xml文件的一些信息,build.xml文件是通过一系列的property、target、path等组织起来的。property可以用来保存一些常量信息,比如JAVA_HOME路径、BEA_HOME路径、src的路径、build的临时目录的路径等等。然后在其它地方使用${propertyName}的方式进行引用。这样就可以避免要修改一个路径需要通篇修改build.xml文件的问题。path是一些路径信息,比如我们可以指定编译我们的应用需要的一些jar包的位置信息,举例说明一下







这里,我把所有需要用来编译应用的包都放到一起,取名叫project.class.path,然后在编译的时候,提供给ant 命令当作参数来使用。最后一个就是target,一个target就是我们的一个目标,整个build.xml是由很多的target组织起来的,比如我们的init的target,我们的compile的target,比如我们的编译ejb的target,比如我们打包的ear的target等等。这些target之间可以存在一个依赖关系,也就是,一个target的执行,必须在另外一个target的执行之后,才能执行。比如

其意义是说,当前的target名字是clean,它的执行必须先执行名字叫cleanxml和cleanclass的target。关于其它更详细的信息,比如可以在一个xml中引用另一个xml文件等等,因为和我们介绍的内容关系不大,就不一一详细列举了。
可能我们在使用ant的时候,需要用到一些系统变量,比如我们设置的JAVA_HOME、PROJECT_HOME等等。如何在ant中得到这些内容呢?其实说穿了,so so eary。在你的build.xml文件中建立一个property就可以了。


OK,现在jdk.home的属性里边就保存了我们在系统中设置的JAVA_HOME的值了。是不是非常简单。
因为我们是要在weblogic下发布和运行我们的应用,所以这里需要得到weblogic的一些jar包的路径信息。

一.使用ant来编译.java文件,这是最常用的功能。





关于其中的javac命令和相应的属性意义,我们就不一一介绍了。当我们执行ant compile的时候,就会把src目录下的所有java文件编译成class文件,放到${dest}目录下。这里需要说明一点,如果你的应用中含有assert这种语句。那么一定要设定javac的属性source为1.4,否则会报错。错误信息如下:
warning: as of release 1.4, assert is a keyword, and may not be used as an identifier
其实在JBuilder9和Eclipse中,默认的编译选项都会存在这个问题。Eclipse中,我们只需要在Windows-preferences-java-compiler-compliance and classfiles下面,去掉Use defalut compliance settings前面的选择,然后在下面相应的选项中选择1.4就可以了。同理,在JBuider9中选中项目,然后右键选择属性,在其中有一个enable assert keyword,选中就可以了(JBuilderx还没有用过)
二.使用ant打包成jar文件
很多的时候,我们的应用都要打包进行发布,这样不至于源文件过于分散。打包的理由就不详细说明了。






这里需要说明一下,这里使用的zipfileset,主要是在程序打包的时候,把相应的包也一起打包成一个整体。一般情况下,这是不需要的,因为你所打包的东西是可以和别的jar包一起来使用运行。但是我发现,如果你使用了EJB,可能会有些麻烦。
举例来说,我的ejb文件中的打印信息,我都采用了log4j来处理。如果这里打包不包含这些jar包,那么编译后的ejb在执行的时候,会不停的抛出java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory,就算你吧相应的jar包都和所有的ejb包组合在一起打包成一个ear来执行都不行。非常奇怪,只能在初次打包的时候就加入进去,然后编译ejb,再执行。
三.使用ant编译基于Weblogic的ejb
在编译ejb之前,首先需要把相应的源文件先打包成一个临时的jar文件(执行二),要保证相应的xml文件都正确无误。xml文件主要包括ejb-jar.xml、weblogic-ejb-jar.xml、weblogic-cmp-rdbms-jar.xml、weblogic-cmp-extras.xml。后两个xml文件是在有cmp的情况下才使用的。关于这些文件的具体配置,在此不详述。













这其实是简单的通过java来调用Weblogic提供的一个编译ejb的程序,来编译并且打包我们的ejb应用。这里的classpath是我们在编译过程中,需要用到的jar包的集合。关于这个命令的详细的说明,大家可以参考bea文档库的说明。http://e-docs.bea.com/wls/docs81/ejb/appc_ejbc.html
这个命令通过简单的调用weblogic.appc和刚才编译好的temp.jar文件和一些配置来生成最终的ejb.jar文件。这一步就编译出来我们真正可以执行的ejb了。看来也很简单啊!
四.打包war应用
通过ant来打包war应用,可以使用ant提供的标准war命令来实现。



















































五.打包为ear
我们的应用都可以打包成一个ear文件。注意,需要提供一个application.xml文件。这里只是简单的举例说明,把ejb打包成一个ear,没有太大的实际意义。



Myapp

ejb.jar


相应的ant命令如下:




六.在WebLogic上发布和更新ejb
需要先说明一下,发布ejb和更新ejb的命令,ant的标准文档上提供了一个命令叫serverdeploy,他提供了一个专门针对weblogic的发布方法。同时,WebLogic也提供了一个服务weblogic.Deployer也可以用来发布更新和取消发布,很遗憾,我试用了一下,不好使,可能我使用的参数有问题,大家可以自行研究一下。
另外,如果应用是第一次发布,也就是说你的WebLogic上面还没有这个应用名字,可能需要使用deploy,而重新发布,必须使用update。我试用了一下,用undeploy,然后再用deploy好像会出问题。一直没有搞懂是怎么回事。


server="t3://localhost:7001"
classpath="${WebLogic}/weblogic.jar"
username="weblogic"
password="xxxxxxxx"
component="myejb:myserver"
debug="true"/>




server="t3://localhost:7001"
classpath="${WebLogic}/weblogic.jar"
username="weblogic"
password="xxxxxxxx"
component="myejb:myserver"
debug="true"/>


还需要说明一下,如果你在使用这两个命令,一定要注意修改用户名和密码,同时要修改server和component等参数。我曾经试过,把用户名和密码写在一个properties中,但是在发布和update的时候,总是提示认证不通过的问题,有谁知道,可以告诉我。
七.在WebLogic上发布和更新war
发布war和发布ejb基本上没有太大变化,只是修改一下source参数即可。
等我写完了,我才发现,这篇文章跟WebLogic没有太大关系,嘿嘿