You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2010/09/24 02:22:54 UTC
svn commit: r1000669 - in /geronimo/server/trunk:
plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/
testsuite/javaee6-testsuite/jta1.1-test/
testsuite/javaee6-testsuite/jta1.1-test/src/main/jav...
Author: gawor
Date: Fri Sep 24 00:22:53 2010
New Revision: 1000669
URL: http://svn.apache.org/viewvc?rev=1000669&view=rev
Log:
Support injection of TransactionSynchronizationRegistry and TransactionManager
Added:
geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/InjectionServlet.java (with props)
Modified:
geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/AdminObjectRefBuilder.java
geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/pom.xml
geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/BJAcc.java
geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/BaseServlet.java
geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/DoTransfer.java
geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/SHAcc.java
geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/webapp/WEB-INF/web.xml
geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/test/java/org/apache/geronimo/testsuite/javaee6/tests/jtaTest.java
Modified: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/AdminObjectRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/AdminObjectRefBuilder.java?rev=1000669&r1=1000668&r2=1000669&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/AdminObjectRefBuilder.java (original)
+++ geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/AdminObjectRefBuilder.java Fri Sep 24 00:22:53 2010
@@ -22,13 +22,17 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.annotation.Resource;
import javax.naming.RefAddr;
import javax.naming.Reference;
import javax.naming.StringRefAddr;
+import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
import javax.xml.namespace.QName;
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.common.UnresolvedReferenceException;
@@ -44,6 +48,7 @@ import org.apache.geronimo.kernel.GBeanN
import org.apache.geronimo.kernel.config.Configuration;
import org.apache.geronimo.kernel.repository.Environment;
import org.apache.geronimo.naming.deployment.AbstractNamingBuilder;
+import org.apache.geronimo.naming.reference.GBeanReference;
import org.apache.geronimo.naming.reference.JndiReference;
import org.apache.geronimo.naming.reference.UserTransactionReference;
import org.apache.geronimo.xbeans.geronimo.naming.GerMessageDestinationDocument;
@@ -121,6 +126,17 @@ public class AdminObjectRefBuilder exten
public void buildNaming(JndiConsumer specDD, XmlObject plan, Module module, Map sharedContext) throws DeploymentException {
+
+ AbstractNameQuery transactionManager = module.getEarContext().getTransactionManagerName();
+ if (transactionManager != null) {
+ Set<AbstractNameQuery> query = new HashSet<AbstractNameQuery>();
+ query.add(transactionManager);
+ GBeanReference transactionManagerRef = new GBeanReference(module.getConfigId(), query, TransactionManager.class);
+ put("java:comp/TransactionManager", transactionManagerRef, module.getJndiContext(), new ArrayList<InjectionTarget>(), sharedContext);
+ GBeanReference transactionSynchronizationRef = new GBeanReference(module.getConfigId(), query, TransactionSynchronizationRegistry.class);
+ put("java:comp/TransactionSynchronizationRegistry", transactionSynchronizationRef, module.getJndiContext(), new ArrayList<InjectionTarget>(), sharedContext);
+ }
+
XmlObject[] gerResourceEnvRefsUntyped = plan == null ? NO_REFS : plan.selectChildren(GER_ADMIN_OBJECT_REF_QNAME_SET);
Map<String, GerResourceEnvRefType> refMap = mapResourceEnvRefs(gerResourceEnvRefsUntyped);
Map<String, Map<String, GerMessageDestinationType>> messageDestinations = module.getRootEarContext().getMessageDestinations();
@@ -264,6 +280,9 @@ public class AdminObjectRefBuilder exten
if ("javax.transaction.TransactionSynchronizationRegistry".equals(type)) {
return new JndiReference("java:comp/TransactionSynchronizationRegistry");
}
+ if ("javax.transaction.TransactionManager".equals(type)) {
+ return new JndiReference("java:comp/TransactionManager");
+ }
try {
AbstractNameQuery containerId = getAdminObjectContainerId(name, gerResourceEnvRef);
Reference ref = buildAdminObjectReference(module, containerId);
@@ -457,6 +476,7 @@ public class AdminObjectRefBuilder exten
resourceType.equals("javax.validation.Validator") ||
resourceType.equals("javax.validation.ValidatorFactory") ||
resourceType.equals("javax.transaction.UserTransaction") ||
+ resourceType.equals("javax.transaction.TransactionManager") ||
resourceType.equals("javax.transaction.TransactionSynchronizationRegistry")) {
//mapped resource-env-ref
addResourceEnvRef(annotatedApp, resourceName, resourceType, method, field, annotation);
Modified: geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/pom.xml?rev=1000669&r1=1000668&r2=1000669&view=diff
==============================================================================
--- geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/pom.xml (original)
+++ geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/pom.xml Fri Sep 24 00:22:53 2010
@@ -17,11 +17,8 @@
specific language governing permissions and limitations
under the License.
-->
-
<!-- $Rev$ $Date$ -->
-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -32,7 +29,7 @@
<artifactId>jta1.1-test</artifactId>
<name>Geronimo TestSuite :: Java EE 6 Testsuite :: jta1.1-test</name>
- <description>
+ <description>
</description>
<packaging>war</packaging>
@@ -42,7 +39,7 @@
<artifactId>geronimo-servlet_3.0_spec</artifactId>
<scope>provided</scope>
</dependency>
- <dependency>
+ <dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-annotation_1.1_spec</artifactId>
<scope>provided</scope>
@@ -51,76 +48,62 @@
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jta_1.1_spec</artifactId>
<scope>provided</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-war-plugin</artifactId>
- <configuration>
- <archiveClasses>false</archiveClasses>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- <profiles>
- <profile>
- <id>it</id>
- <activation>
- <property>
- <name>it</name>
- </property>
- </activation>
- <build>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>selenium-maven-plugin</artifactId>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <configuration>
- <suiteXmlFiles>
- <suiteXmlFile>
- ${project.build.testOutputDirectory}/testng.xml
- </suiteXmlFile>
- </suiteXmlFiles>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.geronimo.buildsupport</groupId>
- <artifactId>geronimo-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>deploy-wars</id>
- <phase>pre-integration-test</phase>
- <goals>
- <goal>deploy-module</goal>
- </goals>
- <configuration>
- <moduleArchive>${project.build.directory}/${project.artifactId}-${project.version}.war</moduleArchive>
- </configuration>
- </execution>
+ </dependency>
+ </dependencies>
- <execution>
- <id>undeploy-war-as-moduleId</id>
- <phase>post-integration-test</phase>
- <goals>
- <goal>undeploy-module</goal>
- </goals>
+ <profiles>
+ <profile>
+ <id>it</id>
+ <activation>
+ <property>
+ <name>it</name>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>selenium-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
<configuration>
- <moduleId>${project.groupId}/${project.artifactId}/${project.version}/war</moduleId>
+ <suiteXmlFiles>
+ <suiteXmlFile>
+ ${project.build.testOutputDirectory}/testng.xml
+ </suiteXmlFile>
+ </suiteXmlFiles>
</configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </profile>
-</profiles>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.geronimo.buildsupport</groupId>
+ <artifactId>geronimo-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>deploy-wars</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>deploy-module</goal>
+ </goals>
+ <configuration>
+ <moduleArchive>${project.build.directory}/${project.artifactId}-${project.version}.war</moduleArchive>
+ </configuration>
+ </execution>
+ <execution>
+ <id>undeploy-war-as-moduleId</id>
+ <phase>post-integration-test</phase>
+ <goals>
+ <goal>undeploy-module</goal>
+ </goals>
+ <configuration>
+ <moduleId>${project.groupId}/${project.artifactId}/${project.version}/war</moduleId>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
Modified: geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/BJAcc.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/BJAcc.java?rev=1000669&r1=1000668&r2=1000669&view=diff
==============================================================================
--- geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/BJAcc.java (original)
+++ geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/BJAcc.java Fri Sep 24 00:22:53 2010
@@ -32,37 +32,35 @@ import javax.sql.DataSource;
maxPoolSize=10,
properties = {"createDatabase = create"})
*/
-@DataSourceDefinitions({
- @DataSourceDefinition(name = "java:app/BJAccNonTx",
- className="org.apache.derby.jdbc.ClientDataSource",
- portNumber = 1527,
- serverName = "localhost",
- url="jdbc:derby://localhost:1527/BJAcc",
- databaseName="BJAcc",
- user="system",
- password="manager",
- transactional=false,
- properties = {"createDatabase=create"}),
-
-
- @DataSourceDefinition(name = "java:app/BJAccTx",
- className="org.apache.derby.jdbc.ClientXADataSource",
- portNumber = 1527,
- serverName = "localhost",
- url="jdbc:derby://localhost:1527/BJAcc",
- databaseName="BJAcc",
- user="system",
- password="manager",
- transactional= true,
- properties = {"createDatabase=create"})
- })
-
+@DataSourceDefinitions( {
+ @DataSourceDefinition(name = "java:app/BJAccNonTx",
+ className = "org.apache.derby.jdbc.ClientDataSource",
+ portNumber = 1527,
+ serverName = "localhost",
+ url = "jdbc:derby://localhost:1527/BJAcc",
+ databaseName = "BJAcc",
+ user = "system",
+ password = "manager",
+ transactional = false,
+ properties = { "createDatabase=create" }),
+
+ @DataSourceDefinition(name = "java:app/BJAccTx",
+ className = "org.apache.derby.jdbc.ClientXADataSource",
+ portNumber = 1527,
+ serverName = "localhost",
+ url = "jdbc:derby://localhost:1527/BJAcc",
+ databaseName = "BJAcc",
+ user = "system",
+ password = "manager",
+ transactional = true,
+ properties = { "createDatabase=create" })
+} )
public class BJAcc extends BaseServlet {
- @Resource(lookup="java:app/BJAccNonTx")
+ @Resource(lookup = "java:app/BJAccNonTx")
DataSource dataSourceNonTx;
- @Resource(lookup="java:app/BJAccTx")
+ @Resource(lookup = "java:app/BJAccTx")
DataSource dataSourcenTx;
@Override
Modified: geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/BaseServlet.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/BaseServlet.java?rev=1000669&r1=1000668&r2=1000669&view=diff
==============================================================================
--- geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/BaseServlet.java (original)
+++ geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/BaseServlet.java Fri Sep 24 00:22:53 2010
@@ -25,7 +25,6 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
-import java.util.Calendar;
import java.util.List;
import javax.servlet.ServletConfig;
@@ -45,11 +44,13 @@ public abstract class BaseServlet extend
return getClass().getName();
}
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doPost(request,response);
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ doPost(request, response);
}
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<html><head><title>");
@@ -80,7 +81,7 @@ public abstract class BaseServlet extend
}
public void init(ServletConfig config) {
- //System.out.println("Initializing servlet");
+ // System.out.println("Initializing servlet");
}
public void initDB() throws SQLException {
@@ -94,15 +95,15 @@ public abstract class BaseServlet extend
}
try {
- stmt.executeUpdate("CREATE TABLE ACCOUNTS (ID INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, SAVINGS INTEGER)");
+ stmt
+ .executeUpdate("CREATE TABLE ACCOUNTS (ID INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, SAVINGS INTEGER)");
} finally {
stmt.close();
con.close();
}
-
addAccount(200);
- //addAccount(100);
+ // addAccount(100);
}
public List<Account> getAccounts() throws SQLException {
@@ -110,8 +111,7 @@ public abstract class BaseServlet extend
Connection con = getTxDataSourceB().getConnection();
Statement stmt = con.createStatement();
try {
- ResultSet rs = stmt.executeQuery(
- "SELECT ID, SAVINGS FROM ACCOUNTS");
+ ResultSet rs = stmt.executeQuery("SELECT ID, SAVINGS FROM ACCOUNTS");
while (rs.next()) {
Account c = new Account();
c.id = rs.getLong(1);
@@ -128,10 +128,9 @@ public abstract class BaseServlet extend
public void addAccount(long sav) throws SQLException {
Connection con = getTxDataSourceB().getConnection();
- PreparedStatement pstmt = con.prepareStatement(
- "INSERT INTO ACCOUNTS (SAVINGS) VALUES (?)");
+ PreparedStatement pstmt = con.prepareStatement("INSERT INTO ACCOUNTS (SAVINGS) VALUES (?)");
try {
- pstmt.setLong(1,sav);
+ pstmt.setLong(1, sav);
pstmt.executeUpdate();
} finally {
pstmt.close();
@@ -139,9 +138,9 @@ public abstract class BaseServlet extend
}
}
-
private static class Account {
long id;
+
long savings;
}
}
Modified: geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/DoTransfer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/DoTransfer.java?rev=1000669&r1=1000668&r2=1000669&view=diff
==============================================================================
--- geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/DoTransfer.java (original)
+++ geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/DoTransfer.java Fri Sep 24 00:22:53 2010
@@ -28,134 +28,131 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
-import javax.annotation.Resource;
import javax.transaction.UserTransaction;
/**
* Servlet implementation class DoTransfer
*/
public class DoTransfer extends HttpServlet {
- private static final long serialVersionUID = 1L;
- //@Resource(lookup="java:app/SHAcc")
- //DataSource ds_SH;
-
- //@Resource(lookup="java:app/SHAcc")
- //DataSource ds_BJ;
+ private static final long serialVersionUID = 1L;
+
+ // @Resource(lookup="java:app/SHAcc")
+ // DataSource ds_SH;
+
+ // @Resource(lookup="java:app/SHAcc")
+ // DataSource ds_BJ;
public DoTransfer() {
super();
}
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ }
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
-
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
- int amount = new Integer(request.getParameter("amount")).intValue();
- int isFaildFlag = new Integer(request.getParameter("flag")).intValue();
- boolean failFlag = ( isFaildFlag == 1 )? true :false;
+ int amount = new Integer(request.getParameter("amount")).intValue();
+ int isFaildFlag = new Integer(request.getParameter("flag")).intValue();
+ boolean failFlag = (isFaildFlag == 1) ? true : false;
String output = new String();
- UserTransaction tx = null;
- DataSource ds = null;
- Connection conn_SH = null;
- Connection conn_BJ = null;
- Statement stmt = null;
- String sql =null;
- ResultSet rs = null;
-
- try{
- Context initContext = new InitialContext();
-
- tx = (UserTransaction)initContext.lookup("java:comp/UserTransaction");
+ UserTransaction tx = null;
+ DataSource ds = null;
+ Connection conn_SH = null;
+ Connection conn_BJ = null;
+ Statement stmt = null;
+ String sql = null;
+ ResultSet rs = null;
+
+ try {
+ Context initContext = new InitialContext();
+
+ tx = (UserTransaction) initContext.lookup("java:comp/UserTransaction");
- // Start a transaction
- tx.begin();
+ // Start a transaction
+ tx.begin();
- //System.out.println("tx begin!");
+ // System.out.println("tx begin!");
- // First, add to SH
- ds = (javax.sql.DataSource) initContext.lookup("java:app/SHAccTx");
+ // First, add to SH
+ ds = (javax.sql.DataSource) initContext.lookup("java:app/SHAccTx");
System.out.println("in DoTransfer, get java:app/SHAcc sucess!");
- //conn_SH = ds_SH.getConnection();
- conn_SH = ds.getConnection();
+ // conn_SH = ds_SH.getConnection();
+ conn_SH = ds.getConnection();
conn_SH.setAutoCommit(false);
- stmt = conn_SH.createStatement();
- sql = "UPDATE ACCOUNTS set SAVINGS = SAVINGS+"+amount;
- stmt.executeUpdate(sql);
- //System.out.println("execute SQL 1 sucess!");
-
- if(failFlag)
- {throw new Exception("fail shoud happen!");}
-
- // Second, del in BJ
- ds = (javax.sql.DataSource) initContext.lookup("java:app/BJAccTx");
- //System.out.println("in DoTransfer, get java:app/BJAcc sucess!");
- //conn_BJ = ds_BJ.getConnection();
- conn_BJ = ds.getConnection();
+ stmt = conn_SH.createStatement();
+ sql = "UPDATE ACCOUNTS set SAVINGS = SAVINGS+" + amount;
+ stmt.executeUpdate(sql);
+ // System.out.println("execute SQL 1 sucess!");
+
+ if (failFlag) {
+ throw new Exception("fail shoud happen!");
+ }
+
+ // Second, del in BJ
+ ds = (javax.sql.DataSource) initContext.lookup("java:app/BJAccTx");
+ // System.out.println("in DoTransfer, get java:app/BJAcc sucess!");
+ // conn_BJ = ds_BJ.getConnection();
+ conn_BJ = ds.getConnection();
conn_BJ.setAutoCommit(false);
- stmt = conn_BJ.createStatement();
- rs = stmt.executeQuery("SELECT * FROM ACCOUNTS");
- int saving_BJ = 0;
- while (rs.next()) {
- saving_BJ = rs.getInt("SAVINGS");
- if (saving_BJ < amount){
- // throw a exception if no enough money left
- throw new Exception("No enough money left in BJ Account!");
- }
- }
-
- sql = "UPDATE ACCOUNTS set SAVINGS = SAVINGS-"+amount;
- stmt.executeUpdate(sql);
-
- // commit all the operations
- tx.commit();
-
-
- }
- catch(Exception e){
- if(tx!=null){
- try{
- // rollback the operations
- tx.rollback();
- //System.out.println("catch: roll back success.");
- output += "catch: roll back success.";
- }catch(Exception e1){
- //System.out.println("catch: roll back fail.");
- output += "catch: roll back fail.";
- }
- }
- System.out.println("catch: " + e.getClass() + "; " + e.getMessage()+"");
- }
- finally{
- if(conn_SH!=null){
- try{
- conn_SH.close();
- //System.out.println("finally: close conn_SH success.");
- output += "finally: close conn_SH success.";
- }catch(Exception e1){
- //System.out.println("finally: close conn_SH fail.");
- output += "finally: close conn_SH fail.";
- }
- }
- if(conn_BJ!=null){
- try{
- conn_BJ.close();
- //System.out.println("finally: close conn_BJ success.");
- output += "finally: close conn_BJ success.";
- }catch(Exception e1){
- //System.out.println("finally: close conn_BJ fail.");
- output += "finally: close conn_BJ success.";
- }
- }
- request.setAttribute("output",output);
- //response.sendRedirect("AccountList.jsp");
- getServletContext().getRequestDispatcher("/display.jsp").forward(request,response);
- }
- }
+ stmt = conn_BJ.createStatement();
+ rs = stmt.executeQuery("SELECT * FROM ACCOUNTS");
+ int saving_BJ = 0;
+ while (rs.next()) {
+ saving_BJ = rs.getInt("SAVINGS");
+ if (saving_BJ < amount) {
+ // throw a exception if no enough money left
+ throw new Exception("No enough money left in BJ Account!");
+ }
+ }
+
+ sql = "UPDATE ACCOUNTS set SAVINGS = SAVINGS-" + amount;
+ stmt.executeUpdate(sql);
+
+ // commit all the operations
+ tx.commit();
+
+ } catch (Exception e) {
+ if (tx != null) {
+ try {
+ // rollback the operations
+ tx.rollback();
+ // System.out.println("catch: roll back success.");
+ output += "catch: roll back success.";
+ } catch (Exception e1) {
+ // System.out.println("catch: roll back fail.");
+ output += "catch: roll back fail.";
+ }
+ }
+ System.out.println("catch: " + e.getClass() + "; " + e.getMessage() + "");
+ } finally {
+ if (conn_SH != null) {
+ try {
+ conn_SH.close();
+ // System.out.println("finally: close conn_SH success.");
+ output += "finally: close conn_SH success.";
+ } catch (Exception e1) {
+ // System.out.println("finally: close conn_SH fail.");
+ output += "finally: close conn_SH fail.";
+ }
+ }
+ if (conn_BJ != null) {
+ try {
+ conn_BJ.close();
+ // System.out.println("finally: close conn_BJ success.");
+ output += "finally: close conn_BJ success.";
+ } catch (Exception e1) {
+ // System.out.println("finally: close conn_BJ fail.");
+ output += "finally: close conn_BJ success.";
+ }
+ }
+ request.setAttribute("output", output);
+ // response.sendRedirect("AccountList.jsp");
+ getServletContext().getRequestDispatcher("/display.jsp").forward(request, response);
+ }
+ }
}
Added: geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/InjectionServlet.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/InjectionServlet.java?rev=1000669&view=auto
==============================================================================
--- geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/InjectionServlet.java (added)
+++ geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/InjectionServlet.java Fri Sep 24 00:22:53 2010
@@ -0,0 +1,58 @@
+/**
+ * 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.geronimo.sample.servlet;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.annotation.Resource;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
+
+public class InjectionServlet extends HttpServlet {
+
+ @Resource
+ private TransactionSynchronizationRegistry tsr;
+
+ @Resource
+ private TransactionManager tm;
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ doPost(request, response);
+ }
+
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ PrintWriter out = response.getWriter();
+ out.println("<html><head><title>InjectionTest</title></head></html><body>");
+
+ out.println("TransactionSynchronizationRegistry: " + ((tsr == null) ? "not ok" : "ok"));
+ out.println("<br/>");
+ out.println("TransactionManager: " + ((tm == null) ? "not ok" : "ok"));
+ out.println("<br/>");
+
+ out.println("<a href=\"index.jsp\">Return</a>");
+ out.println("</body></html>");
+ }
+
+}
Propchange: geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/InjectionServlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/InjectionServlet.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/InjectionServlet.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/SHAcc.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/SHAcc.java?rev=1000669&r1=1000668&r2=1000669&view=diff
==============================================================================
--- geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/SHAcc.java (original)
+++ geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/java/org/apache/geronimo/sample/servlet/SHAcc.java Fri Sep 24 00:22:53 2010
@@ -22,37 +22,35 @@ import javax.annotation.sql.DataSourceDe
import javax.annotation.sql.DataSourceDefinitions;
import javax.sql.DataSource;
-@DataSourceDefinitions({
- @DataSourceDefinition(name = "java:app/SHAccNonTx",
- className="org.apache.derby.jdbc.ClientDataSource",
- portNumber = 1527,
- serverName = "localhost",
- url="jdbc:derby://localhost:1527/SHAcc",
- databaseName="SHAcc",
- user="system",
- password="manager",
- transactional=false,
- properties = {"createDatabase=create"}),
-
-
- @DataSourceDefinition(name = "java:app/SHAccTx",
- className="org.apache.derby.jdbc.ClientXADataSource",
- portNumber = 1527,
- serverName = "localhost",
- url="jdbc:derby://localhost:1527/SHAcc",
- databaseName="SHAcc",
- user="system",
- password="manager",
- transactional= true,
- properties = {"createDatabase=create"})
- })
-
+@DataSourceDefinitions( {
+ @DataSourceDefinition(name = "java:app/SHAccNonTx",
+ className = "org.apache.derby.jdbc.ClientDataSource",
+ portNumber = 1527,
+ serverName = "localhost",
+ url = "jdbc:derby://localhost:1527/SHAcc",
+ databaseName = "SHAcc",
+ user = "system",
+ password = "manager",
+ transactional = false,
+ properties = { "createDatabase=create" }),
+
+ @DataSourceDefinition(name = "java:app/SHAccTx",
+ className = "org.apache.derby.jdbc.ClientXADataSource",
+ portNumber = 1527,
+ serverName = "localhost",
+ url = "jdbc:derby://localhost:1527/SHAcc",
+ databaseName = "SHAcc",
+ user = "system",
+ password = "manager",
+ transactional = true,
+ properties = { "createDatabase=create" })
+} )
public class SHAcc extends BaseServlet {
- @Resource(lookup="java:app/SHAccNonTx")
+ @Resource(lookup = "java:app/SHAccNonTx")
DataSource dataSourceNonTx;
- @Resource(lookup="java:app/SHAccTx")
+ @Resource(lookup = "java:app/SHAccTx")
DataSource dataSourcenTx;
@Override
Modified: geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/webapp/WEB-INF/web.xml?rev=1000669&r1=1000668&r2=1000669&view=diff
==============================================================================
--- geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/webapp/WEB-INF/web.xml (original)
+++ geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/main/webapp/WEB-INF/web.xml Fri Sep 24 00:22:53 2010
@@ -15,44 +15,55 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
- <servlet>
- <display-name>SHAcc</display-name>
- <servlet-name>SHAcc</servlet-name>
- <servlet-class>org.apache.geronimo.sample.servlet.SHAcc</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>SHAcc</servlet-name>
- <url-pattern>/SHAcc</url-pattern>
- </servlet-mapping>
-
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+ version="2.5">
<servlet>
- <display-name>BJAcc</display-name>
- <servlet-name>BJAcc</servlet-name>
- <servlet-class>org.apache.geronimo.sample.servlet.BJAcc</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>BJAcc</servlet-name>
- <url-pattern>/BJAcc</url-pattern>
- </servlet-mapping>
-
- <servlet>
- <display-name>DoTransfer</display-name>
- <servlet-name>DoTransfer</servlet-name>
- <servlet-class>org.apache.geronimo.sample.servlet.DoTransfer</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>DoTransfer</servlet-name>
- <url-pattern>/DoTransfer</url-pattern>
- </servlet-mapping>
-
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <session-config>
+ <display-name>SHAcc</display-name>
+ <servlet-name>SHAcc</servlet-name>
+ <servlet-class>org.apache.geronimo.sample.servlet.SHAcc</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>SHAcc</servlet-name>
+ <url-pattern>/SHAcc</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <display-name>BJAcc</display-name>
+ <servlet-name>BJAcc</servlet-name>
+ <servlet-class>org.apache.geronimo.sample.servlet.BJAcc</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>BJAcc</servlet-name>
+ <url-pattern>/BJAcc</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <display-name>DoTransfer</display-name>
+ <servlet-name>DoTransfer</servlet-name>
+ <servlet-class>org.apache.geronimo.sample.servlet.DoTransfer</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>DoTransfer</servlet-name>
+ <url-pattern>/DoTransfer</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <display-name>Injection</display-name>
+ <servlet-name>Injection</servlet-name>
+ <servlet-class>org.apache.geronimo.sample.servlet.InjectionServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>Injection</servlet-name>
+ <url-pattern>/injection</url-pattern>
+ </servlet-mapping>
+
+ <welcome-file-list>
+ <welcome-file>index.jsp</welcome-file>
+ </welcome-file-list>
+ <session-config>
<session-timeout>
30
</session-timeout>
</session-config>
-</web-app>
\ No newline at end of file
+</web-app>
Modified: geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/test/java/org/apache/geronimo/testsuite/javaee6/tests/jtaTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/test/java/org/apache/geronimo/testsuite/javaee6/tests/jtaTest.java?rev=1000669&r1=1000668&r2=1000669&view=diff
==============================================================================
--- geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/test/java/org/apache/geronimo/testsuite/javaee6/tests/jtaTest.java (original)
+++ geronimo/server/trunk/testsuite/javaee6-testsuite/jta1.1-test/src/test/java/org/apache/geronimo/testsuite/javaee6/tests/jtaTest.java Fri Sep 24 00:22:53 2010
@@ -22,65 +22,75 @@ package org.apache.geronimo.testsuite.ja
import org.apache.geronimo.testsupport.SeleniumTestSupport;
import org.testng.Assert;
import org.testng.annotations.Test;
-import static org.testng.Assert.*;
-import java.util.regex.Pattern;
public class jtaTest extends SeleniumTestSupport {
- @Test
- public void testDerbyTxSucessCommit() throws Exception {
- selenium.open("/jta1.1-test/");
- selenium.click("link=BJAcc");
- selenium.waitForPageToLoad("30000");
- selenium.click("link=Return");
- selenium.waitForPageToLoad("30000");
- selenium.click("link=SHAcc");
- selenium.waitForPageToLoad("30000");
- selenium.click("link=Return");
- selenium.waitForPageToLoad("30000");
- selenium.click("link=TestJTA");
- selenium.waitForPageToLoad("30000");
- //test if transfer from BJ to SH sucess
- selenium.type("amount", "1");
- selenium.type("flag", "0");
- selenium.click("//input[@value='Submit']");
- selenium.waitForPageToLoad("30000");
- Assert.assertEquals("199", selenium.getText("//*[@id=\"bj\"]"));
- Assert.assertEquals("201", selenium.getText("//*[@id=\"sh\"]"));
- //test if the DoTransfer Servlet can invoked again
- selenium.type("amount", "1");
- selenium.type("flag", "0");
- selenium.click("//input[@value='Submit']");
- selenium.waitForPageToLoad("30000");
- Assert.assertEquals("198", selenium.getText("//*[@id=\"bj\"]"));
- Assert.assertEquals("202", selenium.getText("//*[@id=\"sh\"]"));
- }
-
- @Test
- public void testDerbyTxRollback() throws Exception {
- selenium.open("/jta1.1-test/");
- selenium.click("link=BJAcc");
- selenium.waitForPageToLoad("30000");
- selenium.click("link=Return");
- selenium.waitForPageToLoad("30000");
- selenium.click("link=SHAcc");
- selenium.waitForPageToLoad("30000");
- selenium.click("link=Return");
- selenium.waitForPageToLoad("30000");
- selenium.click("link=TestJTA");
- selenium.waitForPageToLoad("30000");
- //test if transaction fail can occured
- selenium.type("amount", "1");
- selenium.type("flag", "1");//input 1 for transaction rollback
- selenium.click("//input[@value='Submit']");
- selenium.waitForPageToLoad("30000");
- Assert.assertEquals("200", selenium.getText("//*[@id=\"bj\"]"));
- Assert.assertEquals("200", selenium.getText("//*[@id=\"sh\"]"));
- //test if the DoTransfer Servlet can invoked again and do transaction.commit()
- selenium.type("amount", "10");
- selenium.type("flag", "0");
- selenium.click("//input[@value='Submit']");
- selenium.waitForPageToLoad("30000");
- Assert.assertEquals("190", selenium.getText("//*[@id=\"bj\"]"));
- Assert.assertEquals("210", selenium.getText("//*[@id=\"sh\"]"));
- }
+
+ @Test
+ public void testDerbyTxSucessCommit() throws Exception {
+ selenium.open("/jta1.1-test/");
+ selenium.click("link=BJAcc");
+ selenium.waitForPageToLoad("30000");
+ selenium.click("link=Return");
+ selenium.waitForPageToLoad("30000");
+ selenium.click("link=SHAcc");
+ selenium.waitForPageToLoad("30000");
+ selenium.click("link=Return");
+ selenium.waitForPageToLoad("30000");
+ selenium.click("link=TestJTA");
+ selenium.waitForPageToLoad("30000");
+ // test if transfer from BJ to SH sucess
+ selenium.type("amount", "1");
+ selenium.type("flag", "0");
+ selenium.click("//input[@value='Submit']");
+ selenium.waitForPageToLoad("30000");
+ Assert.assertEquals("199", selenium.getText("//*[@id=\"bj\"]"));
+ Assert.assertEquals("201", selenium.getText("//*[@id=\"sh\"]"));
+ // test if the DoTransfer Servlet can invoked again
+ selenium.type("amount", "1");
+ selenium.type("flag", "0");
+ selenium.click("//input[@value='Submit']");
+ selenium.waitForPageToLoad("30000");
+ Assert.assertEquals("198", selenium.getText("//*[@id=\"bj\"]"));
+ Assert.assertEquals("202", selenium.getText("//*[@id=\"sh\"]"));
+ }
+
+ @Test
+ public void testDerbyTxRollback() throws Exception {
+ selenium.open("/jta1.1-test/");
+ selenium.click("link=BJAcc");
+ selenium.waitForPageToLoad("30000");
+ selenium.click("link=Return");
+ selenium.waitForPageToLoad("30000");
+ selenium.click("link=SHAcc");
+ selenium.waitForPageToLoad("30000");
+ selenium.click("link=Return");
+ selenium.waitForPageToLoad("30000");
+ selenium.click("link=TestJTA");
+ selenium.waitForPageToLoad("30000");
+ // test if transaction fail can occured
+ selenium.type("amount", "1");
+ selenium.type("flag", "1");// input 1 for transaction rollback
+ selenium.click("//input[@value='Submit']");
+ selenium.waitForPageToLoad("30000");
+ Assert.assertEquals("200", selenium.getText("//*[@id=\"bj\"]"));
+ Assert.assertEquals("200", selenium.getText("//*[@id=\"sh\"]"));
+ // test if the DoTransfer Servlet can invoked again and do
+ // transaction.commit()
+ selenium.type("amount", "10");
+ selenium.type("flag", "0");
+ selenium.click("//input[@value='Submit']");
+ selenium.waitForPageToLoad("30000");
+ Assert.assertEquals("190", selenium.getText("//*[@id=\"bj\"]"));
+ Assert.assertEquals("210", selenium.getText("//*[@id=\"sh\"]"));
+ }
+
+ @Test
+ public void testInjection() throws Exception {
+ selenium.open("/jta1.1-test/injection");
+ selenium.waitForPageToLoad("30000");
+ String text = selenium.getBodyText();
+ System.out.println(text);
+ assertTrue(text.contains("TransactionSynchronizationRegistry: ok"));
+ assertTrue(text.contains("TransactionManager: ok"));
+ }
}