Visual Basic has a built-in COM class called Collection. J-Integra® provides support for accessing instances of java.util.Vector and java.util.List as VB Collections.
Just as was demonstrated in the VB-EJB examples, we will create a simple briding application that will return a java.util.LinkedList object that can be used in Visual Basic as Collection.
The first step is to to Register the JVM.
You will need to know the TCP/IP host name of the machine running the bridge you just started. If it is the same machine as the VB client, then use 'localhost', otherwise use the appropriate host name:> D:\jintegra\bin\regjvmcmd.exe firstjvm localhost[7050]
Next create the Java Briging application:
This is the Main Java class. As you can see, it does nothing apart from register the JVM:
// This is the bridge. The VB client talks to this
// process via DCOM, and this process talks to WebLogic via RMI. It all happens
// behind the scenes in the J-Integra® runtime.
import java.util.*;
import com.linar.jintegra.*;
public class Main {
public static void main(String[] args) throws Exception {
// Tell the J-Integra® Activator on the localhost that this JVM is alive, ready to receive
// remote requests, and it is called "firstjvm".
com.linar.jintegra.Jvm.register("firstjvm");
Thread.sleep(6000000); // Sleep for an hour
}
}
|
Cut and paste the above class from your Web browser into the Main.java file, build it using the javac Main.java.
Now run the bridge, setting the JINTEGRA_DCOM_PORT property to 7050
> java -DJINTEGRA_DCOM_PORT=7050 Main
|
|
VB |
Maps to java.util.Vector |
Notes |
|
Collection.Add(item) |
aVector.addElement(item) |
|
|
Collection.Add(item, , before) |
aVector.insertElementAt(before - 1, item) |
if before is a number |
|
Collection.Add(item, , before) |
aVector.insertElementAt(aVector.indexOf(before), item) |
if before is not a number |
|
Collection.Add(item, , , after) |
aVector.insertElementAt(after, item) |
if after is not a number |
|
Collection.Add(item, , , after) |
aVector.insertElementAt(aVector.indexOf(after) + 1, item) |
if after is a number |
|
Collection.Count |
aVector.size() |
|
|
Collection.Item(index) |
aVector.elementAt(index - 1) |
index must be a number |
|
Collection.Remove(index) |
aVector.removeElementAt(index - 1) |
if index is a number |
|
Collection.Remove(index) |
aVector.removeElement(index) |
if index is not a number |
|
For Each x in aCollection |
x will take on the value of each object in the aVector.elements() enumeration |
|
VB |
Maps to java.util.List |
Notes |
|
Collection.Add(item) |
aList.target.add(item) |
|
|
Collection.Add(item, , before) |
aList.add(before - 1, item) |
if before is a number |
|
Collection.Add(item, , before) |
aList.add(aVector.indexOf(before), item) |
if before is not a number |
|
Collection.Add(item, , , after) |
aList.add(after, item) |
if after is not a number |
|
Collection.Add(item, , , after) |
aList.add(aVector.indexOf(after) + 1, item) |
if after is a number |
|
Collection.Count |
aList.size() |
|
|
Collection.Item(index) |
aList.get(index - 1) |
index must be a number |
|
Collection.Remove(index) |
aList.remove(index - 1) |
if index is a number |
|
Collection.Remove(index) |
aList.remove(index) |
if index is not a number |
|
For Each x in aCollection |
x will take on the value of each object in the aList.listIterator() iterator |