framework apache diggester / apache.org
http://commons.apache.org/

web service >>> xml to java object = diggester+beanutils+logging
Commons Digester 2.0 API
http://commons.apache.org/digester/
http://commons.apache.org/digester/commons-digester-2.0/docs/api/
Digester download
http://archive.apache.org/dist/commons/digester/binaries/
http://archive.apache.org/dist/commons/digester/binaries/commons-digester-2.0-bin.zip
Commons BeanUtils 1.8.2 API
http://commons.apache.org/beanutils/
http://commons.apache.org/beanutils/api/index.html
beanutils download
http://archive.apache.org/dist/commons/beanutils/binaries/
http://labs.xiaonei.com/apache-mirror/commons/beanutils/binaries/commons-beanutils-1.8.2-bin.zip
Commons Logging 1.1.2-SNAPSHOT API
http://commons.apache.org/logging/apidocs/index.html
loggind download
http://archive.apache.org/dist/commons/logging/
http://archive.apache.org/dist/commons/logging/binaries/commons-logging-1.1.1-bin.zip
webservice begin
[root@localhost digester]# pwd
/home/lindows/workspace/test/src/com/javaeye/lindows/digester
[root@localhost digester]# ll
总计 64
-rw-r--r-- 1 lindows users 835 11-25 21:17 Academy.java
-rw-r--r-- 1 lindows users 993 11-25 21:29 academyRules.xml
-rw-r--r-- 1 lindows users 984 11-20 08:18 acdemy.xml
-rw-r--r-- 1 lindows users 330 11-25 15:40 Course.java
drwxr-xr-x 2 lindows users 4096 11-25 21:31 CVS
-rw-r--r-- 1 lindows users 2114 11-25 21:23 DigestXMLJavaAcademy.java
-rw-r--r-- 1 lindows users 755 11-25 18:45 Student.java
-rw-r--r-- 1 lindows users 607 11-25 21:22 Teacher.java
http://developer.ccidnet.com/art/322/20021211/33259_1.html
相关资源
·The Jakarta Commons homepage: http://jakarta.apache.org/commons
·Two open source XML parsers suitable for use with Digester are:
o Xerces
o Crimson
·Open source projects that use Digester:
o Struts
o Tomcat
·Other Jakarta Commons components:
http://jakarta.apache.org/commons/components.html
· Erik Swenson's previous Open Source Profile column, "Reports Made Easy with JasperReports" (JavaWorld, September 2002):
http://www.javaworld.com/javaworld/jw-09-2002/jw-0920-opensourceprofile.html
· Browse the Java and XML section of JavaWorld's Topical Index:
http://www.javaworld.com/channel_content/jw-xml-index.shtml
·Chat about Java development in the JavaWorld Forum:
http://forums.devworld.com/webx?13@@.ee6b802
· Sign up for JavaWorld's free weekly email newsletters:
http://www.javaworld.com/subscribe
· You'll find a wealth of IT-related articles from our sister publications at IDG.net
Java Open Source Software: Jakarta commons Digester
http://www.itags.org/java/583235/
Hi
Anyone like to offer an example that uses the org.apache.commons.digester to create objects with a non empty constructor. Nothing too complicated - an object with a String in the Constructor will suffice.
Apache Digester应用实例 [原创]
http://www.iteye.com/topic/39330
http://philos.iteye.com/blog/176724
前段时间项目中需要根据xml文件创建java对象,而apache commons-digester是首选.
一直想把它写下来,可是总有点懒
这次介绍一下digester的常用法,其他更高级的使用方法请参阅digester doc(由于比较忙,下次有时间写一篇关于cglib的常用法,呵呵)
Apache Digester应用实例 [原创]
--------------利用 apache commons-digester 自动根据xml文件创建java 对象
<day day up>
author: binker
email: binker_cao@163.com
date: 2006/12/16
note: 本文可以任意转载,但请保持其完整性并注明来源,谢谢.
一.序
Digester是apache的一个组件 apache commons-digester.jar,通过它可以很方便的从xml文件生成java对象.你不用再象以前通过jdom或者Xerces去读取一个 document对象.(jdom和Xerces仍然有它们的用武之地及强大之处,在其它应用里你也少不了它们)
我只是用一个例子展示一下如何把xml文件生成一个java object.
首先你必须把jar加入到你的项目classpath.
(一)准备:
1.环境: Eclipse, jdk1.4+
2.需求说明:学院包含学生和老师,学生可以选修课程,老师有不同的资格认证。
3.Java Class的定义,简洁起见,略去import内容。
4.使用Digester生成java对象 必须要定义一个xml文件,此xml文件必须符合digester-rules.dtd的规则。
5.所有的xml文件必须在classpath路径中,这样可以通过Class.getClassLoader().getInputStream()读取xml文件。
(二)提要:
本示例所需的java class 和 xml文件分成四类:
1.基础xml文件: [academy.xml]: 你将要解析的xml文件.
2.基础java class: [Academy.java, Teacher.java, Student.java, Cousre.java]: 生成的对象的类定义
3.digesterRules.xml: [academyRules.xml]: 定义了基础xml文件到基础java class的匹配(映射)关系
4.Digester class: [DigestXMLJavaAcademy.java]: 根据digesterRules.xml去解析基础xml文件,并生成java 对象
(三)参考资料
1.English ebook: Pro Jakarta Commons by Harshad Oak Apress 2004
二.基础Java Class
1.学院 class Academy.java
- public class Academy {
- private Vector students;
- private Vector teachers;
- private String name;
- public Academy() {
- students = new Vector();
- teachers = new Vector();
- }
- public void addStudent(Student student) {
- students.addElement(student);
- }
- public void addTeacher(Teacher teacher) {
- teachers.addElement(teacher);
- }
- public Vector getStudents() {
- return students;
- }
- public void setStudents(Vector newStudents) {
- students = newStudents;
- }
- public Vector getTeachers() {
- return teachers;
- }
- public void setTeachers(Vector newTeachers) {
- teachers = newTeachers;
- }
- public String getName() {
- return name;
- }
- public void setName(String newName) {
- name = newName;
- }
- }
public class Academy {
private Vector students;
private Vector teachers;
private String name;
public Academy() {
students = new Vector();
teachers = new Vector();
}
public void addStudent(Student student) {
students.addElement(student);
}
public void addTeacher(Teacher teacher) {
teachers.addElement(teacher);
}
public Vector getStudents() {
return students;
}
public void setStudents(Vector newStudents) {
students = newStudents;
}
public Vector getTeachers() {
return teachers;
}
public void setTeachers(Vector newTeachers) {
teachers = newTeachers;
}
public String getName() {
return name;
}
public void setName(String newName) {
name = newName;
}
}
============================================================
2.学生 Student.java
- public class Student {
- private Vector courses;
- private String name;
- private String division;
- public Student() {
- courses = new Vector();
- }
- public void addCourse(Course course) {
- courses.addElement(course);
- }
- public String getName() {
- return name;
- }
- public void setName(String newName) {
- name = newName;
- }
- public String getDivision() {
- return division;
- }
- public void setDivision(String newDivision) {
- division = newDivision;
- }
- public void setCourses(Vector courses) {
- this .courses = courses;
- }
- public Vector getCourses() {
- return courses;
- }
- }
public class Student {
private Vector courses;
private String name;
private String division;
public Student() {
courses = new Vector();
}
public void addCourse(Course course) {
courses.addElement(course);
}
public String getName() {
return name;
}
public void setName(String newName) {
name = newName;
}
public String getDivision() {
return division;
}
public void setDivision(String newDivision) {
division = newDivision;
}
public void setCourses(Vector courses) {
this.courses = courses;
}
public Vector getCourses() {
return courses;
}
}
============================================================
3.老师 Teacher.java
- public class Teacher {
- private String name;
- private Vector certifications;
- public Teacher() {
- certifications = new Vector();
- }
- public void addCertification(String certification) {
- certifications.addElement(certification);
- }
- public String getName() {
- return name;
- }
- public void setName(String newName) {
- name = newName;
- }
- public void setCertifications(Vector certifications) {
- this .certifications = certifications;
- }
- public Vector getCertifications() {
- return certifications;
- }
- }
public class Teacher {
private String name;
private Vector certifications;
public Teacher() {
certifications = new Vector();
}
public void addCertification(String certification) {
certifications.addElement(certification);
}
public String getName() {
return name;
}
public void setName(String newName) {
name = newName;
}
public void setCertifications(Vector certifications) {
this.certifications = certifications;
}
public Vector getCertifications() {
return certifications;
}
}
============================================================
4.课程 Course.java
- public class Course {
- private String id;
- private String name;
- public Course() {
- }
- public String getId() {
- return id;
- }
- public void setId(String newId) {
- id = newId;
- }
- public String getName() {
- return name;
- }
- public void setName(String newName) {
- name = newName;
- }
- }
public class Course {
private String id;
private String name;
public Course() {
}
public String getId() {
return id;
}
public void setId(String newId) {
id = newId;
}
public String getName() {
return name;
}
public void setName(String newName) {
name = newName;
}
}
三.基础XML文件
============================================================
学院 academy.xml,包含了学生(包含了课程),老师
- <?xml version= "1.0" ?>
- <academy name="JAcademy" >
- <student name="JavaBoy" division= "A" >
- <course>
- <id>C1</id>
- <name>JSP</name>
- </course>
- <course>
- <id>C2</id>
- <name>Servlets</name>
- </course>
- </student>
- <student name="JavaGirl" division= "B" >
- <course>
- <id>C3</id>
- <name>EJB</name>
- </course>
- </student>
- <teacher name="JavaGuru" >
- <certification>SCJP</certification>
- <certification>SCWCD</certification>
- </teacher>
- <teacher name="JavaMaster" >
- <certification>OCP</certification>
- <certification>SCJP</certification>
- <certification>SCEA</certification>
- </teacher>
- </academy>
<?xml version="1.0"?>
<academy name="JAcademy" >
<student name="JavaBoy" division="A">
<course>
<id>C1</id>
<name>JSP</name>
</course>
<course>
<id>C2</id>
<name>Servlets</name>
</course>
</student>
<student name="JavaGirl" division="B">
<course>
<id>C3</id>
<name>EJB</name>
</course>
</student>
<teacher name="JavaGuru">
<certification>SCJP</certification>
<certification>SCWCD</certification>
</teacher>
<teacher name="JavaMaster">
<certification>OCP</certification>
<certification>SCJP</certification>
<certification>SCEA</certification>
</teacher>
</academy>
============================================================
四.Digester Class
DigestXMLJavaAcademy.java 和academyRules.xml
其中academyRules.xml用来定义xml文件和java对象的匹配(映射)关系,格式要符合digester-rules.dtd格式约束
DigestXMLJavaAcademy.java 根据academyRules.xml解析academy.xml文件并生成 Academy对象.
============================================================
- 1 . academyRules.xml
- <?xml version="1.0" ?>
- <digester-rules>
- <pattern value="academy" >
- <object-create-rule classname="com.commonsbook.chap7.academy.Academy" />
- <set-properties-rule />
- <pattern value="student" >
- <object-create-rule classname="com.commonsbook.chap7.academy.Student" />
- <set-properties-rule />
- <pattern value="course" >
- <object-create-rule classname="com.commonsbook.chap7.academy.Course" />
- <bean-property-setter-rule pattern="id" />
- <bean-property-setter-rule pattern="name" />
- <set-next-rule methodname="addCourse" />
- </pattern>
- <set-next-rule methodname="addStudent" />
- </pattern>
- <pattern value="teacher" >
- <object-create-rule classname="com.commonsbook.chap7.academy.Teacher" />
- <set-properties-rule />
- <call-method-rule pattern="certification" methodname= "addCertification"
- paramcount="1" />
- <call-param-rule pattern="certification" paramnumber= "0" />
- <set-next-rule methodname="addTeacher" />
- </pattern>
- </pattern>
- </digester-rules>
1. academyRules.xml
<?xml version="1.0"?>
<digester-rules>
<pattern value="academy">
<object-create-rule classname="com.commonsbook.chap7.academy.Academy" />
<set-properties-rule />
<pattern value="student">
<object-create-rule classname="com.commonsbook.chap7.academy.Student" />
<set-properties-rule />
<pattern value="course">
<object-create-rule classname="com.commonsbook.chap7.academy.Course" />
<bean-property-setter-rule pattern="id"/>
<bean-property-setter-rule pattern="name"/>
<set-next-rule methodname="addCourse" />
</pattern>
<set-next-rule methodname="addStudent" />
</pattern>
<pattern value="teacher">
<object-create-rule classname="com.commonsbook.chap7.academy.Teacher" />
<set-properties-rule />
<call-method-rule pattern="certification" methodname="addCertification"
paramcount="1" />
<call-param-rule pattern="certification" paramnumber="0"/>
<set-next-rule methodname="addTeacher" />
</pattern>
</pattern>
</digester-rules>
============================================================
2. DigestXMLJavaAcademy.java
- public class DigestXMLJavaAcademy {
- public void digest(){
- try {
- //Create Digester using rules defined in academyRules.xml
- Digester digester = DigesterLoader.createDigester(
- this .getClass().getClassLoader().getResource( "academyRules.xml" ));
- //Parse academy.xml using the Digester to get an instance of Academy
- Academy a = (Academy)digester.parse(
- this .getClass().getClassLoader().getResourceAsStream( "academy.xml" ));
- Vector vStud=a.getStudents();
- Vector vTeach=a.getTeachers();
- for ( int i = 0 ; i < vStud.size(); i++) {
- System.out.println("Student>> " +PropertyUtils.describe(vStud.get(i)));
- }
- for ( int i = 0 ; i < vTeach.size(); i++) {
- System.out.println("Teacher>> " + PropertyUtils.describe(vTeach.get(i)));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- DigestXMLJavaAcademy xmlDigest= new DigestXMLJavaAcademy();
- xmlDigest.digest();
- }
- }
public class DigestXMLJavaAcademy {
public void digest(){
try {
//Create Digester using rules defined in academyRules.xml
Digester digester = DigesterLoader.createDigester(
this.getClass().getClassLoader().getResource("academyRules.xml"));
//Parse academy.xml using the Digester to get an instance of Academy
Academy a = (Academy)digester.parse(
this.getClass().getClassLoader().getResourceAsStream("academy.xml"));
Vector vStud=a.getStudents();
Vector vTeach=a.getTeachers();
for (int i = 0; i < vStud.size(); i++) {
System.out.println("Student>> "+PropertyUtils.describe(vStud.get(i)));
}
for (int i = 0; i < vTeach.size(); i++) {
System.out.println("Teacher>> "+ PropertyUtils.describe(vTeach.get(i)));
}
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
DigestXMLJavaAcademy xmlDigest= new DigestXMLJavaAcademy();
xmlDigest.digest();
}
}
五.运行结果
PropertyUtils.describ(Object)用法
http://philos.iteye.com/blog/176724
使用org.apache.commons.beanutils.PropertyUtils.describ(Object)生成Map实例,其中包含了源bean中所有可读的属性。下面的代码片段演示了这个特性:
- Person author = new Person();
- author.setName("Timothy M. O'Brien" );
- Book book = new Book();
- book.setName("Jakarta Commons Cookbook" );
- book.setAuthor(author);
- // 取得book中的所有可读属性,返回到map中
- Map bookMap = PropertyUtils.describe(book);
- // Book类中包含一个Author类型的属性
- // 取bookMap中的author bean,并将其所有可读属性返回到authorMap中
- Map authorMap = PropertyUtils.describe(bookMap.get("author" ));
- // 输出
- // Book Name: Jakarta Commons Cookbook
- // Author Name: Timothy M. O'Brien
- System.out.println("Book Name: " + bookMap.get( "name" ));
- System.out.println("Author Name: " + authorMap.get( "name" ));
Person author = new Person();
author.setName("Timothy M. O'Brien");
Book book = new Book();
book.setName("Jakarta Commons Cookbook");
book.setAuthor(author);
// 取得book中的所有可读属性,返回到map中
Map bookMap = PropertyUtils.describe(book);
// Book类中包含一个Author类型的属性
// 取bookMap中的author bean,并将其所有可读属性返回到authorMap中
Map authorMap = PropertyUtils.describe(bookMap.get("author"));
// 输出
// Book Name: Jakarta Commons Cookbook
// Author Name: Timothy M. O'Brien
System.out.println("Book Name: " + bookMap.get("name"));
System.out.println("Author Name: " + authorMap.get("name"));
在上面的例子中假如Book类中还有个Integer型的page属性,代表书籍页数,在没设置的情况下,将返回null,如果page属性为int型,则将返回0。
http://commons.apache.org/fileupload/
FileUpload 1.2.1 - 18 January 2008
- Download the binary and source distributions from a mirror site here
DWR + FileUpload 多文件上传实例
http://www.iteye.com/topic/247420
功能: 文件上传
特点: 动态显示进度, 百分比, 文件名, 文件长度, 上传速度... 剩下的自己看吧
主要技术: DWR, Apache commons FileUpload
原理: FileUpload实现上传功能, UploadListener 监听上传进度, DWR push (Reverse Ajax) 进度信息并更新页面, 实现无刷新多文件上传
运行环境: Tomcat 6, WAS 6 测试通过
WAR 包下载 见附件
顺便截个图:

http://dl.iteye.com/topics/download/53b9ba95-5a12-3d89-a545-8d7f90fddb75
https://downloads.apache.org/
Icon Name Last modified Size Description
[DIR] accumulo/ 2023-11-16 22:26 -
[DIR] activemq/ 2023-12-13 14:51 -
[DIR] age/ 2023-09-25 19:22 -
[DIR] airavata/ 2022-06-17 12:56 -
[DIR] airflow/ 2023-12-18 17:03 -
[DIR] allura/ 2023-11-06 22:37 -
[DIR] ambari/ 2023-03-13 08:49 -
[DIR] ant/ 2023-11-26 15:58 -
[DIR] any23/ 2023-07-03 13:18 -
[DIR] apex/ 2022-06-17 12:55 -
[DIR] apisix/ 2023-11-21 07:44 -
[DIR] apr/ 2023-12-21 22:44 -
[DIR] archiva/ 2023-12-21 22:44 -
[DIR] aries/ 2023-11-13 20:05 -
[DIR] arrow/ 2023-12-19 11:27 -
[DIR] asterixdb/ 2023-12-12 08:31 -
[DIR] atlas/ 2022-12-07 06:44 -
[DIR] aurora/ 2022-06-17 12:55 -
[DIR] avro/ 2023-09-24 09:47 -
[DIR] axis/ 2022-06-17 11:19 -
[DIR] bahir/ 2022-06-17 12:27 -
[DIR] beam/ 2023-11-18 00:03 -
[DIR] bigtop/ 2023-08-22 02:11 -
[DIR] bloodhound/ 2022-06-17 12:56 -
[DIR] bookkeeper/ 2023-12-19 06:39 -
[DIR] brooklyn/ 2022-06-17 12:32 -
[DIR] brpc/ 2023-11-02 17:31 -
[DIR] buildr/ 2022-08-03 14:32 -
[DIR] buildstream/ 2023-09-22 05:42 -
[DIR] bval/ 2023-10-18 10:48 -
[DIR] calcite/ 2023-12-11 07:51 -
[DIR] camel/ 2023-12-18 15:16 -
[DIR] carbondata/ 2023-11-25 11:40 -
[DIR] cassandra/ 2023-12-12 17:11 -
[DIR] causeway/ 2023-10-09 18:09 -
[DIR] cayenne/ 2023-05-25 15:14 -
[DIR] celix/ 2023-10-01 09:41 -
[DIR] chemistry/ 2022-06-17 12:48 -
[DIR] chukwa/ 2022-06-17 12:54 -
[DIR] clerezza/ 2022-07-11 14:49 -
[DIR] climate/ 2022-06-17 12:54 -
[DIR] cloudstack/ 2023-08-28 18:47 -
[DIR] cocoon/ 2023-11-19 13:58 -
[DIR] commons/ 2023-10-25 16:49 -
[DIR] cordova/ 2022-06-17 11:32 -
[DIR] couchdb/ 2022-12-30 14:49 -
[DIR] creadur/ 2023-01-23 19:53 -
[DIR] crunch/ 2022-06-17 12:54 -
[DIR] ctakes/ 2022-08-10 13:57 -
[DIR] curator/ 2023-04-28 08:27 -
[DIR] cxf/ 2023-09-18 18:48 -
[DIR] daffodil/ 2023-11-06 12:14 -
[DIR] datafu/ 2023-07-05 10:36 -
[DIR] datasketches/ 2022-06-17 11:27 -
[DIR] db/ 2022-06-17 11:28 -
[DIR] deltaspike/ 2022-06-17 12:32 -
[DIR] directory/ 2023-09-10 04:30 -
[DIR] dolphinscheduler/ 2023-10-17 01:45 -
[DIR] doris/ 2023-09-04 04:28 -
[DIR] drill/ 2023-04-29 05:41 -
[DIR] druid/ 2023-12-18 05:53 -
[DIR] dubbo/ 2023-12-19 03:38 -
[DIR] eagle/ 2022-06-17 12:54 -
[DIR] echarts/ 2023-07-18 02:25 -
[DIR] empire-db/ 2023-04-22 14:10 -
[DIR] eventmesh/ 2023-07-04 14:57 -
[DIR] falcon/ 2022-06-17 12:55 -
[DIR] felix/ 2023-12-11 07:46 -
[DIR] fineract/ 2023-03-24 09:14 -
[DIR] flagon/ 2023-10-24 21:47 -
[DIR] flex/ 2023-02-20 22:55 -
[DIR] flink/ 2023-12-21 15:21 -
[DIR] flume/ 2023-04-02 16:52 -
[DIR] fluo/ 2022-06-17 12:55 -
[DIR] forrest/ 2022-06-17 12:54 -
[DIR] freemarker/ 2022-06-17 12:54 -
[DIR] geode/ 2022-10-10 20:13 -
[DIR] geronimo/ 2022-08-10 11:38 -
[DIR] giraph/ 2023-10-30 11:55 -
[DIR] gobblin/ 2023-08-31 03:45 -
[DIR] gora/ 2022-06-17 12:55 -
[DIR] griffin/ 2022-06-17 12:55 -
[DIR] groovy/ 2023-11-29 22:18 -
[DIR] guacamole/ 2023-12-08 01:17 -
[DIR] hadoop/ 2022-06-17 11:31 -
[DIR] hawq/ 2022-06-17 12:53 -
[DIR] hbase/ 2023-12-11 13:41 -
[DIR] helix/ 2023-09-29 05:07 -
[DIR] hive/ 2023-08-14 13:16 -
[DIR] hop/ 2023-12-01 10:22 -
[DIR] httpcomponents/ 2022-09-03 17:01 -
[DIR] httpd/ 2023-10-19 09:27 -
[DIR] hudi/ 2023-11-14 17:46 -
[DIR] iceberg/ 2023-11-02 18:57 -
[DIR] ignite/ 2023-05-04 16:07 -
[DIR] impala/ 2023-10-02 22:57 -
[DIR] incubator/ 2023-11-29 03:30 -
[DIR] inlong/ 2023-12-18 12:41 -
[DIR] iotdb/ 2023-10-15 15:34 -
[DIR] jackrabbit/ 2023-12-19 09:25 -
[DIR] james/ 2023-03-23 09:16 -
[DIR] jclouds/ 2022-06-17 12:40 -
[DIR] jena/ 2023-11-01 16:25 -
[DIR] jmeter/ 2023-07-11 15:11 -
[DIR] johnzon/ 2023-11-05 19:22 -
[DIR] jspwiki/ 2023-08-11 11:13 -
[DIR] juddi/ 2023-02-27 20:15 -
[DIR] juneau/ 2023-09-05 12:59 -
[DIR] kafka/ 2023-12-08 09:39 -
[DIR] karaf/ 2023-09-20 08:24 -
[DIR] knox/ 2023-02-24 21:00 -
[DIR] kudu/ 2023-09-01 08:27 -
[DIR] kvrocks/ 2023-12-19 14:51 -
[DIR] kylin/ 2023-08-30 07:20 -
[DIR] kyuubi/ 2023-11-06 14:54 -
[DIR] lens/ 2022-06-17 12:54 -
[DIR] libcloud/ 2023-08-10 07:09 -
[DIR] linkis/ 2023-12-19 12:12 -
[DIR] logging/ 2023-10-19 14:13 -
[DIR] lucene/ 2023-11-23 17:32 -
[DIR] lucenenet/ 2023-03-30 22:45 -
[DIR] madlib/ 2023-09-08 18:25 -
[DIR] mahout/ 2022-06-17 12:35 -
[DIR] manifoldcf/ 2023-11-01 16:50 -
[DIR] marmotta/ 2022-06-17 12:54 -
[DIR] maven/ 2023-12-21 22:44 -
[DIR] mesos/ 2022-06-17 12:54 -
[DIR] metamodel/ 2022-06-17 12:53 -
[DIR] metron/ 2022-06-17 12:54 -
[DIR] mina/ 2023-05-10 20:27 -
[DIR] mnemonic/ 2022-06-17 11:46 -
[DIR] mxnet/ 2023-11-17 16:19 -
[DIR] myfaces/ 2022-07-08 15:22 -
[DIR] mynewt/ 2023-09-08 08:46 -
[DIR] netbeans/ 2023-10-10 18:17 -
[DIR] nifi/ 2023-11-27 11:42 -
[DIR] nutch/ 2022-09-10 13:19 -
[DIR] nuttx/ 2023-10-24 07:44 -
[DIR] ode/ 2022-06-17 12:34 -
[DIR] ofbiz/ 2023-12-21 22:44 -
[DIR] olingo/ 2023-10-22 12:31 -
[DIR] oodt/ 2023-07-03 18:25 -
[DIR] oozie/ 2022-06-17 12:54 -
[DIR] openjpa/ 2022-06-17 12:42 -
[DIR] openmeetings/ 2023-05-11 08:52 -
[DIR] opennlp/ 2023-11-27 08:35 -
[DIR] openoffice/ 2023-02-28 12:26 -
[DIR] openwebbeans/ 2022-08-09 13:20 -
[DIR] openwhisk/ 2023-12-04 15:32 -
[DIR] orc/ 2023-12-09 06:03 -
[DIR] ozone/ 2023-12-15 07:40 -
[DIR] parquet/ 2023-11-20 10:37 -
[DIR] pdfbox/ 2023-11-30 19:01 -
[DIR] pekko/ 2023-05-05 14:24 -
[DIR] perl/ 2023-10-21 10:06 -
[DIR] phoenix/ 2023-12-20 03:37 -
[DIR] pig/ 2022-06-17 12:56 -
[DIR] pinot/ 2023-09-14 14:34 -
[DIR] pivot/ 2022-06-17 12:56 -
[DIR] plc4x/ 2023-10-06 16:42 -
[DIR] poi/ 2023-11-16 20:43 -
[DIR] portals/ 2022-06-17 12:53 -
[DIR] predictionio/ 2022-06-17 12:54 -
[DIR] pulsar/ 2023-12-17 18:48 -
[DIR] qpid/ 2022-11-14 15:04 -
[DIR] ranger/ 2023-08-24 03:09 -
[DIR] ratis/ 2023-11-18 10:09 -
[DIR] reef/ 2022-08-03 18:31 -
[DIR] river/ 2022-06-17 12:48 -
[DIR] rocketmq/ 2023-10-09 03:27 -
[DIR] roller/ 2023-07-30 17:17 -
[DIR] royale/ 2023-05-23 06:04 -
[DIR] rya/ 2022-06-17 12:27 -
[DIR] samza/ 2023-01-13 22:57 -
[DIR] santuario/ 2022-06-17 12:27 -
[DIR] seatunnel/ 2023-10-16 02:47 -
[DIR] sedona/ 2023-10-12 07:52 -
[DIR] sentry/ 2022-06-17 12:54 -
[DIR] serf/ 2023-05-31 18:33 -
[DIR] servicecomb/ 2022-08-08 09:17 -
[DIR] servicemix/ 2022-06-17 12:39 -
[DIR] shardingsphere/ 2023-10-21 06:44 -
[DIR] shenyu/ 2023-12-19 13:45 -
[DIR] shiro/ 2023-11-12 06:07 -
[DIR] singa/ 2023-11-17 08:50 -
[DIR] sis/ 2023-10-12 16:04 -
[DIR] skywalking/ 2023-12-01 18:43 -
[DIR] sling/ 2023-12-21 22:44 -
[DIR] solr/ 2023-10-02 19:37 -
[DIR] spamassassin/ 2022-06-17 12:54 -
[DIR] spark/ 2023-12-16 00:33 -
[DIR] sqoop/ 2022-06-17 12:54 -
[DIR] stanbol/ 2022-06-17 12:54 -
[DIR] storm/ 2023-11-22 18:19 -
[DIR] streampark/ 2023-02-20 05:46 -
[DIR] streampipes/ 2023-11-27 14:52 -
[DIR] streams/ 2022-06-17 12:35 -
[DIR] struts/ 2023-12-06 18:50 -
[DIR] submarine/ 2023-09-23 13:09 -
[DIR] subversion/ 2022-07-08 16:31 -
[DIR] superset/ 2023-12-15 23:06 -
[DIR] synapse/ 2023-05-10 17:30 -
[DIR] syncope/ 2023-10-02 15:16 -
[DIR] systemds/ 2023-03-13 15:21 -
[DIR] tajo/ 2022-06-17 12:54 -
[DIR] tapestry/ 2023-07-16 22:57 -
[DIR] tcl/ 2022-06-17 12:53 -
[DIR] tez/ 2022-07-30 06:26 -
[DIR] thrift/ 2023-09-02 11:21 -
[DIR] tika/ 2023-12-13 13:51 -
[DIR] tinkerpop/ 2023-12-04 20:49 -
[DIR] tomcat/ 2022-12-05 15:25 -
[DIR] tomee/ 2023-12-19 20:48 -
[DIR] trafficcontrol/ 2023-09-06 14:58 -
[DIR] trafficserver/ 2023-10-10 15:11 -
[DIR] trafodion/ 2022-06-17 12:54 -
[DIR] turbine/ 2022-06-17 12:52 -
[DIR] tvm/ 2023-11-03 07:12 -
[DIR] twill/ 2022-06-17 12:54 -
[DIR] uima/ 2023-11-13 08:15 -
[DIR] unomi/ 2023-09-03 11:32 -
[DIR] usergrid/ 2022-06-17 12:53 -
[DIR] vcl/ 2022-06-17 12:55 -
[DIR] velocity/ 2022-06-17 12:54 -
[DIR] vxquery/ 2022-06-17 12:54 -
[DIR] wicket/ 2023-11-26 18:54 -
[DIR] ws/ 2022-06-17 11:38 -
[DIR] xalan/ 2022-06-17 12:55 -
[DIR] xerces/ 2022-06-17 12:50 -
[DIR] xmlgraphics/ 2022-06-17 12:50 -
[DIR] yetus/ 2023-12-02 05:07 -
[DIR] yunikorn/ 2023-11-20 05:26 -
[DIR] zeppelin/ 2022-06-17 12:48 -
[DIR] zookeeper/ 2023-10-09 10:03 -
[DIR] zzz/ 2023-12-22 00:30 -
[IMG] favicon.ico 2018-11-30 07:44 1.6K
end

浙公网安备 33010602011771号