diff --git a/ipojo/annotations/pom.xml b/ipojo/annotations/pom.xml
index a30fe8a..2c34444 100644
--- a/ipojo/annotations/pom.xml
+++ b/ipojo/annotations/pom.xml
@@ -6,9 +6,9 @@
 	to you under the Apache License, Version 2.0 (the
 	"License"); you may not use this file except in compliance
 	with the License.  You may obtain a copy of the License at
-	
+
 	http://www.apache.org/licenses/LICENSE-2.0
-	
+
 	Unless required by applicable law or agreed to in writing,
 	software distributed under the License is distributed on an
 	"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -54,12 +54,13 @@
 							org.apache.felix.ipojo.handlers.jmx,
 							org.apache.felix.ipojo.extender,
 							org.apache.felix.ipojo.whiteboard,
-							org.apache.felix.ipojo.handlers.event
+							org.apache.felix.ipojo.handlers.event,
+							org.apache.felix.ipojo.transaction
 						 </Export-Package>
 						<Include-Resource> META-INF/LICENCE=LICENSE,
 							META-INF/NOTICE=NOTICE </Include-Resource>
 					</instructions>
-					<obrRepository>NONE</obrRepository>					
+					<obrRepository>NONE</obrRepository>
 				</configuration>
 			</plugin>
 			<plugin>
diff --git a/ipojo/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transaction.java b/ipojo/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transaction.java
new file mode 100644
index 0000000..142222a
--- /dev/null
+++ b/ipojo/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transaction.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.transaction;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Transaction Handler annotation.
+ * Allows the declaration of transactionnal methods
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.TYPE)
+public @interface Transaction {
+
+    /**
+     * Sets the Transaction field. The specified field must be of the type
+     * Transaction.
+     */
+    String field() default "";
+
+    /**
+     * Sets the method called when a transaction is committed.
+     */
+    String oncommit() default "";
+
+    /**
+     * Sets the method called when a transaction is rolled back.
+     */
+    String onrollback() default "";
+
+
+}
diff --git a/ipojo/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transactionnal.java b/ipojo/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transactionnal.java
new file mode 100644
index 0000000..f705051
--- /dev/null
+++ b/ipojo/annotations/src/main/java/org/apache/felix/ipojo/transaction/Transactionnal.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.transaction;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Transactionnal Method annotation.
+ * Allows the declaration of transactionnal method.
+ * Be aware that despite is it provided in the annotations jar,
+ * it refers to an external handler.
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@Target(ElementType.METHOD)
+public @interface Transactionnal {
+
+    /**
+     * Sets the transaction timeout.
+     */
+    long timeout() default 0;;
+
+    /**
+     * Sets the transaction propagation policy.
+     * Supported values are : requires mandatory, notsupported, never, requiresnew.
+     */
+    String propagation() default "requires";
+
+    /**
+     * Sets the exceptions that do not rollback the current transaction.
+     */
+    String[] norollbackfor() default {};
+
+    /**
+     * Sets if the transaction rollback throws an exception.
+     */
+    boolean exceptiononrollback() default false;
+
+
+}
