Package jca.simple

Source Code of jca.simple.SimpleBean$MyKeyCreator

package jca.simple;

import java.rmi.RemoteException;

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.Context;
import javax.naming.InitialContext;

import com.sleepycat.je.Cursor;
import com.sleepycat.je.Database;
import com.sleepycat.je.SecondaryDatabase;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.SecondaryConfig;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.SecondaryKeyCreator;
import com.sleepycat.je.Transaction;
import com.sleepycat.je.jca.ra.JEConnection;
import com.sleepycat.je.jca.ra.JEConnectionFactory;

public class SimpleBean implements SessionBean {

    /*
     * Set this to something appropriate for your environment.  Make sure it
     * matches the ra.xml.
     */
    private final String JE_ENV = "/tmp/je_store";
    private final boolean TRANSACTIONAL = true;

    private SessionContext sessionCtx;

    public void ejbCreate() {
    }

    public void ejbRemove() {
    }

    public void setSessionContext(SessionContext context) {
  sessionCtx = context;
    }

    public void unsetSessionContext() {
  sessionCtx = null;
    }

    public void ejbActivate() {
    }

    public void ejbPassivate() {
    }

    public void put(String key, String data)
  throws RemoteException {

  try {
      Environment env = null;
      Transaction txn = null;
      Database db = null;
      SecondaryDatabase secDb = null;
      Cursor cursor = null;
      JEConnection dc = null;
      try {
    dc = getConnection(JE_ENV);

    env = dc.getEnvironment();
    DatabaseConfig dbConfig = new DatabaseConfig();
    SecondaryConfig secDbConfig = new SecondaryConfig();
    dbConfig.setAllowCreate(true);
    dbConfig.setTransactional(TRANSACTIONAL);
    secDbConfig.setAllowCreate(true);
    secDbConfig.setTransactional(TRANSACTIONAL);
    secDbConfig.setKeyCreator(new MyKeyCreator());

    /*
     * Use JEConnection.openDatabase() to obtain a cached Database
     * handle.  Do not call close() on Database handles obtained
     * using this method.
     */
    db = dc.openDatabase("db", dbConfig);
    secDb = dc.openSecondaryDatabase("secDb", db, secDbConfig);
    System.out.println("blort");
    cursor = db.openCursor(null, null);
    cursor.put(new DatabaseEntry(key.getBytes()),
         new DatabaseEntry(data.getBytes()));
      } finally {
    if (cursor != null) {
        cursor.close();
    }
    if (dc != null) {
        dc.close();
    }
      }
  } catch (Exception e) {
      System.err.println("Failure in put" + e);
  }
    }

    public String get(String key)
  throws RemoteException {

  try {
      Environment env = null;
      Transaction txn = null;
      Database db = null;
      Cursor cursor = null;
      JEConnection dc = null;
      try {
    dc = getConnection(JE_ENV);

    env = dc.getEnvironment();
    DatabaseConfig dbConfig = new DatabaseConfig();
    dbConfig.setAllowCreate(true);
    dbConfig.setTransactional(TRANSACTIONAL);

    /*
     * Use JEConnection.openDatabase() to obtain a cached Database
     * handle.  Do not call close() on Database handles obtained
     * using this method.
     */
    db = dc.openDatabase("db", dbConfig);
    cursor = db.openCursor(null, null);
    DatabaseEntry data = new DatabaseEntry();
    cursor.getSearchKey(new DatabaseEntry(key.getBytes()),
            data,
            null);
    return new String(data.getData());
      } finally {
    if (cursor != null) {
        cursor.close();
    }
    if (dc != null) {
        dc.close();
    }
      }
  } catch (Exception e) {
      System.err.println("Failure in get" + e);
      e.printStackTrace();
  }
  return null;
    }

    private JEConnection getConnection(String envDir) {
  try {
      EnvironmentConfig envConfig = new EnvironmentConfig();
      envConfig.setTransactional(true);
      envConfig.setAllowCreate(true);   
      InitialContext iniCtx = new InitialContext();
      Context enc = (Context) iniCtx.lookup("java:comp/env");
      Object ref = enc.lookup("ra/JEConnectionFactory");
      JEConnectionFactory dcf = (JEConnectionFactory) ref;
      JEConnection dc = dcf.getConnection(envDir, envConfig);
      return dc;
  } catch(Exception e) {
      System.err.println("Failure in getConnection " + e);
  }
  return null;
    }

    private static class MyKeyCreator implements SecondaryKeyCreator {

        MyKeyCreator() {
        }

        public boolean createSecondaryKey(SecondaryDatabase secondaryDb,
                                          DatabaseEntry keyEntry,
                                          DatabaseEntry dataEntry,
                                          DatabaseEntry resultEntry)
            throws DatabaseException {

      return false;
        }
    }
}
TOP

Related Classes of jca.simple.SimpleBean$MyKeyCreator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.