⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testxaservlet.java

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 JAVA
字号:
/*- * See the file LICENSE for redistribution information. * * Copyright (c) 1997, 1998, 1999, 2000 *	Sleepycat Software.  All rights reserved. * * $Id: TestXAServlet.java,v 1.1 2002/04/24 03:26:33 dda Exp $ *//* * Simple test of XA, using WebLogic. */package com.sleepycat.test;import com.sleepycat.db.*;import com.sleepycat.db.xa.*;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.PrintWriter;import java.util.Hashtable;import javax.servlet.*;import javax.servlet.http.*;import javax.transaction.*;import javax.transaction.xa.*;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import weblogic.transaction.TxHelper;import weblogic.transaction.TransactionManager;public class TestXAServlet extends HttpServlet{    public static final String ENV_HOME = "TESTXADIR";    public static final String DEFAULT_URL = "t3://localhost:7001";    public static String filesep = System.getProperty("file.separator");    private static TransactionManager tm;    private static DbXAResource xaresource;    private static boolean initialized = false;    /**     * Utility to remove files recursively.     */    public static void removeRecursive(File f)    {        if (f.isDirectory()) {            String[] sub = f.list();            for (int i=0; i<sub.length; i++)                removeRecursive(new File(f.getName() + filesep + sub[i]));        }        f.delete();    }    /**     * Typically done only once, unless shutdown is invoked.  This     * sets up directories, and removes any work files from previous     * runs.  Also establishes a transaction manager that we'll use     * for various transactions.  Each call opens/creates a new DB     * environment in our work directory.     */    public static synchronized void startup()    {        if (initialized)            return;        try {            File dir = new File(ENV_HOME);            removeRecursive(dir);            dir.mkdirs();            System.out.println("Getting context");            InitialContext ic = getInitialContext(DEFAULT_URL);            System.out.println("Creating XAResource");            xaresource = new DbXAResource(ENV_HOME, 77, 0);            System.out.println("Registering with transaction manager");            tm = TxHelper.getTransactionManager();            tm.registerStaticResource("DbXA", xaresource);            initialized = true;        }        catch (Exception e) {            System.err.println("Exception: " + e);            e.printStackTrace();        }        initialized = true;    }    /**     * Closes the XA resource manager.     */    public static synchronized void shutdown(PrintWriter out)        throws XAException    {        if (!initialized)            return;        out.println("Closing the resource.");        xaresource.close(0);        out.println("Shutdown complete.");        initialized = false;     }    /**     * Should be called once per chunk of major activity.     */    public void initialize()    {        startup();    }    private static int count = 1;    private static boolean debugInited = false;    private Xid bogusXid;    public static synchronized int incrCount()    {         return count++;    }    public void debugSetup(PrintWriter out)        throws ServletException, IOException    {        try {            Db.load_db();        }        catch (Exception e) {            out.println("got exception during load: " + e);            System.out.println("got exception during load: " + e);        }        out.println("The servlet has been restarted, and Berkeley DB is loaded");        out.println("<p>If you're debugging, you should now start the debugger and set breakpoints.");    }    public void doXATransaction(PrintWriter out, String key, String value,                                String operation)        throws ServletException, IOException    {        try {            int counter = incrCount();            if (key == null || key.equals(""))                    key = "key" + counter;            if (value == null || value.equals(""))                    value = "value" + counter;                        out.println("Adding (\"" + key + "\", \"" + value + "\")");            System.out.println("XA transaction begin");	    tm.begin();            System.out.println("getting XA transaction");            DbXAResource.DbAttach attach = DbXAResource.xa_attach(null, null);            DbTxn txn = attach.get_txn();            DbEnv env = attach.get_env();            Db db = new Db(env, 0);            db.open(txn, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);            System.out.println("DB put " + key);            db.put(txn,                   new Dbt(key.getBytes()),                   new Dbt(value.getBytes()),                   0);            if (operation.equals("rollback")) {                out.println("<p>ROLLBACK");                System.out.println("XA transaction rollback");                tm.rollback();                System.out.println("XA rollback returned");                // The old db is no good after the rollback                // since the open was part of the transaction.                // Get another db for the cursor dump                //                db = new Db(env, 0);                db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);            }            else {                out.println("<p>COMMITTED");                System.out.println("XA transaction commit");                tm.commit();            }            // Show the current state of the database.            Dbc dbc = db.cursor(null, 0);            Dbt gotkey = new Dbt();            Dbt gotdata = new Dbt();            out.println("<p>Current database values:");            while (dbc.get(gotkey, gotdata, Db.DB_NEXT) == 0) {                out.println("<br>  " + getDbtString(gotkey) + " : "                                   + getDbtString(gotdata));            }            dbc.close();            db.close(0);        }        catch (DbException dbe) {            System.err.println("Db Exception: " + dbe);            out.println(" *** Exception received: " + dbe);            dbe.printStackTrace();        }        catch (FileNotFoundException fnfe) {            System.err.println("FileNotFoundException: " + fnfe);            out.println(" *** Exception received: " + fnfe);            fnfe.printStackTrace();        }        // Includes SystemException, NotSupportedException, RollbackException        catch (Exception e) {            System.err.println("Exception: " + e);            out.println(" *** Exception received: " + e);            e.printStackTrace();        }    }            private static Xid getBogusXid()        throws XAException    {        return new DbXid(1, "BOGUS_gtrid".getBytes(),                         "BOGUS_bqual".getBytes());    }    private static String getDbtString(Dbt dbt)    {        return new String(dbt.get_data(), 0, dbt.get_size());    }    /**     * doGet is called as a result of invoking the servlet.     */    public void doGet(HttpServletRequest req, HttpServletResponse resp)        throws ServletException, IOException    {        try {            resp.setContentType("text/html");            PrintWriter out = resp.getWriter();            String key = req.getParameter("key");            String value = req.getParameter("value");            String operation = req.getParameter("operation");            out.println("<HTML>");            out.println("<HEAD>");            out.println("<TITLE>Berkeley DB with XA</TITLE>");            out.println("</HEAD><BODY>");            out.println("<a href=\"TestXAServlet" +                        "\">Database put and commit</a><br>");            out.println("<a href=\"TestXAServlet?operation=rollback" +                        "\">Database put and rollback</a><br>");            out.println("<a href=\"TestXAServlet?operation=close" +                        "\">Close the XA resource manager</a><br>");            out.println("<a href=\"TestXAServlet?operation=forget" +                        "\">Forget an operation (bypasses TM)</a><br>");            out.println("<a href=\"TestXAServlet?operation=prepare" +                        "\">Prepare an operation (bypasses TM)</a><br>");            out.println("<br>");            if (!debugInited) {                // Don't initialize XA yet, give the user                // a chance to attach a debugger if necessary.                debugSetup(out);                debugInited = true;            }            else {                initialize();                if (operation == null)                    operation = "commit";                if (operation.equals("close")) {                    shutdown(out);                }                else if (operation.equals("forget")) {                    // A bogus test, we just make sure the API is callable.                    out.println("<p>FORGET");                    System.out.println("XA forget bogus XID (bypass TM)");                    xaresource.forget(getBogusXid());                }                else if (operation.equals("prepare")) {                    // A bogus test, we just make sure the API is callable.                    out.println("<p>PREPARE");                    System.out.println("XA prepare bogus XID (bypass TM)");                    xaresource.prepare(getBogusXid());                }                else {                    // commit, rollback, prepare, forget                    doXATransaction(out, key, value, operation);                }            }            out.println("</BODY></HTML>");            System.out.println("Finished.");        }        // Includes SystemException, NotSupportedException, RollbackException        catch (Exception e) {            System.err.println("Exception: " + e);            e.printStackTrace();        }    }    /**     * From weblogic's sample code:     *    samples/examples/jta/jmsjdbc/Client.java     */    private static InitialContext getInitialContext(String url)        throws NamingException    {        Hashtable env = new Hashtable();        env.put(Context.INITIAL_CONTEXT_FACTORY,                 "weblogic.jndi.WLInitialContextFactory");        env.put(Context.PROVIDER_URL, url);        return new InitialContext(env);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -