Решено Web service consumer ошибка при отсылки больших пакетов

Тема в разделе "Lotus - Программирование", создана пользователем Xalet, 10 сен 2015.

  1. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Всем привет и сразу к теме.

    Есть Web Service который крутится на TomCat сервере. В Lotus Notes сделан его клиент (подсунут WSDL и сгенерированы WS Consumer LS классы). Написаны функции, которые все это используют и в общем и целом все работает.

    Есть во всем этом функция, которая передает вложения документов, сконвертив их в Base64 String. Она тоже работает с небольшими файлами. А вот с большими происходит что-то непонятное. Ломается всё это дружно при бОльших размерах вложений, а если точнее от 8 МБ. Причем ломается непонятно. Выкидывает null ошибку из базового класса при попытке отослать на сервер.

    Когда пытаюсь отловить с помощью TCPMonitor, что происходит с SOAP пакетами, все работает, т.е. пакет отдается монитору, монитор передает дальше, получает ответ от сервера и всё без ошибок. Когда без монитора, т. е. обращаюсь напрямую к серверу, то лезет ошибка.

    Подозрение, что когда происходит отсылка напрямую, то классы, которые отсылают SOAP пакет просто таймаутят, а через монитор в него отсылается шустрее и не успевают.

    Может кто-то сталкивался с подобными проблемами и решил или просто есть идеи по поводу "куда копать" или "как пофиксить"?
     
  2. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    .Settimeout(Ms)
     
  3. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Это пробовал уже. Не помогло.
     
  4. Murtas

    Murtas Well-Known Member

    Регистрация:
    11 апр 2006
    Сообщения:
    123
    Симпатии:
    0
    ну без нормальной обработки ошибки, что-то советовать толковое бесполезно ... null это просто баг
     
  5. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Есть идеи, куда обработчик запихать?

    WS Consumer (без типов):

    Код (LotusScript):
    Const n0 = "http://addendum.lt/CRMIntegration/types"
    Const n1 = "http://addendum.lt/CRMIntegration"
    Class CRMIntegration_n1 As PortTypeBase
     
    Sub NEW
    Call Service.Initialize ("HttpAddendumLtCRMIntegrationCRMIntegrationService", _
    "CRMIntegrationService.CRMIntegrationService", "http://127.0.0.1", _
    "CRMIntegration_n1")
     
    End Sub
     
    Function deleteEmail(request As DeleteEmailRequest_n0) As DeleteEmailResponse_n0
    Set deleteEmail = Service.Invoke("deleteEmail", request)
    End Function
     
    Function createEmail(request As CreateEmailRequest_n0) As CreateEmailResponse_n0
    Set createEmail = Service.Invoke("createEmail", request)
    End Function
     
    Function getEmailStatus(request As GetEmailStatusRequest_n0) As GetEmailStatusResponse_n0
    Set getEmailStatus = Service.Invoke("getEmailStatus", request)
    End Function
     
    Function getAccounts(request As GetAccountsRequest_n0) As GetAccountsResponse_n0
    Set getAccounts = Service.Invoke("getAccounts", request)
    End Function
     
    Function getAllAccounts(request As GetAllAccountsRequest_n0) As GetAllAccountsResponse_n0
    Set getAllAccounts = Service.Invoke("getAllAccounts", request)
    End Function
     
    End Class
    И ломается он на:
    Код (LotusScript):
    Set createEmail = Service.Invoke("createEmail", request)
     
  6. Murtas

    Murtas Well-Known Member

    Регистрация:
    11 апр 2006
    Сообщения:
    123
    Симпатии:
    0
    ну явно это будет не в лотусе, ошибка ж с явы поступает ... тут либо ваш Invoke что-то не дописывает или уже конкретно фунцкия createEmail
     
  7. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Выглядит всё примерно так:
    1. Создаётся объект реквеста в памяти, вызывается Invoke.
    2. Invoke подрубается к серверу и начинает доооолго писать туда XML с SOAP пакетом. Пишет, пишет и не дописав до конца решает, что хватит и возвращается с пустым ответом...
    3. Овет начинает обрабатываться и естественно выкидывает ошибку null, т.к. ничего там нету.

    Параметр .Settimeout(Ms) вообще ни на что не влияет выставляю его в 1000 мс, отсылка реально идет в течении 3-4 минут и не таймаутит.
     
  8. Murtas

    Murtas Well-Known Member

    Регистрация:
    11 апр 2006
    Сообщения:
    123
    Симпатии:
    0
    так это ответ тебе возвращает null? - тогда проблема усугубляется, ищи разработчиков сервиса который крутится на TomCat и заставляй исправить эту ошибку :)
     
  9. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Проблема решилась. Проблема была с настройками TomCat сервера.
     
Загрузка...
Похожие Темы - Web service consumer
  1. Proger J.
    Ответов:
    1
    Просмотров:
    200
  2. Реник
    Ответов:
    7
    Просмотров:
    1.812
  3. susinmn
    Ответов:
    9
    Просмотров:
    3.079
  4. nvyush
    Ответов:
    4
    Просмотров:
    3.776
  5. susinmn
    Ответов:
    1
    Просмотров:
    1.864

Поделиться этой страницей