Xdoclet是什么?

本文的目的是让你用最短的时间了解xdoclet技术,本人并未对其作深入的研究,若理解有误请指正。

      XDoclet是一个开源项目,可以从这里得到他:http://xdoclet.sourceforge.net/xdoclet/ 。 
      XDoclet可以通过你在java源代码中的一些特殊的注释信息,自动为你生成配置文件、源代码等等,例如web、ejb的部署描述文件、为你生成struts的struts-config.xml配置文件、javascript校验等。
      正如《XDoclet in Action》部分章节中文版 一文中所说的“当初,XDoclet因为可以自动生成EJB繁杂的接口和布署描述文件而声名鹊起。然而,现在的XDoclet已经发展成了一个全功能的、面向属性的代码生成框架。J2EE代码生成只是XDoclet的一个应用方面,它可以完成的任务已经远远超越了J2EE和项目文档的生成。”
目前的版本可以为web、ejb、struts、webwork、hibnaate、jdo、jmx等等生成描述文件、源码等,XDoclet提供了ant的任务target支持,完全通过ant来完成任务。

      展开XDoclet的发布包,samples目录下有直接可以运行的ant脚本文件。这里以web应用target为例,说明XDoclet能为我们作些什么。
      下面是samples中一个struts的action代码:
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 * Simple class to test Jakarta Struts generation (Jakarta Struts 1.2 beta 2 only).
 *
 * @struts.action
 *    path="/struts/foo"
 *
 * @struts.action-forward
 *    name="success"
 *    path="/struts/getAll.do"
 *    redirect="false"
 */
public final class StrutsAction extends Action
{
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request, HttpServletResponse response)
    {
        return mapping.findForward("success");
    }
}

注意红色的注释部分,注意执行完ant脚本后,将为你生成struts-config.xml中相关的配置项,以下是脚本执行后生成的struts-config.xml文件中的配置:

  <!-- ========== Action Mapping Definitions =================================== -->
   <action-mappings>
    <action
      path="/struts/foo"
      type="test.web.StrutsAction"
      unknown="false"
      validate="true"
    >
      <forward
        name="success"
        path="/struts/getAll.do"
        redirect="false"
      />
    </action>

至此一点我们便可以了解XDoclet是如何工作的了,想想struts中的vaild配置文件、struts-config配置文件等需要我们大量的手工工作,如果再写代码的时候把相关的元数据信息写在注释里,XDoclet将为我们自动完成这些工作,当然像 @struts.action 、@struts.action-forward 等这些特定的注释标签需要去查XDoclet的相关文档了,像前面说的一样,Xdoclet对目前流行的多种框架、技术都提供了相关的支持。相信在一些情况下,Xdoclet会大大提高我们的工作效率的,了解更多信息请参考Xdoclet网站http://xdoclet.sourceforge.net/xdoclet/ 。

xdoclet

05-04

用ant执行build.xml的时候,出现了下面的问题!如何解决啊?rnBUILD FAILEDrnF:\javatest\test_01\build.xml:24: org.picocontainer.PicoIntrospectionException: Unknown property 'mergecfgxml' in class org.xdoclet.plugin.hibernate.HibernateConfigPlugin Existing properties:defaultentitymode=java.beans.PropertyDescriptor@17f8350d, contextObjects=java.beans.PropertyDescriptor@f07cd3b1, jndiurl=java.beans.PropertyDescriptor@915725bc, jdbcbatchsize=java.beans.PropertyDescriptor@d9b6878e, properties=java.beans.PropertyDescriptor@555305e0, jdbcautocommit=java.beans.PropertyDescriptor@e1fbc5ff, encoding=java.beans.PropertyDescriptor@1e0879e5, validate=java.beans.PropertyDescriptor@3625d489, packagereplace=java.beans.PropertyDescriptor@230522dd, jdbcusername=java.beans.PropertyDescriptor@5597762f, jdbcusescrollableresultset=java.beans.PropertyDescriptor@9cd82f08, jdbcfetchsize=java.beans.PropertyDescriptor@1c71410e, class=java.beans.PropertyDescriptor@68547e1c, cachequerycachefactory=java.beans.PropertyDescriptor@68fb23e4, restrictedpath=java.beans.PropertyDescriptor@e44790af, transactionmanagerlookup=java.beans.PropertyDescriptor@dbde75e7, c3p0maxsize=java.beans.PropertyDescriptor@80c89dd3, version=java.beans.PropertyDescriptor@cfb0f70d, mappedClasses=java.beans.PropertyDescriptor@9278ee75, destdirFile=java.beans.PropertyDescriptor@8b28536, destdir=java.beans.PropertyDescriptor@99a1dcba, jdbcusestreamsforbinary=java.beans.PropertyDescriptor@4e75bbc9, filereplace=java.beans.PropertyDescriptor@628cd347, jdbcurl=java.beans.PropertyDescriptor@d4ba4522, transactionfactory=java.beans.PropertyDescriptor@22f3aa9a, jdbcisconnectionvalidationrequired=java.beans.PropertyDescriptor@603bf721, showsql=java.beans.PropertyDescriptor@8ba28daf, dialect=java.beans.PropertyDescriptor@90deaf5c, jdbcpoolsize=java.beans.PropertyDescriptor@cdb421a6, querysubstitutions=java.beans.PropertyDescriptor@9749d664, c3p0idletestperiod=java.beans.PropertyDescriptor@2f97257d, hbm2ddlauto=java.beans.PropertyDescriptor@c20dd58a, jdbcbatchversioneddata=java.beans.PropertyDescriptor@691370f8, jdbcdriver=java.beans.PropertyDescriptor@4c710149, defaultschema=java.beans.PropertyDescriptor@942f8578, jtausertransaction=java.beans.PropertyDescriptor@6b3bf4ea, c3p0timeout=java.beans.PropertyDescriptor@3268956f, usereflectionoptimizer=java.beans.PropertyDescriptor@9bf430e9, DTDVersion=java.beans.PropertyDescriptor@e60d14b5, c3p0acquireincrement=java.beans.PropertyDescriptor@14431de7, propertyMap=java.beans.PropertyDescriptor@ac138cd9, jndiclass=java.beans.PropertyDescriptor@6777e6d5, connectionprovider=java.beans.PropertyDescriptor@3afc2c35, jdbcisolation=java.beans.PropertyDescriptor@f9330e99, outputValidator=java.beans.PropertyDescriptor@18d4871b, c3p0maxstatements=java.beans.PropertyDescriptor@5aaca4c6, c3p0minsize=java.beans.PropertyDescriptor@e34ae409, cacheregionprefix=java.beans.PropertyDescriptor@c6444cb6, useouterjoin=java.beans.PropertyDescriptor@75763354, fileregex=java.beans.PropertyDescriptor@71fbc11a, cacheusequerycache=java.beans.PropertyDescriptor@3cd8ae65, jdbcusegetgeneratedkeys=java.beans.PropertyDescriptor@edf3c0d7, jdbcautoreconnectforpools=java.beans.PropertyDescriptor@5b533821, cacheuseminimalputs=java.beans.PropertyDescriptor@b278b36e, jdbcpassword=java.beans.PropertyDescriptor@36e042c, jndisessionfactoryname=java.beans.PropertyDescriptor@e73dff16, cacheprovider=java.beans.PropertyDescriptor@1c051d9, maxfetchdepth=java.beans.PropertyDescriptor@30fcff6b, packageregex=java.beans.PropertyDescriptor@c820230, mappingextension=java.beans.PropertyDescriptor@e57bd902, multioutput=java.beans.PropertyDescriptor@5b1e348d, jdbcautoreconnect=java.beans.PropertyDescriptor@a8b6362b, jndidatasource=java.beans.PropertyDescriptor@acbc3ce4

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭