Hi Kevan,

Thank you very much!!
I understood the missing part. Now the app is working fine.

Thanks
Phani

On Tue, May 27, 2008 at 5:53 PM, Kevin Sutter <[EMAIL PROTECTED]> wrote:

> Phani,
> My first guess is that you are not completing these "persistable"
> operations
> via a transactional commit.  Since you are not using EJBs, the demarcation
> for a transaction is left up to the application.  You could use the
> EntityTransaction interface to begin and commit/rollback your transactions.
> You can either start the transaction before performing your "persistable"
> operations, or you will have to call joinTransaction() if the transaction
> is
> started after you perform your "persistable" operations.
>
> Kevin
>
> On Mon, May 26, 2008 at 6:57 AM, Phani Madgula <
> [EMAIL PROTECTED]> wrote:
>
> > Hi,
> >
> > I have simple JEE application client that uses JPA to perform DB
> > operations on a database running in the embedded Derby. I tried to
> attached
> > the app to the mail but failed.
> > The JEE client does not look up anyEJBs. It has Account.java entity and
> > AccountClient.java that performs
> > DB operations on the Entity.
> >
> > The following steps explain how to deploy and run the APP.
> > 1. Create AccountDB database using DBManager portlet on the admin console
> >
> > 2. Create Account table in the AccountDB as follows
> >  *create table ACCOUNT (ACCOUNTNO integer, NAME varchar (50),
> > ADDRESS varchar (225), BRANCHCODE integer, BALANCE decimal (15,2));*
> >
> > 3. Deploy the app.jar
> >
> > 4. run the client using following options
> >
> > LISTING ACCOUNTS:
> >
> > j*ava -Djava.endorsed.dirs="C:**\Geronimo-2.1\lib\endorsed" -jar
> > C:\Geronimo-2.1\bin\client.jar
> > AccountJPA/AccountJPA-app**-client/3.0/jar list
> > *
> > CREATING AN ACCOUNT:
> >
> > * java -Djava.endorsed.dirs="C:**\Geronimo-2.1\lib\endorsed" -jar
> > C:\Geronimo-2.1\bin\client.jar
> > AccountJPA/AccountJPA-app**-client/3.0/jar create 2222 Joe NC 10 4000
> > *
> > UPDATING AN ACCOUNT:
> >
> > * java -Djava.endorsed.dirs="C:**\Geronimo-2.1\lib\endorsed" -jar
> > C:\Geronimo-2.1\bin\client.jar
> > AccountJPA/AccountJPA-app**-client/3.0/jar update 2222 8000*
> >
> > DELETING AN ACCOUNT
> >
> > j*ava -Djava.endorsed.dirs="C:**\Geronimo-2.1\lib\endorsed" -jar
> > C:\Geronimo-2.1\bin\client.jar
> > AccountJPA/AccountJPA-app**-client/3.0/jar delete 2222
> > *
> > The AccountClient.java has all the info.
> >
> > I am able to successfully deploy the APP and perform "list" operation.
> > The list operation lists all the accounts currently in the database.
> >
> > Where as if I tried to perform "create", or "update" or "delete"
> > operations, the JPA is not inserting or updating or deleting
> > corresponding rows in the table. Neither it's throwing any error on
> > the console.
> >
> > What could be the error?? Thanks in advance for your help.
> >
> > persistence.xml
> >
> ___________________________________________________________________________
> > <?xml version="1.0" encoding="UTF-8"?>
> > <persistence    xmlns="http://java.sun.com/xml/ns/persistence";
> >  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; version="1.0"
> >  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
> > http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd";>
> >
> >      <persistence-unit name="JPA-App-Client">
> >
> >              <description>JPA Application Client</description>
> >
> >
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> >              <class>sample.jpa.appclient.Account</class>
> >
> > <properties>
> > <property name="openjpa.ConnectionURL"
> > value="jdbc:derby://localhost/AccountDB" />
> > <property
> >  name="openjpa.ConnectionDriverName"
> > value="org.apache.derby.jdbc.ClientDriver" />
> > <property name="ConnectionUserName" value="app" />
> > <property name="openjpa.jdbc.SynchronizeMappings" value="false" />
> >
> > </properties>
> >      </persistence-unit>
> >
> >      <!--
> >      <jta-data-source>PhoneBookPool</jta-data-source>
> >      <non-jta-data-source>PhoneBookPool</non-jta-data-source>
> >      -->
> > </persistence>
> > _______________________________________________________________________
> >
> >
> > ACCOUNT.java
> > ________________________________________________________________________
> >
> > package sample.jpa.appclient;
> >
> > import java.io.Serializable;
> >
> > import javax.persistence.Entity;
> > import javax.persistence.Id <http://javax.persistence.id/>;
> > import javax.persistence.Table;
> >
> > @Entity
> > @Table(name="Account1")
> > public class Account implements Serializable{
> >
> >      @Id
> >      private int accountNo;
> >      private String name;
> >      private String address;
> >      private int branchCode;
> >      private double balance;
> >
> >      public Account(){
> >              this.accountNo = 0;
> >              this.name = "DUMMY";
> >              this.address = "DUMMY";
> >              this.branchCode = 0;
> >      }
> >
> >      public int getAccountNo() {
> >              return accountNo;
> >      }
> >      public void setAccountNo(int accountNo) {
> >              this.accountNo = accountNo;
> >      }
> >      public String getName() {
> >              return name;
> >      }
> >      public void setName(String name) {
> >              this.name = name;
> >      }
> >      public String getAddress() {
> >              return address;
> >      }
> >      public void setAddress(String address) {
> >              this.address = address;
> >      }
> >      public int getBranchCode() {
> >              return branchCode;
> >      }
> >      public void setBranchCode(int branchCode) {
> >              this.branchCode = branchCode;
> >      }
> >
> >      public double getBalance() {
> >              return balance;
> >      }
> >
> >      public void setBalance(double balance) {
> >              this.balance = balance;
> >      }
> >
> > }
> > _______________________________________________________________________
> >
> > AccountClient.java
> > ________________________________________________________________________
> > package sample.jpa.appclient;
> >
> > import java.util.ArrayList;
> > import java.util.List;
> >
> > import javax.persistence.EntityManager;
> > import javax.persistence.EntityManagerFactory;
> > import javax.persistence.Persistence;
> > import javax.persistence.PersistenceContext;
> > import javax.persistence.Query;
> >
> >
> >
> > public class AccountClient {
> >
> >      private EntityManager em;
> >
> >      public AccountClient()
> >      {
> >              EntityManagerFactory emf =
> > Persistence.createEntityManagerFactory("JPA-App-Client");
> >              if(emf == null) System.out.println("emf is null!!!");
> >              em = emf.createEntityManager();
> >              if(em == null) System.out.println("em is null!!!");
> >      }
> >      public static void main(String[] args) {
> >              AccountClient client = new AccountClient();
> >
> >              String opt = args[0];
> >              if(opt.equals("create")){
> >                      if (args.length != 6){
> >                              System.out.println("Enter values for
> > accountNo, name, address,
> > branchCode and balance;");
> >                              System.exit(0);
> >                      }
> >                      else{
> >                              int accNo = Integer.parseInt(args[1]);
> >                              String name = args[2];
> >                              String address = args[3];
> >                              int branchCode = Integer.parseInt(args[4]);
> >                              double balance =
> Double.parseDouble(args[5]);
> >
> > client.createAccount(accNo,name,address,branchCode,balance);
> >                      }
> >              } else if (opt.equals("list")){
> >                      List accList = client.listAccounts();
> >                  for(int i = 0; i < accList.size(); i++){
> >
> > System.out.println("____________________________________________");
> >                      Account acc = (Account)accList.get(i);
> >                      System.out.println(acc.getAccountNo());
> >                      System.out.println(acc.getName());
> >                      System.out.println(acc.getAddress());
> >                      System.out.println(acc.getBranchCode());
> >                      System.out.println(acc.getBalance());
> >
> > System.out.println("____________________________________________");
> >                      System.out.println("");
> >                  }
> >              }else if (opt.equals("update")){
> >                      if (args.length != 3){
> >                              System.out.println("Enter values for
> > accountNo and new balace value ;");
> >                              System.exit(0);
> >                      }
> >                      else{
> >                              int accNo = Integer.parseInt(args[1]);
> >                              double newbalance =
> > Double.parseDouble(args[2]);
> >
>  client.updateAccountBalance(accNo,newbalance);
> >                      }
> >
> >              }else if (opt.equals("delete")){
> >                      if (args.length != 2){
> >                              System.out.println("Enter values for
> > accountNo for delete");
> >                              System.exit(0);
> >                      }
> >                      else {
> >                              int accNo = Integer.parseInt(args[1]);
> >                              client.deleteAccount(accNo);
> >                      }
> >              }else
> >              {
> >                      System.out.println("Unknown option selected...!!");
> >              }
> >
> >
> >      }
> >
> >      public Account createAccount(int accNo, String name,
> >                      String address, int branchCode,
> >                      double balance){
> >
> >              Account acc1 = em.find(Account.class, accNo);
> >              if(acc1 != null) throw new
> > IllegalArgumentException("Account already
> > exists: Account Number ("+accNo+")");
> >              Account acc = new Account();
> >              acc.setAccountNo(accNo);
> >              acc.setAddress(address);
> >              acc.setBalance(balance);
> >              acc.setBranchCode(branchCode);
> >              acc.setName(name);
> >              System.out.println("Persisting account entity (accNo =
> > "+accNo+")");
> >              em.persist(acc);
> >              System.out.println("Persisted successfully account
> > entity (accNo =
> > "+accNo+")");
> >              return acc;
> >
> >      }
> >
> >      public List listAccounts(){
> >              if(em == null) System.out.println("em is null!!!");
> >              Query q = em.createQuery("SELECT a FROM Account a");
> >              List currList = q.getResultList();
> >              return currList;
> >      }
> >
> >
> >      public Account updateAccountBalance(int accNo, double newBalance){
> >              Account acc = em.find(Account.class, accNo);
> >              if(acc == null) throw new IllegalArgumentException("Account
> > not
> > found : Account Number ("+accNo+")");
> >      acc.setBalance(newBalance);
> >              em.merge(acc);
> >               return acc;
> >
> >      }
> >
> >      public void deleteAccount(int accNo){
> >              Account acc = em.find(Account.class, accNo);
> >              if(acc == null) throw new IllegalArgumentException("Account
> > not
> > found : Account Number ("+accNo+")");
> >              em.remove(acc);
> >      }
> >
> >
> > }
> >
> >
> ____________________________________________________________________________
> >
> > geronimo-application-client.xml
> >
> ___________________________________________________________________________
> > <?xml version="1.0" encoding="UTF-8"?>
> >
> > <application-client
> > xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0";
> >  xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2";
> >  xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.2";
> >  xmlns:security="http://geronimo.apache.org/xml/ns/security-2.0";
> >  xmlns:connector="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2";>
> >
> >  <sys:client-environment>
> >              <sys:moduleId>
> >              <sys:groupId>AccountJPA</sys:groupId>
> >              <sys:artifactId>AccountJPA-app-client</sys:artifactId>
> >              <sys:version>3.0</sys:version>
> >              <sys:type>jar</sys:type>
> >              </sys:moduleId>
> >
> >          <sys:dependencies>
> >
> >              <sys:dependency>
> >
>  <sys:groupId>org.apache.geronimo.configs</sys:groupId>
> >                      <sys:artifactId>transaction</sys:artifactId>
> >                      <sys:version>2.1</sys:version>
> >                      <sys:type>car</sys:type>
> >              </sys:dependency>
> >
> >              </sys:dependencies>
> >
> > </sys:client-environment>
> >
> >  <sys:server-environment>
> >              <sys:moduleId>
> >              <sys:groupId>AccountJPA</sys:groupId>
> >
>  <sys:artifactId>AccountJPA-app-client-server</sys:artifactId>
> >              <sys:version>3.0</sys:version>
> >              <sys:type>jar</sys:type>
> >              </sys:moduleId>
> > </sys:server-environment>
> > </application-client>
> >
> __________________________________________________________________________
> >
> > Thanks
> > Phani
> >
>

Reply via email to