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

📄 sequencesessionbean.java

📁 100多M的J2EE培训内容
💻 JAVA
字号:
package examples.sequencegenerator;

// SequenceGeneratorBean.java

public class SequenceSessionBean implements  javax.ejb.SessionBean {

  private class Entry {
    Sequence sequence;
    int last;
  };

  private java.util.Hashtable _entries = new java.util.Hashtable();
  private int _blockSize;
  private int _retryCount;
  private SequenceLocalHome _sequenceHome;

  public void ejbActivate() {
  }
  public void ejbCreate() 
  {
  }
  public void ejbPassivate() {
  }
  public void ejbRemove() {
  }
public int getNextSequenceNumber(String name)
{

    try
    {
        Entry entry = (Entry) _entries.get(name);

        if (entry == null)
        {
            // add an entry to the sequence table
            entry = new Entry();
            try
            {
                entry.sequence = _sequenceHome.findByPrimaryKey(name);
            }
            catch (javax.ejb.FinderException e)
            {
                System.out.println("\n\n\n\n******** : " + e + "\n\n\n\n");
                // if we couldn't find it, then create it...
                entry.sequence = _sequenceHome.create(name);
            }
            _entries.put(name, entry);
        }
        if (entry.last % _blockSize == 0)
        {
            for (int retry = 0; true; retry++)
            {
                try
                {
                    entry.last = entry.sequence.getValueAfterIncrementingBy(_blockSize);
                    break;
                }
                catch (javax.ejb.TransactionRolledbackLocalException e)
                {
                    if (retry < _retryCount)
                    {
                        // we hit a concurrency exception, so try again...
                        System.out.println("RETRYING");
                        continue;
                    }
                    else
                    {
 	                     // we tried too many times, so fail...
                        throw new javax.ejb.EJBException(e);
                    }
                }
            }
        }
 
        return entry.last++;
    }
    catch (javax.ejb.CreateException e)
    {
        throw new javax.ejb.EJBException(e);
    }
}
  public void setSessionContext( javax.ejb.SessionContext sessionContext) {
    try {
      javax.naming.Context namingContext = new javax.naming.InitialContext();
      _blockSize = ((Integer) namingContext.lookup("java:comp/env/blockSize")).intValue();
      _retryCount = ((Integer) namingContext.lookup("java:comp/env/retryCount")).intValue();
      
      _sequenceHome = (SequenceLocalHome) namingContext.lookup("SequenceLocalHome");
    }
    catch(javax.naming.NamingException e) {
      throw new javax.ejb.EJBException(e);
    }
  }
}

⌨️ 快捷键说明

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