AccountEJBClient.jws Sample

This topic inludes the source code for the AccountEJBClient.jws Sample.

Sample Location

This sample is located in the following directory in your WebLogic Workshop installation:

BEA_HOME/weblogic81/samples/workshop/SamplesApp/WebServices/ejbControl/

Sample Source Code


001 package ejbControl; 
002 
003 import examples.ejb20.basic.containerManaged.Account;
004 import examples.ejb20.basic.containerManaged.ProcessingErrorException;
005 import javax.ejb.FinderException;
006 import javax.ejb.CreateException;
007 import java.rmi.RemoteException;
008 import java.util.Iterator;
009 
010 /**
011  <p>A web service that demonstrates use of an EJB control AccountEJBControl.jcx,
012  * which represents the AccountEJB Entity Bean and exposes its business interface
013  * to web services.</p>
014  * @common:target-namespace namespace="http://workshop.bea.com/AccountEJBClient"
015  */
016 public class AccountEJBClient implements com.bea.jws.WebService
017 
018     /**
019      * @common:control
020      */
021     private ejbControl.AccountEJBControl account;
022 
023     /**
024      <p>Invokes the target EJB's <b>create</b> method and returns the result.</p>
025      
026      <ul>
027      <li><b>key</b> is the account identifier (must be unique for each account).</li>
028      <li><b>openingBalance</b> is the starting balance of the account.</li>
029      <li><b>type</b> is the account type, e.g. "checking" or "savings".</li>
030      </ul>
031      
032      @return A String describing the result of the account creation.
033      *
034      * @common:operation
035      */
036     public String createNewAccount(String key, double openingBalance, String type)
037     {
038         try
039         {
040             account.create(key, openingBalance, type);
041         }
042         catch (CreateException ce)
043         {
044             return "Error " + ce.getLocalizedMessage();
045         }
046         catch (RemoteException re)
047         {
048             return "Error " + re.getLocalizedMessage();
049         }
050         return "Successful";
051     }
052 
053     /**
054      <p>Invokes the target EJB's <b>getAccounts</b> method and returns a list of all
055      * accounts currently persisted by the target EJB.</p>
056      
057      @return A String listing all of the accounts.
058      *
059      * @common:operation
060      */
061     public String listAccounts()
062     {
063         return getAccounts(0.0d);
064     }
065 
066     /**
067      <p>Invokes the target EJB's <b>getAccounts</b> method and returns a list of accounts
068      * with balances greater than the specified <b>threshold</b>.</p>
069      *
070      @return A String listing all of the accounts.
071      *
072      * @common:operation
073      */
074     public String listBigAccounts(double threshold)
075     {
076         return getAccounts(threshold);
077     }
078 
079     /**
080      <p>Invokes the target EJB's <b>getAccount</b> method and returns the account type of
081      * the account specified by <b>accountKey</b>.</p>
082      
083      @return A String account type.
084      *
085      * @common:operation
086      */
087     public String accountType(String accountKey)
088     {
089         try
090         {
091             return getAccount(accountKey).accountType();
092         }
093         catch (FinderException fe)
094         {
095             return "Error " + fe.getLocalizedMessage();
096         }
097         catch (RemoteException re)
098         {
099             return "Error " + re.getLocalizedMessage();
100         }
101     }
102 
103     /**
104      <p>Invokes the target EJB's <b>getAccount</b> on the account specified by
105      <b>accountKey</b>, then the returned Account's <b>balance</b>
106      * method. Returns the account balance.</p>
107      
108      @return A double account balance, or -1 on a Finder Exception or -2 on Remote Exception.
109      *
110      * @common:operation
111      */
112     public double balance(String accountKey)
113     {
114         try
115         {
116             return getAccount(accountKey).balance();
117         }
118         catch (FinderException fe)
119         {
120             return -1d;
121         }
122         catch (RemoteException re)
123         {
124             return -2d;
125         }
126     }
127 
128     /**
129      <p>Invokes the target EJB's <b>getAccount</b> on the account specified by
130      <b>accountKey</b>, then the returned Account's <b>deposit</b>
131      * method. Returns the resulting account balance.</p>
132      
133      @return A double account balance, or -1 on a Finder Exception or -2 on Remote Exception.
134      *
135      * @common:operation
136      */
137     public double deposit(String accountKey, double depositAmount)
138     {
139         try
140         {
141             return getAccount(accountKey).deposit(depositAmount);
142         }
143         catch (FinderException fe)
144         {
145             return -1d;
146         }
147         catch (RemoteException re)
148         {
149             return -2d;
150         }
151     }
152 
153     /**
154      <p>Invokes the target EJB's <b>getAccount</b> on the account specified by
155      <b>accountKey</b>, then the returned account's <b>withdraw</b>
156      * method. Returns the resulting account balance.</p>
157      
158      @return A double account balance, 
159      * or -1 on a Finder Exception, 
160      * or -2 on Remote Exception,
161      * or -3 on Processing Error Exception.
162      *
163      * @common:operation
164      */
165     public double withdraw(String accountKey, double withdrawAmount)
166     {
167         try
168         {
169             return getAccount(accountKey).withdraw(withdrawAmount);
170         }
171         catch (FinderException fe)
172         {
173             return -1d;
174         }
175         catch (RemoteException re)
176         {
177             return -2d;
178         }
179         catch (ProcessingErrorException pe)
180         {
181             return -3d;
182         }
183     }
184 
185     /**
186      <p>Helper function -- returns an EJB account for a given key<p>
187      
188      @return An Account object
189      */
190     private Account getAccount(String accountKey)
191         throws FinderException, RemoteException
192     {
193         return account.findByPrimaryKey(accountKey);
194     }
195 
196     /**
197      <p>Helper function -- formats account list returns<p>
198      
199      @return new line delimited string of accounts
200      */
201     private String getAccounts(double limit)
202     {
203         Iterator itr = null;
204         StringBuffer retval = new StringBuffer();
205         try
206         {
207             itr = account.findBigAccounts(limit).iterator();
208             while (itr.hasNext())
209             {
210                 Account a = (Account)itr.next();
211                 retval.append(a.getPrimaryKey()).append(' ').append(a.accountType()).append(' ').append(a.balance()).append(' ').append('\n');
212             }
213         }
214         catch (FinderException fe)
215         {
216             return "Error " + fe.getLocalizedMessage();
217         }
218         catch (RemoteException re)
219         {
220             return "Error " + re.getLocalizedMessage();
221         }
222         
223         return retval.toString();
224     }
225 
226