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

  • Автор темы Xalet
  • Дата начала
X

Xalet

Всем привет и сразу к теме.

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

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

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

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

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

Murtas

Green Team
11.04.2006
137
1
BIT
5
ну без нормальной обработки ошибки, что-то советовать толковое бесполезно ... null это просто баг
 
X

Xalet

ну без нормальной обработки ошибки, что-то советовать толковое бесполезно ... null это просто баг

Есть идеи, куда обработчик запихать?

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

Код:
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

И ломается он на:
Код:
Set createEmail = Service.Invoke("createEmail", request)
 

Murtas

Green Team
11.04.2006
137
1
BIT
5
ну явно это будет не в лотусе, ошибка ж с явы поступает ... тут либо ваш Invoke что-то не дописывает или уже конкретно фунцкия createEmail
 
X

Xalet

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

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

Murtas

Green Team
11.04.2006
137
1
BIT
5
так это ответ тебе возвращает null? - тогда проблема усугубляется, ищи разработчиков сервиса который крутится на TomCat и заставляй исправить эту ошибку :)
 
X

Xalet

Проблема решилась. Проблема была с настройками TomCat сервера.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!