Почему jacobs "new ActiveXComponent" иногда выдает "Can't co-create object" при использовании с Redemption? - PullRequest
0 голосов
/ 31 января 2020

Эта ошибка возникает только иногда, поэтому моя среда должна быть в основном правильной:

  • Java Апплет работает в 32-битной JRE. В настоящее время это 1.8_172, но ошибка может произойти с каждой версией теста. Это включает Java 1.6 и 1.7 в различных точечных выпусках.
  • Погашения 32-битная DLL правильно зарегистрирована
  • Использование Outlook 32-битной (ошибка происходит с различными версиями и ревизиями Outlook)
  • jacob.dll 32-битный и находится в пути

Код выглядит следующим образом:

ActiveXComponent m_oOutlook = ActiveXComponent.connectToActiveInstance( "Outlook.Application" );
Dispatch m_mail = Dispatch.invoke( m_oOutlook.getObject(), "CreateItem", Dispatch.Get, new Object[] { "0" }, new int[0] ).toDispatch();
ActiveXComponent m_safeMailItem = new ActiveXComponent( "Redemption.SafeMailItem" ); // <-- exception happens here

В большинстве случаев наше приложение, использующее этот код, не имеет проблем с отправкой электронной -почта через это вообще. Но иногда это приводит к следующему исключению:

com.jacob.com.ComFailException: Can't co-create object
    at com.jacob.com.Dispatch.createInstanceNative(Native Method)
    at com.jacob.com.Dispatch.<init>(Dispatch.java:99)
    at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:58)

Это может произойти после того, как несколько электронных писем были успешно отправлены в одном сеансе.

У меня нет идей, поскольку проблема не воспроизводима совсем. Это иногда случается.

Наш текущий обходной путь: перезапустите наше приложение и, если это не поможет, перезапустите Outlook тоже.

1 Ответ

0 голосов
/ 01 февраля 2020

Если вы создаете и уничтожаете создаваемые объекты Redemption несколько раз, вы, по сути, запускаете систему MAPI, которая на самом деле не нравится.

Основное правило заключается в создании глобального Redemption (вы не нужно что-то с этим делать, просто поддерживать его в силе) - таким образом система MAPI будет загружаться и оставаться загруженной.

См. http://www.dimastr.com/redemption/faq.htm#Threads

...