diff --git a/jamonapi-2.74.pom b/jamonapi-2.74.pom
new file mode 100644
index 0000000000000000000000000000000000000000..780c5837feaf0fc4558ff930f49c5c77c82f3a93
--- /dev/null
+++ b/jamonapi-2.74.pom
@@ -0,0 +1,63 @@
+
+
+
+
+ 4.0.0
+ com.jamonapi
+ jamon
+ jar
+ jamon
+ http://jamonapi.sourceforge.net/
+ 2.74
+
+ Jamon is a Java API that allows developers to easily monitor production
+ applications.
+
+
+
+ BSD
+ http://www.opensource.org/licenses/bsd-license.php
+
+
+
+
+ scm:cvs:pserver:anonymous@jamonapi.cvs.sourceforge.net:/cvsroot/jamonapi
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.5
+ 1.5
+
+ true
+
+
+
+ java
+
+
+
+
+ org.apache.tomcat
+ tomcat-catalina
+ 7.0.0
+
+
+ org.apache.tomcat
+ tomcat-servlet-api
+ 7.0.0
+
+
+ org.eclipse.jetty
+ jetty-util
+ 9.0.3
+
+
+
diff --git a/jamonapi-2.74.tar.xz b/jamonapi-2.74.tar.xz
new file mode 100644
index 0000000000000000000000000000000000000000..965c7387ea042918a1c462c29ba4d167493bfe15
Binary files /dev/null and b/jamonapi-2.74.tar.xz differ
diff --git a/jamonapi-buildxml.patch b/jamonapi-buildxml.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e81bd0509a9267409717fa66b37ceaf72cef3c1b
--- /dev/null
+++ b/jamonapi-buildxml.patch
@@ -0,0 +1,54 @@
+--- src/ant/build.xml 2011-12-20 15:39:21.139447188 -0500
++++ src/ant/build.xml.new 2011-12-20 15:40:18.323443276 -0500
+@@ -8,11 +8,11 @@
+
+
+
+-
++
+
+
+
+-
++
+
+
+
+@@ -34,9 +34,13 @@
+
+
+
+-
+-
+-
++
++
++
++
++
++
++
+
+
+
+@@ -104,7 +107,7 @@
+
+
+
+-
++
+
+
+
+@@ -130,11 +133,6 @@
+
+
+
+-
+-
+-
+-
+-
+
+
+
diff --git a/jamonapi-jetty8.patch b/jamonapi-jetty8.patch
new file mode 100644
index 0000000000000000000000000000000000000000..fc652818828801b7a8df45514a3fc291b0b66b50
--- /dev/null
+++ b/jamonapi-jetty8.patch
@@ -0,0 +1,93 @@
+diff -urN jamonapi/src/java/com/jamonapi/http/JAMonJettyHandler.java jamonapi.new/src/java/com/jamonapi/http/JAMonJettyHandler.java
+--- jamonapi/src/java/com/jamonapi/http/JAMonJettyHandler.java 2007-09-19 00:37:15.000000000 -0400
++++ jamonapi.new/src/java/com/jamonapi/http/JAMonJettyHandler.java 2012-02-07 06:04:03.254800508 -0500
+@@ -11,10 +11,10 @@
+ import javax.servlet.http.HttpServletResponse;
+
+
+-import org.mortbay.jetty.HttpConnection;
+-import org.mortbay.jetty.Request;
+-import org.mortbay.jetty.Response;
+-import org.mortbay.jetty.handler.HandlerWrapper;
++import org.eclipse.jetty.server.BlockingHttpConnection;
++import org.eclipse.jetty.server.Request;
++import org.eclipse.jetty.server.Response;
++import org.eclipse.jetty.server.handler.HandlerWrapper;
+
+
+ public class JAMonJettyHandler extends HandlerWrapper implements HttpMonManage{
+@@ -30,14 +30,15 @@
+
+ /** Monitor the request and call any other requests in the decorator chain */
+ public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException {
+- final Request baseRequest = (request instanceof Request) ? ((Request)request) : HttpConnection.getCurrentConnection().getRequest();
+- final Response baseResponse = (response instanceof Response) ? ((Response)response) : HttpConnection.getCurrentConnection().getResponse();
++ final Request baseRequest = (request instanceof Request) ? ((Request)request) : BlockingHttpConnection.getCurrentConnection().getRequest();
++ final Response baseResponse = (response instanceof Response) ? ((Response)response) : BlockingHttpConnection.getCurrentConnection().getResponse();
+
+ HttpMon httpMon=null;
+ try {
+ httpMon=httpMonFactory.start(baseRequest, baseResponse);
+
+- super.handle(target, request, response, dispatch);
++ // XXX - verify correctness of these arguments
++ super.handle(target, baseRequest, request, response);
+ } catch (Throwable e) {
+ httpMon.throwException(e);
+ } finally {
+diff -urN jamonapi/src/java/com/jamonapi/http/JettyHttpMonItem.java jamonapi.new/src/java/com/jamonapi/http/JettyHttpMonItem.java
+--- jamonapi/src/java/com/jamonapi/http/JettyHttpMonItem.java 2007-09-19 00:37:15.000000000 -0400
++++ jamonapi.new/src/java/com/jamonapi/http/JettyHttpMonItem.java 2012-02-07 05:47:46.287890545 -0500
+@@ -5,7 +5,7 @@
+ */
+ import com.jamonapi.Monitor;
+ import com.jamonapi.MonitorFactory;
+-import org.mortbay.jetty.Request;
++import org.eclipse.jetty.server.Request;
+
+
+ class JettyHttpMonItem extends HttpMonItem {
+diff -urN jamonapi/src/java/com/jamonapi/proxy/JAMonDataSource.java jamonapi.new/src/java/com/jamonapi/proxy/JAMonDataSource.java
+--- jamonapi/src/java/com/jamonapi/proxy/JAMonDataSource.java 2011-07-21 10:27:30.000000000 -0400
++++ jamonapi.new/src/java/com/jamonapi/proxy/JAMonDataSource.java 2012-02-07 06:00:09.744821359 -0500
+@@ -4,6 +4,8 @@
+ import java.io.Serializable;
+ import java.sql.Connection;
+ import java.sql.SQLException;
++import java.sql.SQLFeatureNotSupportedException;
++import java.util.logging.Logger;
+
+ import javax.sql.*;
+ import javax.naming.Referenceable;
+@@ -79,4 +81,8 @@
+ return realDataSource.unwrap(arg0);
+ }
+
++ public Logger getParentLogger() throws SQLFeatureNotSupportedException {
++ throw new SQLFeatureNotSupportedException();
++ }
++
+ }
+diff -urN jamonapi/src/java/com/jamonapi/proxy/JAMonDriver.java jamonapi.new/src/java/com/jamonapi/proxy/JAMonDriver.java
+--- jamonapi/src/java/com/jamonapi/proxy/JAMonDriver.java 2011-08-02 17:48:16.000000000 -0400
++++ jamonapi.new/src/java/com/jamonapi/proxy/JAMonDriver.java 2012-02-07 06:01:13.931815788 -0500
+@@ -4,7 +4,7 @@
+ import java.util.Properties;
+ import java.util.regex.Matcher;
+ import java.util.regex.Pattern;
+-
++import java.util.logging.Logger;
+
+
+ import java.sql.*;
+@@ -245,6 +245,10 @@
+
+ }
+
++ public Logger getParentLogger() throws SQLFeatureNotSupportedException {
++ throw new SQLFeatureNotSupportedException();
++ }
++
+
+ }
+
diff --git a/jamonapi-jetty93.patch b/jamonapi-jetty93.patch
new file mode 100644
index 0000000000000000000000000000000000000000..21f7e65f4cc1cae779d92c8ab99df2a6668f5c61
--- /dev/null
+++ b/jamonapi-jetty93.patch
@@ -0,0 +1,22 @@
+diff -Nru jamonapi/src/java/com/jamonapi/http/JAMonJettyHandler.java jamonapi.jetty9/src/java/com/jamonapi/http/JAMonJettyHandler.java
+--- jamonapi/src/java/com/jamonapi/http/JAMonJettyHandler.java 2015-06-24 18:34:23.564257692 +0200
++++ jamonapi.jetty9/src/java/com/jamonapi/http/JAMonJettyHandler.java 2015-06-24 18:04:20.269305987 +0200
+@@ -11,7 +11,6 @@
+ import javax.servlet.http.HttpServletResponse;
+
+
+-import org.eclipse.jetty.server.BlockingHttpConnection;
+ import org.eclipse.jetty.server.Request;
+ import org.eclipse.jetty.server.Response;
+ import org.eclipse.jetty.server.handler.HandlerWrapper;
+@@ -30,8 +29,8 @@
+
+ /** Monitor the request and call any other requests in the decorator chain */
+ public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException {
+- final Request baseRequest = (request instanceof Request) ? ((Request)request) : BlockingHttpConnection.getCurrentConnection().getRequest();
+- final Response baseResponse = (response instanceof Response) ? ((Response)response) : BlockingHttpConnection.getCurrentConnection().getResponse();
++ final Request baseRequest = Request.getBaseRequest(request);
++ final Response baseResponse = baseRequest.getResponse();
+
+ HttpMon httpMon=null;
+ try {
diff --git a/jamonapi-log4j12.patch b/jamonapi-log4j12.patch
new file mode 100644
index 0000000000000000000000000000000000000000..8b873010b2f0e888d316a94871a911d9c3453889
--- /dev/null
+++ b/jamonapi-log4j12.patch
@@ -0,0 +1,11 @@
+diff -Nru jamonapi/src/ant/build.xml jamonapi.log4j12/src/ant/build.xml
+--- jamonapi/src/ant/build.xml 2015-02-06 14:52:54.099696550 +0100
++++ jamonapi.log4j12/src/ant/build.xml 2015-02-06 14:50:02.360386803 +0100
+@@ -41,6 +41,7 @@
+
+
+
++
+
+
+
diff --git a/jamonapi.spec b/jamonapi.spec
new file mode 100644
index 0000000000000000000000000000000000000000..f6ffe51057220555c0bd86445974709e60336e05
--- /dev/null
+++ b/jamonapi.spec
@@ -0,0 +1,82 @@
+%global oname jamon
+Name: jamonapi
+Version: 2.74
+Release: 1
+Summary: A Java monitoring API
+License: BSD
+URL: http://jamonapi.sourceforge.net/
+# Newer release available @ https://github.com/stevensouza/jamonapi/
+# cvs -d:pserver:anonymous@jamonapi.cvs.sourceforge.net:/cvsroot/jamonapi login
+# cvs -z3 -d:pserver:anonymous@jamonapi.cvs.sourceforge.net:/cvsroot/jamonapi co -P -r v2_74 jamonapi/src
+# Remove pregenerated javadoc files in the source tree
+# rm -rf jamonapi/src/JAMonUsersGuide/javadoc/*
+# Remove zip file which contains a proprietary binary
+# rm -rf jamonapi/src/JAMonUsersGuide/JAMon_PB.zip
+# rm -rf $(find -name "CVS")
+# tar cJf jamonapi-2.74.tar.xz jamonapi
+Source0: %{name}-%{version}.tar.xz
+Source1: %{name}-%{version}.pom
+Patch0: %{name}-buildxml.patch
+Patch1: %{name}-jetty8.patch
+Patch2: %{name}-log4j12.patch
+Patch3: %{name}-jetty93.patch
+BuildRequires: java-devel javapackages-local ant tomcat-lib tomcat-servlet-4.0-api
+BuildRequires: tomcat-el-3.0-api jetty geronimo-interceptor log4j12 dos2unix
+Requires: geronimo-interceptor log4j12
+BuildArch: noarch
+%description
+JAMon API is a free, simple, high performance, thread safe,
+Java API that allows developers to easily monitor the
+performance and scalability of production applications. JAMon
+tracks hits, execution times (total, avg, min, max, std dev),
+and more.
+
+%package javadoc
+Summary: API documentation for %{name}
+%description javadoc
+This package contains API documentation for Java monitoring API.
+
+%prep
+%setup -q -n %{name}
+%patch0 -p0
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+sed -i "s|tomcat-el-2.2-api.jar|tomcat-el-api.jar|" src/ant/build.xml
+sed -i "s|tomcat-servlet-3.0-api.jar|tomcat-servlet-api.jar|" src/ant/build.xml
+sed -i 's|target="1.5" source="1.5"|target="1.6" source="1.6"|' src/ant/build.xml
+sed -i 's|"source" value="1.5"|"source" value="1.6"|' src/ant/build.xml
+sed -i 's|"vm" value="1.5"|"vm" value="1.6"|' src/ant/build.xml
+sed -i 's|packagenames="${package}"|packagenames="${package}" additionalparam="-Xdoclint:none"|' src/ant/build.xml
+mkdir dist
+mkdir lib
+
+%build
+pushd src/ant
+ant JAR
+ant javadoc
+popd
+find src/JAMonUsersGuide -type f | xargs chmod -x
+find src/JAMonUsersGuide -regex '.*\(xml\|css\|js\)' -o -name package-list | xargs dos2unix
+pushd src/JAMonUsersGuide/presentation/jamon_files/
+mv master04_stylesheet.css master04_stylesheet.css.iso8859-1
+iconv -f ISO-8859-1 -t UTF-8 master04_stylesheet.css.iso8859-1 > master04_stylesheet.css
+rm master04_stylesheet.css.iso8859-1
+popd
+cp -p src/JAMonUsersGuide/JAMonLicense.html .
+
+%install
+%mvn_artifact %{SOURCE1} dist/%{oname}-%{version}.jar
+%mvn_file com.jamonapi:jamon %{oname} %{name}
+%mvn_install -J src/doc/javadoc
+
+%files -f .mfiles
+%doc src/JAMonUsersGuide
+%license JAMonLicense.html
+
+%files javadoc -f .mfiles-javadoc
+%license JAMonLicense.html
+
+%changelog
+* Thu Sep 3 2020 huanghaitao - 2.74-1
+- package init
diff --git a/jamonapi.yaml b/jamonapi.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8f6764e5717e0a01a2cc7a863544a1a2039fb7ca
--- /dev/null
+++ b/jamonapi.yaml
@@ -0,0 +1,4 @@
+version_control: svn
+src_repo: http://svn.apache.org/repos/asf/geronimo/specs
+tag_prefix: "geronimo-jpa_3.0_spec-"
+seperator: "."