// This example demonstrates a Visual Basic client accessing an EJB hosted in the SilverStream app server
// Make sure you have the standard examples working prior to attempting to run this example.
//
// SilverStream will soon be providing a more detailed article, including instructions on how to have the
// bridge running inside the SilverStream Application Server itself.
//
// Download the J-Integra® kit from http://j-integra.intrinsyc.com/
//
// In order to run this example copy it to \SilverStream30\samples\Examples3_EJB\myprojects\ejbDemoStateTax
// The first three steps below can be performed on any OS, such as Solaris.
//
// 1. Go to \SilverStream30\samples\Examples3_EJB\myprojects\ejbDemoStateTax and run
// 'java2com': java com.linar.java2com.Main
// Specify "com.examples.statesalestaxdemo.SBStateSalesTax" as the class to analyze, "salestax" as
// the name for the generated IDL file, click on "Names..." and remove "java.lang.Class" as being a class
// to ignore, and click on "Generate ..."
//
// 2. Compile the generated wrapper classes: javac IID*.java
//
// 3. Start the bridge, making sure that the J-Integra® runtime (jintegra.jar) and the current directory
// are in your CLASSPATH: java -DJINTEGRA_DCOM_PORT=3000 DCOMBridge
//
// 4. Register the jvm on the VB client using regjvmcmd ejb hostname[3000]
// where hostname is 'localhost' if running this JVM on the same machine as the VB client
//
// 5. Compile the generated IDL file: midl salestax.idl
//
// 6. Copy the salestax.tlb to the VB client machine, and register it: regtlb salestax.tlb ejb
//
// 7. On the VB client create a new VB "Standard EXE", add a reference to the salestax type library
// using "Project|References", on the form with two text boxes called "state" and "amount" and
// a button.
//
// 8. Double-click on the button, delete the generated event handler, and enter the following code:
/*
Dim calc As salestax.ComExamplesStatesalestaxdemoSBStateSalesTax
Private Sub Form_Load()
Dim home As Object
Set home = GetObject("ejb:RMI/sssw/Examples3_EJB/StateSalesTaxDemo/SBStateSalesTax")
Set calc = home.Create
End Sub
Private Sub Command1_Click()
amount.Text = calc.calculateTheTax(state.Text, amount.Text)
End Sub
*/
// 9. Start the VB client, and enter "NY" as the state, and "100" as the amount, and click on the button. Then
// try entering ABCD as the amount ... cool, eh?
public class DCOMBridge {
static com.sssw.rt.util.AgrServerSession session = null;
public static void main(String[] args) throws Exception {
com.sssw.rt.util.AgRuntime.init(new java.io.File("D:\\SilverStream30"), null, null);
session = com.sssw.rt.util.AgRuntime.connect("localhost");
com.linar.jintegra.Jvm.register("ejb", new EjbInstanciator());
Thread.sleep(10000000);
}
}
class EjbInstanciator implements com.linar.jintegra.Instanciator {
javax.naming.Context ctx;
EjbInstanciator() throws javax.naming.NamingException {
ctx = new javax.naming.InitialContext();
}
public Object instanciate(String javaClass) throws com.linar.jintegra.AutomationException {
try {
return ctx.lookup(javaClass); // // Look up the object
} catch (javax.naming.NamingException e) {
e.printStackTrace();
throw new com.linar.jintegra.AutomationException(e);
}
}
} |