Menu

Error while handling two different sessions

Help
ads
2009-09-02
2012-11-29
  • ads

    ads - 2009-09-02

    Hi Vikram,
    I am trying to solve my problems. i have already posted 2 messages here, but no reply. :(. It is really frustrating now. I have tried different ways to create the email body from the doc file. but whenever the diffent application object it returned, i got following error.
    org.jinterop.dcom.common.JIException: The object invoked has disconnected from its clients. [0x80010108]
        at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:797)
        at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:753)
        at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:209)
        at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:114)
        at org.jinterop.dcom.win32.JIDispatchImpl.getIDsOfNames(JIDispatchImpl.java:101)
        at org.jinterop.dcom.win32.JIDispatchImpl.put(JIDispatchImpl.java:383)
    For example: when i tried MailItem.GetInspector.WordEditor which returns word document object (not related to outlook) i am not able to call any of it's methods. similarly when i tried to use Document.MailEnevelope.Item which returns Mail Item (not related to word). i got the same above error.
          Is this a bug? or i need to do casting or something other to get the object properly? Is this a session problem? Do i need to open two simultaneous sessions for both applications outlook and word?
        Please help me. I am stuck. I am trying to solve this issue from two weeks.......
       Hope i get solution ASAP...
    Thanks,
    Ads.

     
    • ads

      ads - 2009-09-04

      Hi All,
         Have anyone looked at my problem?. Please help me out. my code is:
      JIVariant var = dpMail.get("GetInspector");
                        IJIDispatch insp = (IJIDispatch)
                        var.getObjectAsComObject(unknown);
      JIVariant var3 = dpMail.callMethodA("FormDescription");
      IJIDispatch desc = (IJIDispatch) var3.getObjectAsComObject(unknown);
      desc.put("UseWordMail", new JIVariant(true));
      JIVariant prop = insp.callMethodA("IsWordMail");
      System.out.println("Word Mail ? :" +prop.getObjectAsBoolean()); System.out.println("Editor type" + insp.get("EditorType").getObjectAsInt());
      JIVariant var1 = insp.get("WordEditor");
      System.out.println("Is null :"+var1.isNull());
      IJIDispatch editor =(IJIDispatch) var1.getObjectAsComObject(unknown);
      System.out.println("Type......"+editor.get("Type").getObjectAsInt());

      And I am getting following error:

      Word Mail ? :true
      Editor type4
      Is null :false
      org.jinterop.dcom.common.JIException: The object invoked has disconnected from its clients. [0x80010108]
          at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:797)
          at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:753)
          at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:209)
          at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:114)
          at org.jinterop.dcom.win32.JIDispatchImpl.getIDsOfNames(JIDispatchImpl.java:101)
          at org.jinterop.dcom.win32.JIDispatchImpl.get(JIDispatchImpl.java:416)
          .
          .
          .
      Caused by: rpc.FaultException: Received fault. (unknown)
          at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:138)
          at rpc.Stub.call(Stub.java:112)
          at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:793)
          ... 9 more

      Please help me. Am i missing out something?

      Thanks,
      Ads.

       
      • Vikram Roopchand

        Hi,
             Please show me your complete code from session formation onwards.

        thanks,
        best regards,
        Vikram

         
      • ads

        ads - 2009-09-04

        Hi Vikram,
              Here is my code.

        package trial;

        import java.io.IOException;
        import java.util.ArrayList;

        import org.jinterop.dcom.common.JIException;
        import org.jinterop.dcom.common.JISystem;
        import org.jinterop.dcom.core.IJIComObject;
        import org.jinterop.dcom.core.JIComServer;
        import org.jinterop.dcom.core.JIProgId;
        import org.jinterop.dcom.core.JISession;
        import org.jinterop.dcom.core.JIVariant;
        import org.jinterop.dcom.win32.IJIDispatch;
        import org.jinterop.dcom.win32.IJITypeInfo;
        import org.jinterop.dcom.win32.JIComFactory;

        public class OutlookApp {

            public static final int int_olMailItem = 0;
            IJIDispatch dpNameSpace;
            private IJIDispatch dpFolders;
            private final int DRAFT_FOLDER = 1;
            IJIComObject unknown;

            public OutlookApp() {
                try {
                    JISystem.setInBuiltLogHandler(false);
                    JISystem.getLogger();
                    JISession session = JISession.createSession("", "", "");
                    JIComServer comServer = new JIComServer(JIProgId.valueOf(session,
                            "outlook.Application"), "localhost", session);
                    unknown = comServer.createInstance();
                    IJIDispatch dispatch = (IJIDispatch) JIComFactory
                            .createCOMInstance(JIComFactory.IID_IDispatch, unknown);
                    IJITypeInfo typeInfo = dispatch.getTypeInfo(0);
                    typeInfo.getFuncDesc(0);

                    JIVariant[] vaNamespace = dispatch.callMethodA("GetNamespace",
                            new Object[] { new JIVariant("MAPI") });
                    dpNameSpace = (IJIDispatch) (vaNamespace[0])
                            .getObjectAsComObject(unknown);
                    JIVariant vafolders = dpNameSpace.get("Folders");
                    dpFolders = (IJIDispatch) (vafolders)
                            .getObjectAsComObject(dpNameSpace);
                } catch (JIException e) {
                    e.printStackTrace();
                } catch (SecurityException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            public void createMail() {
                try {
                    ArrayList<String> folderIds = getFolderIds();
                    String StrFolderId = folderIds.get(DRAFT_FOLDER);

                    JIVariant[] vaSpecificfolder = dpNameSpace.callMethodA(
                            "GetFolderFromID",
                            new Object[] { new JIVariant(StrFolderId) });
                    IJIDispatch dpSpecificFolder = (IJIDispatch) (vaSpecificfolder[0])
                            .getObjectAsComObject(dpNameSpace);
                    JIVariant vaFolderitems = dpSpecificFolder.get("Items");
                    IJIDispatch dpFolderitems = (IJIDispatch) (vaFolderitems)
                            .getObjectAsComObject(dpSpecificFolder);

                    JIVariant[] vaMail = dpFolderitems.callMethodA("Add",
                            new Object[] { new JIVariant(int_olMailItem) });
                    IJIDispatch dpMail = (IJIDispatch) (vaMail[0])
                            .getObjectAsComObject(dpFolderitems);

                    dpMail.put("To", new JIVariant("adscools@yahoo.com"));
                    dpMail.put("CC", new JIVariant("adscools@yahoo.com"));
                    dpMail.put("BCC", new JIVariant("adscools@yahoo.com"));
                    dpMail.put("Subject", new JIVariant("Hello"));

                    JIVariant var = dpMail.get("GetInspector");
                    IJIDispatch insp = (IJIDispatch) var.getObjectAsComObject(unknown);
                    JIVariant var3 = dpMail.callMethodA("FormDescription");
                    IJIDispatch desc = (IJIDispatch) var3.getObjectAsComObject(unknown);
                    desc.put("UseWordMail", new JIVariant(true));
                    JIVariant prop = insp.callMethodA("IsWordMail");
                    System.out.println("Word Mail ? :" + prop.getObjectAsBoolean());
                    System.out.println("Editor type"
                            + insp.get("EditorType").getObjectAsInt());
                    JIVariant var1 = insp.get("WordEditor");
                    System.out.println("Is null :" + var1.isNull());
                    IJIDispatch editor = (IJIDispatch) var1
                            .getObjectAsComObject(unknown);
                    System.out.println("Type......"
                            + editor.get("Type").getObjectAsInt());
                } catch (JIException e) {
                    e.printStackTrace();
                }
            }

            public ArrayList<String> getFolderIds() {
                int foldercount = getCount("Folders");
                ArrayList<String> lsfolderId = new ArrayList<String>();
                try {
                    JIVariant vafolders = dpNameSpace.get("Folders");
                    dpFolders = (IJIDispatch) (vafolders)
                            .getObjectAsComObject(dpNameSpace);
                    JIVariant vacurFolder = dpFolders.callMethodA("GetFirst");
                    for (int i = 0; i < foldercount; i++) {
                        IJIDispatch curFolder = (IJIDispatch) (vacurFolder)
                                .getObjectAsComObject(dpNameSpace);
                        JIVariant vaEntryId = curFolder.get("EntryID");
                        String StrFolderid = vaEntryId.getObjectAsString2();
                        lsfolderId.add(StrFolderid);
                        vacurFolder = dpFolders.callMethodA("GetNext");
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
                return lsfolderId;
            }

            public int getCount(String StrObjecttype) {
                String StrType = StrObjecttype;
                int icount = 0;
                try {
                    JIVariant vafolders = dpNameSpace.get(StrType);
                    dpFolders = (IJIDispatch) (vafolders)
                            .getObjectAsComObject(dpNameSpace);
                    JIVariant vaCount = dpFolders.get("Count");
                    icount = vaCount.getObjectAsInt();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return icount;
            }

            /**
             * @param args
             */
            public static void main(String[] args) {

                OutlookApp app = new OutlookApp();
                app.createMail();
            }
        }

        And the error console screen:

        Word Mail ? :true
        Editor type4
        Is null :false
        org.jinterop.dcom.common.JIException: The object invoked has disconnected from its clients. [0x80010108]
            at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:797)
            at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:753)
            at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:209)
            at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:114)
            at org.jinterop.dcom.win32.JIDispatchImpl.getIDsOfNames(JIDispatchImpl.java:101)
            at org.jinterop.dcom.win32.JIDispatchImpl.get(JIDispatchImpl.java:416)
            at trial.OutlookApp.createMail(OutlookApp.java:92)
            at trial.OutlookApp.main(OutlookApp.java:142)
        Caused by: rpc.FaultException: Received fault. (unknown)
            at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:138)
            at rpc.Stub.call(Stub.java:112)
            at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:793)
            ... 7 more

        Please help me...

        Thanks,
        Ads.

         
        • Vikram Roopchand

          Which version of j-Interop are you using ?

           
    • ads

      ads - 2009-09-04

      I am using j-Interop 1.23 (Release Candidate 3).

       
      • Vikram Roopchand

        Wow ! where did you get that from ? Please use the latest version. (Always use the latest version, we provide NO support for any old versions).

        best regards,
        Vikram

         
    • ads

      ads - 2009-09-04

      Ok. Now i will use latest version.

      Thanks,
      Ads

       
    • Emmanuel Jannetti

      Hi vikram,
      I am using the same version and I think I am facing the same issue.

      I have to continue to sue 1.23.

      Can you provide us the status about concurrent access/thread safetiness of j-interop ?

      In my case I have two DCOM clients using separate session/com server
      but doing request in the same time seems to trigger errors.

      thank in advance for your help

      regards
      E Jannetti

       
      • Vikram Roopchand

        Hi,
             We have removed all errors known about memory management. As far as thread safety and concurrent access are concerned I am not aware of any (ever).

        Again, we CANNOT provide any support for any older version.

        best regards,
        Vikram

         

Log in to post a comment.

Auth0 Logo