単純なフローを記載すると
- トランザクション取得
- コネクションを取得
- SQL発行
- コミットor ロールバック
- コネクション閉じる
package test; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; import javax.transaction.SystemException; import javax.transaction.UserTransaction; @WebServlet("/Test") public class Test extends HttpServlet { private static final long serialVersionUID = 1L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection con = null; UserTransaction utx = null; try { utx = getUserTransaction(); //トランザクションの取得 utx.begin(); //トランザクション開始 con = getConnection(); //コネクション取得 //何かSQL utx.commit(); } catch (Exception e) { if (utx != null) { try { utx.rollback(); } catch (IllegalStateException e1) { // TODO 自動生成された catch ブロック e1.printStackTrace(); } catch (SecurityException e1) { // TODO 自動生成された catch ブロック e1.printStackTrace(); } catch (SystemException e1) { // TODO 自動生成された catch ブロック e1.printStackTrace(); } } e.printStackTrace(); } finally { if (con != null) { try { con.close(); } catch (SQLException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } } } private UserTransaction getUserTransaction() throws NamingException { UserTransaction utx = null; InitialContext ctx = new InitialContext(); //アプリケーションが直接作成するスレッドなど、EE 以外のスレッド対してアクセス可能 utx = (UserTransaction) ctx.lookup("java:comp/UserTransaction"); return utx; } private Connection getConnection() throws NamingException, SQLException { Connection con = null; DataSource ds = null; InitialContext ctx = new InitialContext(); ds = (DataSource) ctx.lookup("java:jboss/datasources/XX");//XA-Datasourceを取得 con = ds.getConnection(); return con; } }参考URLhttps://access.redhat.com/site/documentation/ja-JP/JBoss_Enterprise_Application_Platform/6/html/Migration_Guide/chap-Migrate_Your_Application.html#Review_the_JNDI_Namespace_Rules
0 件のコメント:
コメントを投稿