KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jinterop > dcom > test > Test_ITestServer2_Impl


1 package org.jinterop.dcom.test;
2
3 import java.net.UnknownHostException JavaDoc;
4
5 import org.jinterop.dcom.common.JIException;
6 import org.jinterop.dcom.common.JIInterfaceDefinition;
7 import org.jinterop.dcom.common.JIJavaCoClass;
8 import org.jinterop.dcom.common.JIMethodDescriptor;
9 import org.jinterop.dcom.core.IJIComObject;
10 import org.jinterop.dcom.core.IJIUnknown;
11 import org.jinterop.dcom.core.JIComServer;
12 import org.jinterop.dcom.core.JIFlags;
13 import org.jinterop.dcom.core.JIInterfacePointer;
14 import org.jinterop.dcom.core.JIParameterObject;
15 import org.jinterop.dcom.core.JIProgId;
16 import org.jinterop.dcom.core.JISession;
17 import org.jinterop.dcom.core.JIString;
18 import org.jinterop.dcom.core.JIVariant;
19 import org.jinterop.dcom.win32.ComFactory;
20 import org.jinterop.dcom.win32.IJIDispatch;
21
22 public class Test_ITestServer2_Impl {
23
24     public void Execute(JIString str)
25     {
26         System.out.println(str.getString());
27     }
28     /**
29      * @param args
30      */

31     public static void main(String JavaDoc[] args) {
32         
33         if (args.length < 4)
34         {
35             System.out.println("Please provide address domain username password");
36             return;
37         }
38         
39         
40         
41         try {
42             JISession session1 = JISession.createSession(args[1],args[2],args[3]);
43             JISession session2 = JISession.createSession(args[1],args[2],args[3]);
44             JIComServer testServer1 = new JIComServer(JIProgId.valueOf(session1,"TestJavaServer.TestServer1"),args[0],session1);
45             IJIUnknown unkTestServer1 = testServer1.createInstance();
46             IJIDispatch dispatch1 = (IJIDispatch)ComFactory.createCOMInstance(IJIDispatch.IID,(IJIComObject)unkTestServer1);
47             
48             //First lets call the ITestServer1.Call_TestServer2_Java using the Dispatch interface
49
//Acquire a reference to ITestServer2
50
JIComServer testServer2 = new JIComServer(JIProgId.valueOf(session2,"TestJavaServer.TestServer2"),args[0],session2);
51             IJIUnknown unkTestServer2 = testServer2.createInstance();
52             //Get the interface pointer to ITestServer2
53
IJIComObject iTestServer2 = (IJIComObject)unkTestServer2.queryInterface("9CCC5120-457D-49F3-8113-90F7E97B54A7");
54             //Send it to ITestServer.Call_TestServer2_Java via IDispatch of ITestServer1.
55
dispatch1.callMethod("Call_TestServer2_Java", new Object JavaDoc[]{new JIVariant(iTestServer2)});
56             
57             
58             //Now for the Java Implementation of ITestServer2 interface (from the type library or IDL)
59
//IID of ITestServer2 interface
60
JIInterfaceDefinition interfaceDefinition = new JIInterfaceDefinition("9CCC5120-457D-49F3-8113-90F7E97B54A7");
61             //lets define the method "Execute" now. Please note that either this should be in the same order as defined in IDL
62
//or use the addInParamAsObject with opnum parameter function.
63
JIParameterObject parameterObject = new JIParameterObject();
64             parameterObject.addInParamAsObject(new JIString(JIFlags.FLAG_REPRESENTATION_STRING_BSTR),JIFlags.FLAG_REPRESENTATION_STRING_BSTR);
65             JIMethodDescriptor methodDescriptor = new JIMethodDescriptor("Execute",parameterObject);
66             interfaceDefinition.addMethodDescriptor(methodDescriptor);
67             //Create the Java Server class. This contains the instance to be called by the COM Server ITestServer1.
68
JIJavaCoClass _testServer2 = new JIJavaCoClass(interfaceDefinition,new Test_ITestServer2_Impl());
69             //Get a interface pointer to the Java CO Class. The template could be any IJIComObject since only the session is reused.
70
IJIComObject __testServer2 = ComFactory.createCOMInstance((IJIComObject)unkTestServer2,JIInterfacePointer.getInterfacePointer(session1,_testServer2));
71             //Call our Java server. The same message should be printed on the Java console.
72
dispatch1.callMethod("Call_TestServer2_Java", new Object JavaDoc[]{new JIVariant(__testServer2)});
73             
74         } catch (UnknownHostException JavaDoc e) {
75             e.printStackTrace();
76         } catch (JIException e) {
77             e.printStackTrace();
78         }
79         
80
81     }
82
83 }
84
Popular Tags