Batch files
setup.bat
set WEBLOGICHOME=d:\weblogic4.5
set classpath=%WEBLOGICHOME%\classes;%WEBLOGICHOME%\lib\weblogicaux.jar;.
set path=d:\jdk1.2.2\bin;%PATH%
call "C:\Program Files\Microsoft Visual Studio\VC98\BIN\Vcvars32"
make.bat
@echo off
rem Makefile
echo Building ...
call idltojava corbaEJB.idl
javac -d %WEBLOGICHOME%\classes corbaEJB\*.java
javac -d %WEBLOGICHOME%\classes CorbaClient.java
javac -d %WEBLOGICHOME%\classes -classpath %CLASSPATH%;%WEBLOGICHOME%\classes\ejb_basic_statelessSession.jar TraderServer.java
goto end
:end
runclient.bat
set CP=%WEBLOGICHOME%\classes;%WEBLOGICHOME%\lib\weblogicaux.jar;.
java -cp %CP% corbaEJB.CorbaClient -ORBInitialPort 900
runORB.bat
start tnameserv -ORBinitialPort 900
runServer.bat
set CP=%WEBLOGICHOME%\classes;%WEBLOGICHOME%\lib\weblogicaux.jar;.
start java -cp %WEBLOGICHOME%\classes\ejb_basic_statelessSession.jar;%CP% corbaEJB.Tra
corbaEJB.idl
module corbaEJB
{
struct TradeResult
{
long numberTraded;
double priceSoldAt;
};
interface Trader;
interface TraderHome
{
Trader create();
void remove();
};
interface Trader
{
TradeResult buy(in string customerName, in string stockSymbol, in long shares);
TradeResult sell(in string customerName, in string stockSymbol, in long shares);
TraderHome getEJBHome();
void remove();
};
};
CorbaClient.java
package corbaEJB;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;
public class CorbaClient
{
public static void main(String args[])
{
String customerName = "Erin";
try
{
ORB orb = ORB.init(args, null);
org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
NamingContext ncRef = NamingContextHelper.narrow(objRef);
NameComponent nc = new NameComponent("TraderHome", " ");
NameComponent path[] = {nc};
TraderHome brokerage = TraderHomeHelper.narrow(ncRef.resolve(path));
Trader trader = brokerage.create();
String stockName;
int numberOfShares;
double cashBalance = 0.0;
for (int i = 1 ; i <= 5; i++)
{
System.out.println("Start of Transaction " + i + " for " + customerName);
stockName = "WEBL";
numberOfShares = 100 * i;
System.out.println("Buying " + numberOfShares + " of " + stockName);
TradeResult tr = trader.buy(customerName, stockName, numberOfShares);
System.out.println("...Bought " + tr.numberTraded + " at $" +
tr.priceSoldAt);
cashBalance = cashBalance - (tr.numberTraded * tr.priceSoldAt);
stockName = "INTL";
numberOfShares = 100 * (i+1);
System.out.println("Selling " + numberOfShares + " of " + stockName);
tr = trader.sell(customerName, stockName, numberOfShares);
System.out.println("...Sold " + tr.numberTraded + " at $" +
tr.priceSoldAt);
cashBalance = cashBalance + (tr.numberTraded * tr.priceSoldAt);
System.out.println("Change in Cash Account: $" + cashBalance);
System.out.println("End of Transaction " + i + "\n");
}
System.out.println("Change in Cash Account: $" + cashBalance + "\n");
System.out.println("Removing trader");
trader.remove();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
TraderServer.java
package corbaEJB;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
public class TraderServer
{
public static void main(String[] args)
{
try
{
ORB orb = ORB.init(args, null);
TraderHomeServant traderRef = new TraderHomeServant();
orb.connect(traderRef);
org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
NamingContext ncRef = NamingContextHelper.narrow(objRef);
NameComponent nc = new NameComponent("TraderHome", " ");
NameComponent path[] = {nc};
ncRef.rebind(path, traderRef);
java.lang.Object sync = new java.lang.Object();
synchronized(sync)
{
sync.wait();
}
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
}
}
class TraderServant extends _TraderImplBase
{
private examples.ejb.basic.statelessSession.Trader trader = null;
private corbaEJB.TraderHome home = null;
public TraderServant(examples.ejb.basic.statelessSession.Trader trader, corbaEJB.TraderHome home)
{
this.trader = trader;
this.home = home;
}
public TradeResult buy(String customerName, String stockSymbol, int shares)
{
try
{
examples.ejb.basic.statelessSession.TradeResult tr = trader.buy(customerName, stockSymbol, shares);
return new TradeResult(tr.numberTraded, tr.priceSoldAt);
}
catch (Exception e)
{
// throw a CORBA exception?
}
return null;
}
public TradeResult sell(String customerName, String stockSymbol, int shares)
{
try
{
examples.ejb.basic.statelessSession.TradeResult tr = trader.sell(customerName, stockSymbol, shares);
return new TradeResult(tr.numberTraded, tr.priceSoldAt);
}
catch (Exception e)
{
// throw a CORBA exception?
}
return null;
}
public void remove()
{
try
{
trader.remove();
trader = null;
}
catch (Exception e)
{
// throw a CORBA exception?
}
}
public corbaEJB.TraderHome getEJBHome()
{
return home;
}
}
class TraderHomeServant extends _TraderHomeImplBase
{
private static String ctxFactoryName = "weblogic.jndi.T3InitialContextFactory";
private static String url = "t3://localhost:7001";
private examples.ejb.basic.statelessSession.TraderHome home = null;
public TraderHomeServant()
{
super();
}
public Trader create()
{
setup();
try
{
TraderServant trader = new TraderServant(home.create(), null);
return trader;
}
catch (Exception e)
{
// throw a CORBA exception?
}
return null;
}
public void remove()
{
try
{
home = null;
}
catch (Exception e)
{
// throw a CORBA exception?
}
}
private void setup()
{
if (home != null)
return;
try
{
javax.naming.Context context = getInitialContext(null, null, url);
home = (examples.ejb.basic.statelessSession.TraderHome) context.lookup("statelessSession.TraderHome");
}
catch (Exception e)
{
e.printStackTrace();
// throw a CORBA exception?
}
}
public static javax.naming.Context getInitialContext(String user, String password, String url) throws Exception
{
java.util.Properties p = new java.util.Properties();
p.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, ctxFactoryName);
p.put(javax.naming.Context.PROVIDER_URL, url);
if (user != null)
{
p.put(javax.naming.Context.SECURITY_PRINCIPAL, user);
if (password == null)
password = "";
p.put(javax.naming.Context.SECURITY_CREDENTIALS, password);
}
System.out.println("returning IntialContext");
return new javax.naming.InitialContext(p);
}
}