Hello All, 

I am new to OJB and trying to evaluate OJB for our object persistence. To
start with I have written small program using  Persistence Broker API which
worked well. I tried to implement the same program  using ODMG API, it gave
me Null Pointer Exception. I am connecting to a remote DB2 database.

Here's the Exception I am getting.

[BOOT] INFO: OJB.properties: file:/C:/eclipse/workspace/OJB/OJB.properties
[org.apache.ojb.broker.ta.PersistenceBrokerFactoryDefaultImpl] INFO: Already
created persistence broker instances: 0
[org.apache.ojb.broker.util.sequence.SequenceManagerFactory] INFO: Use
sequence manager class: class
org.apache.ojb.broker.util.sequence.SequenceManagerHiLoImpl
Now Running @@@@@@@@@@@
[org.apache.ojb.odmg.TransactionImpl] WARN: TransactionImpl created with
null DatabaseImpl.
java.lang.NullPointerException
        at org.apache.ojb.odmg.TransactionImpl.getBroker(Unknown Source)
        at org.apache.ojb.odmg.TransactionImpl.begin(Unknown Source)
        at test.odmg.TestOdmg.showUsers(TestOdmg.java:113)
        at test.odmg.TestOdmg.actionPerformed(TestOdmg.java:155)
        at java.awt.MenuItem.processActionEvent(Unknown Source)
        at java.awt.MenuItem.processEvent(Unknown Source)
        at java.awt.MenuComponent.dispatchEventImpl(Unknown Source)
        at java.awt.MenuComponent.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown
Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown
Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)


I am getting this error when I begin a new transaction.

            Transaction tx = odmg.newTransaction();
            tx.begin();


Can anyone help me with this.

Here's my program below for details.

public class TestOdmg extends Frame implements ActionListener
{
    private Implementation odmg = null;
    private Vector useCases;
    private static String databaseName;
    private TextArea textarea;
    private Button exit;
    private MenuBar menubar = null;
    private Menu menu = null;
    private MenuItem newUser = null;
    private MenuItem showUser = null;
    private MenuItem exitApp = null;
    
        static
        {
        try
        {
            databaseName =
                ((PersistenceBrokerConfiguration) PersistenceBrokerFactory
                    .getConfigurator()
                    .getConfigurationFor(null))
                    .getRepositoryFilename();
        }
        catch (ConfigurationException e)
        {
            databaseName = "repository.xml";
        }
            
        }

    public TestOdmg()
    {
        textarea = new TextArea();
        exit = new Button ("Exit");
        exit.addActionListener(this);
        menubar = new MenuBar();
        menu = new Menu("User");
        newUser = new MenuItem ("New User");
        newUser.addActionListener(this);
        showUser = new MenuItem ("Show User");
        showUser.addActionListener(this);
        exitApp = new MenuItem ("Exit");
        exitApp.addActionListener(this);
        
        odmg = OJB.getInstance();
        Database db = odmg.newDatabase();
        //open database
        try
        {
            db.open(databaseName, Database.OPEN_READ_WRITE);
        }
        catch (ODMGException ex)
        {
            ex.printStackTrace();
        }
                
                menu.add(newUser);
                menu.add(showUser);
                menu.add(exitApp);
                menubar.add(menu);
                setMenuBar(menubar);
                add(textarea,"Center");
                add(exit, "South");
                
        setSize(400,400);
        this.show();
    }

    public static void main(String[] args)
    {
        TestOdmg app = new TestOdmg();
    }

    private void showUsers()
    {
        User user = null;
        System.out.println("Now Running @@@@@@@@@@@");
        int total = 0;

        try
        {
             // 1. open a transaction
            Transaction tx = odmg.newTransaction();
            tx.begin();

            // 2. get an OQLQuery object from the ODMG facade
            OQLQuery query = odmg.newOQLQuery();

            // 3. set the OQL select statement
            query.create("select allusers from " + User.class.getName());

            // 4. perform the query and store the result in a persistent
Collection
            DList allUsers = (DList) query.execute();
            tx.commit();

            // 5. now iterate over the result to print each product
            java.util.Iterator iter = allUsers.iterator();

            while (iter.hasNext())
            {
                total++;
                user = (User) iter.next();
                textarea.appendText("User Id : "+user.getUserId()+ "   User
Name "+ user.getUserName ());
                textarea.append("\n");
            }
            
            textarea.appendText("Total Users : "+ total);
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
    }
        
        public void actionPerformed (ActionEvent ae) {
                if (ae.getSource() instanceof Button) {
                   System.exit(0);;
                }
                else if (ae.getSource() instanceof MenuItem) {
                        if ("New User".equals(ae.getActionCommand())) {
                                System.out.println ("New User");
//                              AddUser adduser = new AddUser(this,broker);
//                              adduser.show();
                        }
                        else if ("Show User".equals(ae.getActionCommand()))
{
                        showUsers();
                        }
                        else if ("Exit".equals(ae.getActionCommand())) {
                        System.exit(0);;
                        }
                }
        }   
}

Ujwal 

Reply via email to