KickJava   Java API By Example, From Geeks To Geeks.

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


1 package org.jinterop.dcom.test;
2
3
4
5 import java.net.UnknownHostException JavaDoc;
6
7 import org.jinterop.dcom.common.JIException;
8 import org.jinterop.dcom.core.IJIComObject;
9 import org.jinterop.dcom.core.JICallObject;
10 import org.jinterop.dcom.core.JIClsid;
11 import org.jinterop.dcom.core.JIComServer;
12 import org.jinterop.dcom.core.JIFlags;
13 import org.jinterop.dcom.core.JIPointer;
14 import org.jinterop.dcom.core.JISession;
15 import org.jinterop.dcom.core.JIVariant;
16 import org.jinterop.dcom.win32.ComFactory;
17 import org.jinterop.dcom.win32.IJIDispatch;
18
19 public class TestCOMServer {
20
21     private JIComServer comStub = null;
22     private IJIDispatch dispatch = null;
23     private IJIComObject unknown = null;
24     
25     public TestCOMServer(String JavaDoc address, String JavaDoc[] args) throws JIException, UnknownHostException JavaDoc
26     {
27         JISession session = JISession.createSession(args[1],args[2],args[3]);
28     
29         
30         //instead of this the ProgID "TestCOMServer.ITestCOMServer" can be used as well.
31
//comStub = new JIComServer(JIProgId.valueOf(session,"TestCOMServer.ITestCOMServer"),address,session);
32
//CLSID of ITestCOMServer
33
comStub = new JIComServer(JIClsid.valueOf("44A9CD09-0D9B-4FD2-9B8A-0151F2E0CAD1"),address,session);
34     }
35     
36     public void execute() throws JIException
37     {
38         unknown = comStub.createInstance();
39         //CLSID of IITestCOMServer
40
IJIComObject comObject = (IJIComObject)unknown.queryInterface("4AE62432-FD04-4BF9-B8AC-56AA12A47FF9");
41         dispatch = (IJIDispatch)ComFactory.createCOMInstance(ComFactory.IID_IDispatch,comObject);
42         
43         //Now call via automation
44
Object JavaDoc results[] = dispatch.callMethodA("Add",new Object JavaDoc[]{new Integer JavaDoc(1), new Integer JavaDoc(2), new JIVariant(0,true)});
45         System.out.println(results[1]);
46         
47         //now without automation
48
JICallObject callObject = new JICallObject(comObject.getIpid());
49         callObject.setOpnum(1);//obtained from the IDL or TypeLib.
50
callObject.addInParamAsInt(1,JIFlags.FLAG_NULL);
51         callObject.addInParamAsInt(2,JIFlags.FLAG_NULL);
52         callObject.addInParamAsPointer(new JIPointer(new Integer JavaDoc(0)),JIFlags.FLAG_NULL);
53         //Since the retval is a top level pointer , it will get replaced with it's base type.
54
callObject.addOutParamAsObject(Integer JavaDoc.class,JIFlags.FLAG_NULL);
55         results = comObject.call(callObject);
56         System.out.println(results[0]);
57         JISession.destroySession(dispatch.getAssociatedSession());
58     }
59     
60     
61     
62     public static void main(String JavaDoc[] args) {
63
64         try {
65                 if (args.length < 4)
66                 {
67                     System.out.println("Please provide address domain username password");
68                     return;
69                 }
70                 TestCOMServer test = new TestCOMServer(args[0],args);
71                 test.execute();
72             } catch (Exception JavaDoc e) {
73                 // TODO Auto-generated catch block
74
e.printStackTrace();
75             }
76     }
77     
78     
79     
80     
81     
82 }
83
Popular Tags