%@ Language=VBScript %>
ÄÚ¹Ù ÇÁ·Î±×·¡¹Ö 1Æí
À̱ÛÀº ¼þ½Ç´ëÇб³ ÃÖÁ¾¸í´ÔÀÇ °Á¿¡¼ ¹ßÃÖÇÑ ³»¿ëÀÔ´Ï´Ù.
ÃÖÁ¾¸íVisiBroker ȯ°æ ¸ÂÃß±â
http://www.visigenic.com/¸¦ ¹æ¹®Çؼ VisiBroker for Java 3.0À» ¹Þ¾Æ¿Â´Ù. ´Ù¿î¹ÞÀº ÇÁ·Î±×·¥ÀÇ ¾ÐÃàÀ» Ç®¸é ´Ù¾çÇÑ ÆÄÀϵéÀÌ ³ªÅ¸³´Ù. ÀÌ ÆÄÀϵé Áß¿¡¼ vbinstall¸¦ ½ÇÇà½Ã۸é ÀÚµ¿ÀûÀ¸·Î ºñÁöºê·ÎÄ¿¸¦ ¼³Ä¡ÇØÁØ´Ù. ±âº»ÀûÀ¸·Î ºñÁöºê·ÎÄ¿´Â /usr/local/vbroker µð·ºÅ丮¿¡ ¼³Ä¡µÈ´Ù. ºñÁöºê·ÎÄ¿¸¦ ¼³Ä¡ÇÑ ÈÄ¿¡ »ç¿ëÀÚÀÇ È¯°æ º¯¼ö¸¦ ¼³Á¤ÇØÁÖ¾î¾ß ÇÑ´Ù. C-Shell »ç¿ëÀÚ´Â $HOME/.cshrc ÆÄÀÏ¿¡ ´ÙÀ½°ú °°Àº ³»¿ëÀ» Ãß°¡ÇØÁØ´Ù. setenv VBROKER_ADM /usr/local/vbroker/adm setenv CLASSPATH /usr/local/vbroker/lib/vbj30.jar:${CLASSPATH} setenv PATH /usr/local/vbroker/bin:${PATH} Bourne-Shell °ú Korn-Shell »ç¿ëÀÚ´Â $HOME/.profile ÆÄÀÏ¿¡ VBROKER_ADM=/usr/local/vbroker/adm export VBROKER_ADM CLASSPATH=/usr/local/vbroker/lib/vbj30.jar:${CLASSPATH} export CLASSPATH PATH=/usr/local/vbroker/bin:${PATH} export PATH ¸¦ Ãß°¡ÇÑ´Ù.Count ¿¹Á¦ µû¶óÇϱâ
ÀÌÁ¦ °£´ÜÇÑ Count ¿¹Á¦¸¦ ¸¸µé¿¡ º¸ÀÚ.IDL ¸¸µé±â
Counter.idl ÆÄÀÏ module Counter { interface Count { attribute long sum; long increment(); }; };idl ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇØ¼ Stub/Skeleton ÆÄÀÏ ¸¸µé±â
% idl2java Counter.idl Creating: Counter Creating: Counter/Count.java Creating: Counter/CountHolder.java Creating: Counter/CountHelper.java Creating: Counter/_st_Count.java Creating: Counter/_sk_Count.java Creating: Counter/_CountImplBase.java Creating: Counter/CountOperations.java Creating: Counter/_tie_Count.java Creating: Counter/_example_Count.java % ls ./ ../ Counter/ Counter.idl % cd Counter % ls ./ CountHelper.java _CountImplBase.java _st_Count.java ../ CountHolder.java _example_Count.java _tie_Count.java Count.java CountOperations.java _sk_Count.java % javac -d .. *.java % cd ..¼¹ö ÇÁ·Î±×·¥ ¸¸µé±â
% vi CountServer.java import Counter.*; class CountImpl extends _sk_Count implements Count { private int sum; CountImpl(String name) { super(name); System.out.println("Count Object Created"); sum = 0; } public int sum() { return sum; } public void sum(int val) { sum = val; } public int increment() { sum++; return sum; } } public class CountServer { public static void main(String args[]) { try { org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(); org.omg.CORBA.BOA boa = orb.BOA_init(); CountImpl count = new CountImpl("hi"); boa.obj_is_ready(count); boa.impl_is_ready(); } catch(Exception e) { System.out.println(e); } } } % javac -d . CountServer.javaŬ¶óÀÌ¾ðÆ® ¸¸µé±â
% vi CountClient.java import Counter.*; public class CountClient { public static void main(String args[]) { try { System.out.println("Initializing the ORB"); org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(); System.out.println("Binding to Count Object"); Count counter = CountHelper.bind(orb, "hi"); System.out.println("sum <- 0"); counter.sum(0); for(int i=0; i<1000;i++) { counter.increment(); } System.out.println("Sum = "+counter.sum()); } catch(Exception e) { System.out.println(e); } } } % javac -d . CountClient.java½ÇÇà½Ã۱â
% osagent & % gatekeeper & % vbj CountServer & [1] 15628 Count Object Created % vbj CountClient Initializing the ORB Binding to Count Object sum <- 0 Sum = 1000Applet Ŭ¶óÀÌ¾ðÆ® ¸¸µé±â
% vi CountApplet.java import java.applet.*; import java.awt.*; import Counter.*; public class CountApplet extends Applet { private TextField countField, pingTimeField; private Button runCount; private Count counter; public void init() { setLayout(new GridLayout(2, 2, 10, 10)); add(new Label("Count")); add(countField = new TextField()); countField.setText("1000"); add(runCount = new Button("Run")); add(pingTimeField = new TextField()); pingTimeField.setEditable(false); try { showStatus("Initializing the ORB"); org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(this); showStatus("Binding to Count Object"); counter = CountHelper.bind(orb, "hi"); }catch(Exception e) { showStatus("Applet Exception:"+e); } } public boolean action(Event e, Object arg) { if(e.target == runCount) { try { showStatus("sum <- 0"); //counter.sum((int)0); showStatus("Increment..."); int stopCount = Integer.parseInt(countField.getText()); pingTimeField.setText(" "); long startTime = System.currentTimeMillis(); for(int i=0; i < stopCount; i++) { counter.increment(); } long stopTime = System.currentTimeMillis(); pingTimeField.setText("Time = "+Float.toString((float)(stopTime-startTime)/stopCount)+" msec"); showStatus("Sum = "+ counter.sum()); } catch(Exception ex) { showStatus("System Exception:"+ex); System.out.println(ex); ex.printStackTrace(System.out); } return true; } return false; } } % javac -d . CountApplet.java % vi CountApplet.html <applet code=CountApplet.class width=300 height=400> <param name=GATEKEEPER_PORT value=15000> <param name=ORBbackCompat value=true> <param name=org.omg.CORBA.ORBClass value=com.visigenic.vbroker.orb.ORB> </applet> % appletviewer CountApplet.html % netscape & ¾ÖÇø´ º¸±â....