首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>JAVA专区>JSP>Java使用ANT在线编译不用重启tomcat的实现方法
Java使用ANT在线编译不用重启tomcat的实现方法
来源: 发布时间:2008-04-18 发布人: 浏览: 人次   字体: [ ]  
在WEB应用中可通过ANT的API调用ant的工程配置文件来在线编译java文件,在工程配置文件中(如build.xml)将编译的class文件或者变更的xml文件直接复制到WEB-INF\classes中的对应目录,不用重新启动tomcat.

       由于在平台应用中经常由用户定义表结构,并由表结构生成java实体类和hibernate映射文件,通过热编译部署的方式 可不用停止WEB应用,下面是在Java中调用ant的代码,注意这种方式不是调用ant的批处理的,也不提倡这样做,下面的方式可使用户通过点击WEB页面上的按钮来调用ANT编译:

package org.apache.easframework.common;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;

public class CompileJava {

  public static synchronized boolean compile(String buildFilePath, String logFilePath) {
  File buildFile = new File(buildFilePath);
  Project project = new Project();

  DefaultLogger consoleLogger = new DefaultLogger();
  try {
   FileOutputStream fs = new FileOutputStream(logFilePath);
   PrintStream ps = new PrintStream(fs);
   consoleLogger.setErrorPrintStream(ps);
   consoleLogger.setOutputPrintStream(ps);
  } catch (FileNotFoundException e1) {

   e1.printStackTrace();
  }

  consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
  project.addBuildListener(consoleLogger);

  try {
   project.fireBuildStarted();
   project.init();
   ProjectHelper helper = ProjectHelper.getProjectHelper();
   helper.parse(project, buildFile);
            System.out.println("默认target:");
            System.out.println(project.getDefaultTarget());  //默认的target是help
   project.executeTarget("all");  //调用的task是all
   project.fireBuildFinished(null);
   return true;

  } catch (BuildException e) {
   project.fireBuildFinished(e);
   return false;
  } }
 
 public static String startCompile(String buildFile,String logFile)
 {
  if(CompileJava.compile(buildFile, logFile))
  {
   return "编译成功!";
  }
  else
  {
   return "编译失败!";
  }
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  System.out.println("开始编译...");
   
  boolean b = CompileJava.compile("D:/easdev/build/userbuild.xml",
    "D:/easdev/build/userbuild.log");
  if(b)
  {
   System.out.println("编译成功!");
  }
  else
  {
   System.out.println("编译失败!");
  }
  System.out.println("结束编译...");

 }}
下面是Java页面通过dwr调用此类的代码:

 <%@ page contentType="text/html; charset=GBK"%>
<%@ page import="org.apache.easframework.common.*" %>
<%@ taglib prefix="ww" uri="webwork" %>
<%@ include file="/common/head.jsp"%>
<script type='text/javascript' src='<%=request.getContextPath()%>/js/util.js?Math.random();'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/js/engine.js?Math.random();'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/interface/CompileJava.js?Math.random();'></script>
<meta http-equiv="epires" content=0>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<script language="JavaScript">
<!--
function compileJava()
{
 CompileJava.startCompile("D:/easdev/build/userbuild.xml","D:/easdev/build/userbuild.log",callback);
 
  // document.listForm.elements['pageLoaderInfo.custSort'].value = sortValue;
  // document.listForm.operate.value="selectPageList";
  // document.listForm.submit();
}
function callback(data)
{
   alert(data);
}
-->
</script>
 
<table><tr><td><input type="button" name="compile" value="编译" class="mybutton" onClick="compileJava()"></td></tr></table>
%@include file="/common/tail.jsp"% 

上面在编译成功时弹出编译成功的JS提示,否则提示编译失败

另外需要说明的是,要实现在线ANT编译,需要把ant工具相关的一些jar包复制到tomcat的shared\lib或者WEB-INF\lib中.


相 关 文 章   发布商链接
·JSP彩色验证码生成实例代码
·Jsp实现网站用户注册使用激活码的代...
·实例讲解JSP和JavaScript实现的二级...
·当jsp和servlet出现乱码问题后的解决...
·实例代码讲解jsp上传图片并过滤图片...
·三种方法讲解在java实现URL重写的代...
·JSP上传图片的代码提供
·javat实现正则表达式只替换URL字符串...
·实例配置如何在eclipse中调试jsp程序
·servlet容器对url的匹配过程及其url-...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·Jsp实现网站用户注册使用激活
·JSP彩色验证码生成实例代码
·jsp利用Session防止表单重复...
·Java防止非法和重复表单提交...
·JSP报表打印的一种简单解决方
·Servlet 采用forward 时,页面
·jsp生成验证码图片的程序
·jsp+ajax技术实现行政区划代...
·JSP防止表单重复提交的三种方
·Ajax+servlet实现页面无刷新...
·经验总结java利用jacob操作wo...
·祥解JSP中的标签库
·JSP实现统计当前在线人数的实
·基于JSP的ajax用户注册验证代
·八步实现JSP报表打印
热 门 文 章
·经验总结java利用jacob操作wo...
·jsp+ajax技术实现行政区划代...
·使用struts upload包进行文件...
·基于JSP的ajax用户注册验证代...
·通过流或利用jspsmartupload....
·jsp利用Session防止表单重复...
·Jsp页面列表组件框架设计
·Java防止非法和重复表单提交...
·Jsp分页组件制作实例,可以解...
·Ajax+servlet实现页面无刷新...
·JSP防止表单重复提交的三种方...
·八步实现JSP报表打印
·JSP上传图片的代码提供
·实现jsp页面二级下拉框联动,...
·实例代码讲解jsp上传图片并过...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .