03. marts 2003 - 09:56Der er
4 kommentarer og 1 løsning
Implementer timeout for forretningslogik
Jeg har et stykke programlogik, som kalder en ekstern server, som kan fejle uden at jeg har mulighed for at fange det, hvilket betyder at min program kan stå og hænge.
Derfor har jeg brug for en mulighed for at indkapsle min kode med noget timeout-logik.
Min kode kører via servlets (Struts action), og løsningen skal derfor være trådsikker.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Ja, det er en socket-connection jeg benytter til at kommunikere med serveren via Telnet (vi har desværre ikke bedre muligheder for at kommunikere med serveren direkte).
Løsningen med setSoTimeout vil løse nogle af problemerne, men der kan desværre opstå mange andre fejlsituationer, idet jeg skriver "blindt" det til serveren, som jeg formoder den spørger om. Hvis der går noget galt i denne "blindskrift", vil serveren formentlig aldrig levere det svar jeg forsøger at få, og derfor har jeg brug for at kunne afbryde min forretningslogik efter 30-60 sekunder.
Du laver en write til socket Du sætter timeout på socket til 45 sekunder Du laver en read fra socket Hvis du for et svar så fortsætter du med din forretnings logik Hvis du får en timeout exception afbryder du din forretnings logik
Hvis du får et svar skal du muligvis teste indholdet af dette inden du beslutter dig for at fortsætte eller aborte.
jeg er ikke helt sikkert, men vil lige teste det i praksis ... det ville være lettere end at pakke logikken ind i en tråd ..
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.