在 J2C 应用程序中使用 doclet

通过将标记添加至 J2C 应用程序中的 Java™ 源代码,就可以利用 J2C doclet 功能了。

Doclet 标记是注释编程标记,它们提供了一种可扩展处理机制,用于生成准备在 J2EE 环境中部署的应用程序工件。将 Doclet 标记添加至 J2C 应用程序中的 Java 源代码时,将自动生成这些工件(在您按 CTRL-S 进行保存后)。
Doclet 标记将作为 Javadoc 样式注释插入到 Java 源代码中。基于注释的编程标记的属性包括作用域(标记在代码中的位置)和多重性(可以使用标记的频率)。

受支持的 Doclet 标记

下列类型的标记可供您在开发 J2C 应用程序时添加至 Java 源代码:
  • J2C 标记
  • 类型描述符标记

Doclet 标记属性

  1. 作用域:作用域指的是标记在 Java 源文件中的位置。四个有效的作用域选项是:包、类、方法和字段。
    • 添加至包注释。此作用域提供适用于整个 Java 包、模块或者整个应用程序的信息。

    • 添加至类注释。此作用域提供有关整个 Java 类型或接口的信息。

    • 方法

      添加至类中的特定方法的注释。此作用域提供有关类中所引用方法的信息。

    • 字段

      添加至类中的特定字段的注释。此作用域提供特定于类中所引用字段的信息。

  2. 多重性:多重性指的是一个特定标记在一个 Java 源文件中可以出现的次数。在 Doclet 表示法中,多重性是在标记名称后面的括号中指示的。
    • 0..1:指示在 Java 源文件中可以不使用该标记,也可以使用该标记一次。
    • 0..n:指定在 Java 源文件中可以不使用该标记,也可以使用该标记无限次。
示例:以下示例派生自 IMS™ 多分段输出教程:
  1. 在“项目资源管理器”视图中,展开项目,接着展开 Java 资源,然后展开 JavaSource 部分。
  2. 右键单击您使用的包(在此例中为 sample.ims)并选择新建 > 来启动“新建类”向导。
  3. 输入 CCIBuffer 作为类的名称。接受所有缺省设置。
  4. 单击完成,CCIBuffer 类将在 Java 编辑器中打开。
  5. 在 CCIBuffer 类的注释部分,按以下方法添加标记 @type-descriptor.message-buffer:

    添加 doclet 标记

  6. 按 CTRL-S 以保存更改。将在 CCIBuffer.java 类文件中自动生成以下代码:
    /*
      * Created on Oct 13, 2004
     *
      * TODO To change the template for this generated file go to
      * Window - Preferences - Java - Code Style - Code Templates
     */
    package sample.ims;
    
    /**
      * @author ivyho
     *
      * TODO To change the template for this generated type comment go to
      * Window - Preferences - Java - Code Style - Code Templates
      * @type-descriptor.message-buffer
     */
    public class CCIBuffer implements javax.resource.cci.Record,
    		javax.resource.cci.Streamable, com.ibm.etools.marshall.RecordBytes {
    
    	private byte[] buffer_ = null;
    
    	/**
    	 * @generated
    	 */
    	public CCIBuffer() {
    		return;
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#getRecordShortDescription()
    	 */
    	public String getRecordShortDescription() {
    		return (this.getClass().getName());
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#hashCode()
    	 */
    	public int hashCode() {
    		return (super.hashCode());
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Streamable#write(OutputStream)
    	 */
    	public void write(java.io.OutputStream outputStream)
    			throws java.io.IOException {
    		outputStream.write(buffer_);
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#setRecordShortDescription(String)
    	 */
    	public void setRecordShortDescription(String shortDescription) {
    		return;
    	}
    
    	/**
    	 * @generated
    	 */
    	public int getSize() {
    		if (buffer_ != null)
    			return (buffer_.length);
    		else
    			return (0);
    	}
    
    	/**
    	 * @generated
    	 * @see java.lang.Object#toString
    	 */
    	public String toString() {
    		StringBuffer sb = new StringBuffer(super.toString());
    		sb.append("\n");
    		com.ibm.etools.marshall.util.ConversionUtils.dumpBytes(sb, buffer_);
    		return (sb.toString());
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#getRecordName()
    	 */
    	public String getRecordName() {
    		return (this.getClass().getName());
    	}
    
    	/**
    	 * @generated
    	 */
    	public byte[] getBytes() {
    		return (buffer_);
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#clone()
    	 */
    	public Object clone() throws CloneNotSupportedException {
    		return (super.clone());
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#setRecordName(String)
    	 */
    	public void setRecordName(String recordName) {
    		return;
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#equals()
    	 */
    	public boolean equals(Object object) {
    		return (super.equals(object));
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Streamable#read(InputStream)
    	 */
    	public void read(java.io.InputStream inputStream)
    			throws java.io.IOException {
    		byte[] input = new byte[inputStream.available()];
    		inputStream.read(input);
    		buffer_ = input;
    	}
    
    	/**
    	 * @generated
    	 */
    	public void setBytes(byte[] bytes) {
    		buffer_ = bytes;
    	}
    
    }

反馈