DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_JAVA_ENGINE_UTIL_PUB

Source


1 PACKAGE BODY QP_JAVA_ENGINE_UTIL_PUB AS
2 /* $Header: QPXJUTLB.pls 120.2.12010000.3 2010/01/18 10:07:36 jputta ship $ */
3 
4 l_debug VARCHAR2(3);-- := QP_PREQ_GRP.G_DEBUG_ENGINE;
5 transferTimeout PLS_INTEGER := NULL;
6 defaultTimeout PLS_INTEGER := NULL;
7 eightI_env VARCHAR2(3);
8 --G_INTERNAL_J VARCHAR2(32767) := nvl(FND_PROFILE.VALUE('QP_INTERNAL_11510_J'), 'QWERTY');
9 --G_ENGINE_TYPE VARCHAR2(10) := nvl(FND_PROFILE.VALUE('QP_PRICING_ENGINE_TYPE'), 'PLSQL');
10 --G_ENGINE_URL VARCHAR2(1000) := FND_PROFILE.VALUE('QP_PRICING_ENGINE_URL');
11 --G_ICX_SESSION_ID VARCHAR2(1000) := FND_PROFILE.VALUE('ICX_SESSION_ID');
12 G_WALLET_PATH VARCHAR2(32767);
13 G_WALLET_PASSWORD VARCHAR2(100);
14 G_PROXY_SERVER VARCHAR2(200);
15 
16 /*
17   +----------------------------------------------------------------------
18   | Function Java_Engine_Installed
19   | TYPE:  Public
20   | FUNCTION: Determines if Java Engine is installed or not
21   | Input:  NONE
22   | Output: varchar2 -> 'Y', JavaEngine is installed, 'N' is not installed
23   +----------------------------------------------------------------------
24 */
25 FUNCTION Java_Engine_Installed RETURN VARCHAR2 IS
26 l_internal varchar2(32767);
27 BEGIN
28  l_internal := nvl(FND_PROFILE.VALUE('QP_INTERNAL_11510_J'), 'QWERTY_1');
29 
30  IF(l_internal = 'QWERTY') THEN
31  --IF(G_INTERNAL_J = 'QWERTY') THEN
32     RETURN 'Y'; --- changed to 'Y' to resolve the issues for the delayed request and pattern upgrade
33  ELSE
34     RETURN 'N'; --- changed to 'N' to resolve the issues for the delayed request and pattern upgrade
35  END IF;
36 END;
37 
38 /*
39   +----------------------------------------------------------------------
40   | Function Java_Engine_Running
41   | TYPE:  Public
42   | FUNCTION: Determines if Java Engine is up running, which means, in use
43   | Input:  NONE
44   | Output: varchar2 -> 'Y', JavaEngine is up running, 'N' is not in use
45   +----------------------------------------------------------------------
46 */
47 FUNCTION Java_Engine_Running RETURN VARCHAR2 IS
48 l_engine_type varchar2(10);
49 l_internal varchar2(32767);
50 BEGIN
51  l_internal := nvl(FND_PROFILE.VALUE('QP_INTERNAL_11510_J'), 'QWERTY');
52  l_engine_type := nvl(FND_PROFILE.VALUE('QP_PRICING_ENGINE_TYPE'), 'PLSQL');
53 
54  IF(l_internal = 'QWERTY') THEN
55  --IF(G_INTERNAL_J = 'QWERTY') THEN
56     RETURN 'N';
57  ELSE
58    IF(l_engine_type = 'JAVA') THEN
59    --IF(G_ENGINE_TYPE = 'JAVA') THEN
60       RETURN 'Y';
61    ELSE
62       RETURN 'N';
63    END IF;
64  END IF;
65 END;
66 
67 /*+----------------------------------------------------------------------
68   | Function Get_Engine_URL
69   | TYPE:  Public
70   | FUNCTION: Returns the URL string where Java Engine is deployed and running
71   | Input:  NONE
72   | Output: varchar2 -> URL string for HTTP request
73   +----------------------------------------------------------------------
74 */
75 FUNCTION Get_Engine_URL RETURN VARCHAR2 IS
76 l_engine_url varchar2(1000);
77 j number;
78 l_debug varchar2(3);
79 BEGIN
80  l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
81  l_engine_url := FND_PROFILE.VALUE('QP_PRICING_ENGINE_URL');
82 
83  l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
84  IF l_debug = FND_API.G_TRUE THEN
85      QP_PREQ_GRP.engine_debug('QP_PRICING_ENGINE_URL value:'||l_engine_url);
86      --QP_PREQ_GRP.engine_debug('QP_PRICING_ENGINE_URL value:'||G_ENGINE_URL);
87  END IF;
88  --for future
89  --we can have java engine to write URL into a table once it is up running.
90  --here, if l_engine_url is null, check that table for URL
91 
92  --preprocess the URL string to make sure it is correct without newline character
93  IF(l_engine_url is not null) THEN
94  --IF(G_ENGINE_URL is not null) THEN
95    j := instr(l_engine_url, G_NEWLINE_CHARACTER);
96    --j := instr(G_ENGINE_URL, G_NEWLINE_CHARACTER);
97    IF j <> 0 THEN
98       l_engine_url := substr(l_engine_url, 1, j-1);
99       --G_ENGINE_URL := substr(G_ENGINE_URL, 1, j-1);
100    END IF;
101  END IF;
102  RETURN l_engine_url;
103  --RETURN G_ENGINE_URL;
104 END;
105 
106 /*+----------------------------------------------------------------------
107   | FUNCTION Get_Context_Params
108   | Output: HTTP request parameters for Context
109   +----------------------------------------------------------------------
110 */
111 FUNCTION Get_Context_Params
112 RETURN varchar2 IS
113 p_ctxt_str varchar2(32767);
114 l_debug_flag varchar2(1);
115 l_debug varchar2(3);
116 BEGIN
117   p_ctxt_str := G_PARAM_NAME_DBC||'='||fnd_web_config.database_id;
118   p_ctxt_str := p_ctxt_str||G_HARD_CHAR;
119   p_ctxt_str := p_ctxt_str||G_PARAM_NAME_USERID||'='||FND_GLOBAL.USER_ID;
120   p_ctxt_str := p_ctxt_str||G_HARD_CHAR;
121   p_ctxt_str := p_ctxt_str||G_PARAM_NAME_RESPID||'='||FND_GLOBAL.RESP_ID;
122   p_ctxt_str := p_ctxt_str||G_HARD_CHAR;
123   p_ctxt_str := p_ctxt_str||G_PARAM_NAME_RESP_APPL_ID||'='||FND_GLOBAL.RESP_APPL_ID;
124   p_ctxt_str := p_ctxt_str||G_HARD_CHAR;
125   p_ctxt_str := p_ctxt_str||G_PARAM_NAME_ORG_ID||'='||FND_GLOBAL.ORG_ID;
126   p_ctxt_str := p_ctxt_str||G_HARD_CHAR;
127   p_ctxt_str := p_ctxt_str||G_PARAM_NAME_APP_SHORT_NAME||'='||FND_GLOBAL.APPLICATION_SHORT_NAME;
128   p_ctxt_str := p_ctxt_str||G_HARD_CHAR;
129   p_ctxt_str := p_ctxt_str||G_PARAM_NAME_LOGIN_ID||'='||FND_GLOBAL.LOGIN_ID;
130   p_ctxt_str := p_ctxt_str||G_HARD_CHAR;
131   --p_ctxt_str := p_ctxt_str||G_PARAM_NAME_ICX_SESSION_ID||'='||ICX_SEC.G_SESSION_ID;
132   p_ctxt_str := p_ctxt_str||G_PARAM_NAME_ICX_SESSION_ID||'='||FND_PROFILE.VALUE('ICX_SESSION_ID');
133   --p_ctxt_str := p_ctxt_str||G_PARAM_NAME_ICX_SESSION_ID||'='||G_ICX_SESSION_ID;
134   p_ctxt_str := p_ctxt_str||G_HARD_CHAR;
135   p_ctxt_str := p_ctxt_str||G_PARAM_NAME_CALL_TYPE||'=DB';
136   p_ctxt_str := p_ctxt_str||G_HARD_CHAR;
137   l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
138   IF(l_debug = FND_API.G_TRUE) THEN
139     l_debug_flag := 'Y';
140   ELSE
141     l_debug_flag := 'N';
142   END IF;
143   p_ctxt_str := p_ctxt_str||G_PARAM_NAME_DEBUG_FLAG||'='||l_debug_flag;
144   --p_ctxt_str := p_ctxt_str||'||'||FND_GLOBAL.SESSION_ID;
145   --p_ctxt_str := p_ctxt_str||'||'||icx_sec.getsessioncookie();
146 
147   --p_ctxt_str := p_ctxt_str||G_PARAM_NAME_ICX_SESSION_ID||'='||icx_call.encrypt3(ICX_SEC.G_SESSION_ID);
148   --p_ctxt_str := p_ctxt_str||'||'||icx_call.encrypt3(FND_GLOBAL.SESSION_ID);
149   --p_ctxt_str := p_ctxt_str||'||'||icx_call.encrypt3(ICX_SEC.G_SESSION_ID);
150   --p_ctxt_str := p_ctxt_str||'||'||icx_call.encrypt3(userenv('SESSIONID'));
151 
152   return p_ctxt_str;
153 END Get_Context_Params;
154 
155 PROCEDURE Interprete_Response_Text(response_text       IN VARCHAR2,
156 			x_return_status          OUT NOCOPY VARCHAR2,
157 			x_return_status_text     OUT NOCOPY VARCHAR2,
158                         x_return_details         OUT NOCOPY UTL_HTTP.HTML_PIECES)
159 is
160 l_debug VARCHAR2(3);
161 l_routine VARCHAR2(240):='Routine:QP_JAVA_ENGINE_UTIL_PUB.Interprete_Response_Text';
162 l_a number;
163 l_b number;
164 l_c number;
165 
166 BEGIN
167   BEGIN
168     l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
169     l_a := instr(response_text, G_PARAM_NAME_STS_CODE||'=');
170     IF l_debug = FND_API.G_TRUE THEN
171       QP_PREQ_GRP.engine_debug('l_a='||l_a);
172     END IF;
173     l_b := instr(response_text, G_PARAM_NAME_STS_TEXT||'=');
174     IF l_debug = FND_API.G_TRUE THEN
175       QP_PREQ_GRP.engine_debug('l_b='||l_b);
176     END IF;
177     l_c := instr(response_text, G_PARAM_NAME_DETAILS||'=');
178     IF l_debug = FND_API.G_TRUE THEN
179       QP_PREQ_GRP.engine_debug('l_c='||l_c);
180     END IF;
181 
182     IF(l_a = 0 or l_b = 0) THEN
183       x_return_status := FND_API.G_RET_STS_ERROR;
184       x_return_status_text := response_text;
185     ELSE
186       x_return_status := substr(response_text,l_a+ length(G_PARAM_NAME_STS_CODE)+1, l_b - (l_a+length(G_PARAM_NAME_STS_CODE)+1));
187     END IF;
188 
189     IF l_debug = FND_API.G_TRUE THEN
190       QP_PREQ_GRP.engine_debug('after parse, x_return_status='||x_return_status);
191     END IF;
192     IF l_c = 0 THEN
193       x_return_status_text := substr(response_text, l_b+length(G_PARAM_NAME_STS_TEXT)+1, 2000);
194     ELSE
195       x_return_status_text := substr(response_text, l_b+length(G_PARAM_NAME_STS_TEXT)+1, l_c - (l_b+length(G_PARAM_NAME_STS_TEXT)+1));
196       x_return_details(1) := substr(response_text, l_c+length(G_PARAM_NAME_DETAILS)+1, 2000);
197     END IF;
198     IF l_debug = FND_API.G_TRUE THEN
199       QP_PREQ_GRP.engine_debug('after parse,x_return_status_text='||x_return_status_text);
200       IF l_c <> 0 THEN
201         QP_PREQ_GRP.engine_debug('after parse,x_return_details(1)='||x_return_details(1));
202       END IF;
203     END IF;
204   EXCEPTION
205   WHEN OTHERS THEN
206     x_return_status := FND_API.G_RET_STS_ERROR;
207     FND_MESSAGE.SET_NAME('QP','QP_JPE_UTL_HTTP_STR_ERROR');
208     x_return_status_text := FND_MESSAGE.get;
209     --x_return_status_text := 'utl_http return string parsing error.';
210   END;
211 
212   IF x_return_status IS NULL THEN
213     x_return_status := FND_API.G_RET_STS_ERROR;
214     x_return_status_text := response_text;
215   ELSE
216     IF l_debug = FND_API.G_TRUE THEN
217       QP_PREQ_GRP.engine_debug('HTTP request has finished successfully!');
218     END IF;
219   END IF;
220 END;
221 
222 PROCEDURE Interprete_Response_Text(p_response_pieces IN UTL_HTTP.HTML_PIECES,
223 			x_return_status          OUT NOCOPY  VARCHAR2,
224 			x_return_status_text     OUT NOCOPY  VARCHAR2,
225                         x_return_details         OUT NOCOPY UTL_HTTP.HTML_PIECES)
226 is
227 BEGIN
228   Interprete_Response_Text(p_response_pieces(1),
229                            x_return_status,
230                            x_return_status_text,
231                            x_return_details);
232   IF x_return_details.count > 0 THEN
233     FOR i IN 2 .. p_response_pieces.count loop
234       x_return_details(i) := p_response_pieces(i);
235     END LOOP;
236   END IF;
237 EXCEPTION
238   WHEN OTHERS THEN
239     x_return_status := FND_API.G_RET_STS_ERROR;
240     FND_MESSAGE.SET_NAME('QP','QP_JPE_UTL_HTTP_STR_ERROR');
241     x_return_status_text := FND_MESSAGE.get;
242     --x_return_status_text := 'utl_http detail string parsing error.';
243 END;
244 
245 FUNCTION is_SSL_Enabled(p_url_string IN VARCHAR2)
246 RETURN VARCHAR2
247 IS
248 BEGIN
249 IF(instr(upper(p_url_string), 'HTTPS') <> 0) THEN
250   RETURN 'Y';
251 ELSE
252   RETURN 'N';
253 END IF;
254 END;
255 
256 PROCEDURE UTL_HTTP_REQUEST(p_url_string       IN VARCHAR2,
257                         x_return_status       OUT NOCOPY VARCHAR2,
258                         x_return_status_text  OUT NOCOPY VARCHAR2,
259                         x_return_details      OUT NOCOPY UTL_HTTP.HTML_PIECES,
260                         p_use_request_pieces  IN BOOLEAN DEFAULT FALSE)
261 IS
262 url_str VARCHAR2(32767);
263 l_debug varchar2(3);
264 l_routine VARCHAR2(240):='Routine:QP_JAVA_ENGINE_UTIL_PUB.UTL_HTTP_REQUEST';
265 pieces UTL_HTTP.HTML_PIECES;
266 BEGIN
267   l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
268 
269   /*HTTP Get Request from Java Engine*/
270   IF l_debug = FND_API.G_TRUE THEN
271     QP_PREQ_GRP.engine_debug('Inside Routine:'||l_routine);
272     QP_PREQ_GRP.engine_debug('url_string:'||p_url_string);
273   END IF;
274 
275   IF(is_SSL_Enabled(p_url_string) = 'Y') THEN
276     IF l_debug = FND_API.G_TRUE THEN
277       QP_PREQ_GRP.engine_debug('SSL is enabled.');
278     END IF;
279     G_WALLET_PATH :=nvl(G_WALLET_PATH,'file:/'||FND_PROFILE.VALUE('FND_DB_WALLET_DIR'));
280     G_WALLET_PASSWORD :=nvl(G_WALLET_PASSWORD,FND_PROFILE.VALUE('QP_WALLET_PASSWORD'));
281     G_PROXY_SERVER := nvl(G_PROXY_SERVER,FND_PROFILE.VALUE('QP_PROXY_SERVER'));
282     IF l_debug = FND_API.G_TRUE THEN
283       QP_PREQ_GRP.engine_debug('wallet_path:'||G_WALLET_PATH||' wallet_password:'||G_WALLET_PASSWORD);
284       QP_PREQ_GRP.engine_debug('proxy server:'||G_PROXY_SERVER);
285     END IF;
286     IF p_use_request_pieces THEN
287       pieces := UTL_HTTP.Request_Pieces(url             => p_url_string,
288                                         proxy           => G_PROXY_SERVER,
289                                         wallet_path     => G_WALLET_PATH,
290                                         wallet_password => G_WALLET_PASSWORD);
291     ELSE
292       url_str := UTL_HTTP.Request(p_url_string, G_PROXY_SERVER, G_WALLET_PATH, G_WALLET_PASSWORD);
293     END IF;
294   ELSE
295     IF l_debug = FND_API.G_TRUE THEN
296       QP_PREQ_GRP.engine_debug('SSL is disabled.');
297     END IF;
298     G_PROXY_SERVER := nvl(G_PROXY_SERVER, FND_PROFILE.VALUE('QP_PROXY_SERVER'));
299     IF(G_PROXY_SERVER <> null) THEN
300       IF l_debug = FND_API.G_TRUE THEN
301         QP_PREQ_GRP.engine_debug('proxy server:'||G_PROXY_SERVER);
302       END IF;
303       IF p_use_request_pieces THEN
304         pieces := UTL_HTTP.Request_Pieces(url          => p_url_string,
305                                           proxy        => G_PROXY_SERVER);
306       ELSE
307         url_str := UTL_HTTP.Request(p_url_string, G_PROXY_SERVER);
308       END IF;
309     ELSE
310       IF p_use_request_pieces THEN
311         pieces := UTL_HTTP.Request_Pieces(url          => p_url_string);
312       ELSE
313         url_str := UTL_HTTP.Request(p_url_string);
314       END IF;
315     END IF;
316   END IF;
317 
318   IF l_debug = FND_API.G_TRUE THEN
319     QP_PREQ_GRP.engine_debug('response length: '||length(url_str));
320     QP_PREQ_GRP.engine_debug('utl_http_request response:'||url_str);
321   END IF;
322 
323   IF p_use_request_pieces THEN
324     Interprete_Response_Text(pieces, x_return_status, x_return_status_text, x_return_details);
325   ELSE
326     Interprete_Response_Text(url_str, x_return_status, x_return_status_text, x_return_details);
327   END IF;
328 
329   IF l_debug = FND_API.G_TRUE THEN
330     QP_PREQ_GRP.engine_debug('after Interprete_Response_Text: x_return_status='||x_return_status||' x_return_status_text='||x_return_status_text);
331   END IF;
332 EXCEPTION
333   WHEN UTL_HTTP.INIT_FAILED THEN
334     BEGIN
335       --EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlcode from dual' INTO x_return_status;
336     --x_return_status_text := 'UTL_HTTP INIT_FAILED exception with errorcode:'||UTL_HTTP.get_detailed_sqlcode||' errormessage:'||UTL_HTTP.get_detailed_sqlerrm;
337       x_return_status := FND_API.G_RET_STS_ERROR;
338       EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlerrm from dual' INTO x_return_status_text;
339 
340       IF l_debug = FND_API.G_TRUE THEN
341         QP_PREQ_GRP.engine_debug('HTTP request failed because of UTL_HTTP_INIT_FAILED');
342         QP_PREQ_GRP.engine_debug('x_return_status='||x_return_status||' x_return_status_text='||x_return_status_text);
343       END IF;
344     EXCEPTION
345       WHEN OTHERS THEN
346         x_return_status := FND_API.G_RET_STS_ERROR;
347         FND_MESSAGE.SET_NAME('QP','QP_JPE_UNEXPECTED_ERROR');
348         x_return_status_text := FND_MESSAGE.get;
349         --x_return_status_text := 'Java Engine call failed unexpectedly. Please contact system administrator!';
350         IF l_debug = FND_API.G_TRUE THEN
351           QP_PREQ_GRP.engine_debug('HTTP request failed unexpectedly!' );
352         END IF;
353     END;
354   WHEN UTL_HTTP.REQUEST_FAILED THEN
355     x_return_status := FND_API.G_RET_STS_ERROR;
356     --x_return_status_text := 'UTL_HTTP.REQUEST_FAILED';
357     IF l_debug = FND_API.G_TRUE THEN
358       QP_PREQ_GRP.engine_debug('HTTP request failed because of UTL HTTP REQUEST_FAILED'||x_return_status_text);
359     END IF;
360     BEGIN
361       x_return_status := FND_API.G_RET_STS_ERROR;
362       EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlerrm from dual' INTO x_return_status_text;
363 
364       IF l_debug = FND_API.G_TRUE THEN
365         QP_PREQ_GRP.engine_debug('x_return_status='||x_return_status||' x_return_status_text='||x_return_status_text);
366       END IF;
367     EXCEPTION
368       WHEN OTHERS THEN
369         x_return_status := FND_API.G_RET_STS_ERROR;
370         x_return_status_text := 'UTL_HTTP REQUEST_FAILED exception';
371     END;
372   WHEN UTL_TCP.END_OF_INPUT THEN
373     x_return_status := FND_API.G_RET_STS_ERROR;
374     x_return_status_text := 'UTL_TCP.END_OF_INPUT';
375     IF l_debug = FND_API.G_TRUE THEN
376       QP_PREQ_GRP.engine_debug('HTTP request failed because of UTL_TCP.END_OF_INPUT');
377     END IF;
378   WHEN OTHERS THEN
379     BEGIN
380       --EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlcode from dual' INTO x_return_status;
381       x_return_status := FND_API.G_RET_STS_ERROR;
382       EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlerrm from dual' INTO x_return_status_text;
383 
384       IF l_debug = FND_API.G_TRUE THEN
385         QP_PREQ_GRP.engine_debug('x_return_status='||x_return_status||' x_return_status_text='||x_return_status_text);
386       END IF;
387     EXCEPTION
388       WHEN OTHERS THEN
389         x_return_status := FND_API.G_RET_STS_ERROR;
390         FND_MESSAGE.SET_NAME('QP','QP_JPE_UNEXPECTED_ERROR');
391         x_return_status_text := FND_MESSAGE.get;
392         --x_return_status_text := 'Java Engine call failed unexpectedly. Please contact system administrator!';
393         IF l_debug = FND_API.G_TRUE THEN
394           QP_PREQ_GRP.engine_debug('HTTP request failed unexpectedly!' );
395         END IF;
396     END;
397 END;
398 
399 PROCEDURE Send_Java_Engine_Request (p_url_param_string       IN VARCHAR2,
400 			x_return_status          OUT NOCOPY  VARCHAR2,
401 			x_return_status_text     OUT NOCOPY  VARCHAR2,
402 			x_return_details         OUT NOCOPY  UTL_HTTP.HTML_PIECES,
403                         p_use_request_pieces     IN BOOLEAN,
404                         p_transfer_timeout       IN NUMBER,
405                         p_detailed_excp_support  IN VARCHAR2,
406                         p_timeout_processing IN VARCHAR2)
407 is
408 l_debug VARCHAR2(3);
409 l_routine VARCHAR2(240):='Routine:QP_JAVA_ENGINE_UTIL_PUB.Send_Java_Engine_Request';
410 url_str VARCHAR2(32767);
411 p_ctrl_str varchar2(32767);
412 p_ctxt_str varchar2(32767);
413 
414 l_pricing_start_time number;
415 l_pricing_end_time number;
416 E_ROUTINE_ERRORS EXCEPTION;
417 E_JAVA_ENGINE_URL_NULL EXCEPTION;
418 l_engine_server_url VARCHAR2(500);
419 l_ctxt_str varchar2(32767);
420 l_transfer_timeout NUMBER;
421 l_detailed_excp_support VARCHAR2(3);
422 l_return_status_code varchar2(1);
423 l_return_status_text varchar2(240);
424 
425 --added for HTTP timeout issue handling
426 l_status_request_cnt  NUMBER;
427 MAX_STATUS_REQUESTS_REACHED EXCEPTION;
428 --added for HTTP timeout issue handling
429 BEGIN
430   l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
431 
432   IF l_debug = FND_API.G_TRUE THEN
433     l_pricing_start_time := dbms_utility.get_time;
434     QP_PREQ_GRP.engine_debug('Inside '||l_routine);
435     IF eightI_env = FND_API.G_FALSE THEN
436       l_detailed_excp_support := FND_API.G_TRUE;
437     ELSE
438       l_detailed_excp_support := FND_API.G_FALSE;
439     END IF;
440   ELSIF p_timeout_processing = FND_API.G_TRUE THEN
441     IF eightI_env = FND_API.G_FALSE THEN
442       l_detailed_excp_support := FND_API.G_TRUE;
443     ELSE
444       l_detailed_excp_support := FND_API.G_FALSE;
445     END IF;
446   ELSE
447     IF eightI_env = FND_API.G_FALSE THEN
448       l_detailed_excp_support := p_detailed_excp_support;
449     ELSE
450       l_detailed_excp_support := FND_API.G_FALSE;
451     END IF;
452   END IF;
453 
454   l_engine_server_url := QP_JAVA_ENGINE_UTIL_PUB.Get_Engine_URL;
455   IF l_engine_server_url is null THEN
456     IF l_debug = FND_API.G_TRUE THEN
457      QP_PREQ_GRP.engine_debug('Java Engine URL has not been setup correctly.');
458     END IF;
459     RAISE E_JAVA_ENGINE_URL_NULL;
460   END IF;
461 
462   /*Construct request parameter string ContextConfig*/
463   l_ctxt_str := Get_Context_Params;
464 
465   IF l_debug = FND_API.G_TRUE THEN
466     QP_PREQ_GRP.engine_debug('before UTL_HTTP.Request, the url string:'||l_engine_server_url||'?'||l_ctxt_str||'&'||p_url_param_string);
467   END IF;
468 
469   /*Defaulting transfer timeout to transferTimeout specified by profile*/
470   IF p_transfer_timeout = -1 THEN
471     l_transfer_timeout := transferTimeout;
472   ELSE
473     l_transfer_timeout := p_transfer_timeout;
474   END IF;
475 
476   /*Set transfer timeout, default is 60s in 9i database*/
477   IF(l_transfer_timeout IS NOT NULL AND defaultTimeout IS NOT NULL AND l_transfer_timeout <> defaultTimeout)THEN
478     IF l_debug = FND_API.G_TRUE THEN
479       QP_PREQ_GRP.engine_debug('set utl_http transfer_timeout to '||l_transfer_timeout);
480     END IF;
481     EXECUTE IMMEDIATE 'BEGIN UTL_HTTP.Set_Transfer_Timeout(:1); END;' USING IN l_transfer_timeout;
482   END IF;
483 
484   /*Added for catch more detailed error when UTL_HTTP errored out*/
485   IF l_detailed_excp_support = FND_API.G_TRUE THEN
486     IF l_debug = FND_API.G_TRUE THEN
487       QP_PREQ_GRP.engine_debug('set utl_http set_detailed_excp_support(true)');
488     END IF;
489     EXECUTE IMMEDIATE 'BEGIN UTL_HTTP.set_detailed_excp_support(TRUE); END;';
490   END IF;
491 
492   /*HTTP Get Request from Java Engine*/
493   UTL_HTTP_REQUEST(l_engine_server_url||'?'||l_ctxt_str||'&'||p_url_param_string,
494                    x_return_status,
495                    x_return_status_text,
496                    x_return_details,
497                    p_use_request_pieces);
498 
499   IF l_debug = FND_API.G_TRUE THEN
500     QP_PREQ_GRP.engine_debug('After first HTTP call: x_return_status='||x_return_status||' x_return_status_text='||x_return_status_text);
501   END IF;
502 
503   IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
504     IF (p_timeout_processing = FND_API.G_TRUE) THEN
505     /*UTL_HTTP_TRANSFER Timeout and HTTP Timeout issue handling*/
506       IF (x_return_status_text = 'UTL_TCP.END_OF_INPUT' or instr(x_return_status_text, 'ORA-29276') <> 0) THEN
507         l_status_request_cnt := 0;
508         LOOP
509           IF l_debug = FND_API.G_TRUE THEN
510             QP_PREQ_GRP.engine_debug('sleeping........'||G_STATUS_REQUEST_INTERVAL||'(secs)');
511           END IF;
512           DBMS_LOCK.SLEEP(G_STATUS_REQUEST_INTERVAL);
513 
514           UTL_HTTP_REQUEST(l_engine_server_url||'?'||l_ctxt_str||G_HARD_CHAR||'Action=inquery'|| G_HARD_CHAR||'RequestId='|| QP_Price_Request_Context.GET_REQUEST_ID,
515                            x_return_status,
516                            x_return_status_text,
517                            x_return_details);
518 
519           IF l_debug = FND_API.G_TRUE THEN
520             QP_PREQ_GRP.engine_debug('After inquery HTTP call: x_return_status='||x_return_status||' x_return_status_text='||x_return_status_text);
521           END IF;
522 
523           IF x_return_status = FND_API.G_RET_STS_ERROR THEN
524             IF  (x_return_status_text <> 'UTL_TCP.END_OF_INPUT' and instr(x_return_status_text, 'ORA-29276') = 0) THEN
525             /*other errors than timeout error, send request to remove mid-tier status */
526               --UTL_HTTP_REQUEST(l_engine_server_url||'?'||l_ctxt_str||G_HARD_CHAR||'Action=finish'|| G_HARD_CHAR||'RequestId='|| QP_Price_Request_Context.GET_REQUEST_ID, x_return_status, x_return_status_text);
527               UTL_HTTP_REQUEST(l_engine_server_url||'?'||l_ctxt_str||G_HARD_CHAR||'Action=finish'|| G_HARD_CHAR||'RequestId='|| QP_Price_Request_Context.GET_REQUEST_ID,
528                                l_return_status_code,
529                                l_return_status_text,
530                                x_return_details,
531                                p_use_request_pieces);
532               RAISE E_ROUTINE_ERRORS;
533             END IF;
534           END IF;
535           EXIT WHEN x_return_status_text <> 'IN_PROGRESS' and x_return_status_text <> 'UTL_TCP.END_OF_INPUT' and instr(x_return_status_text, 'ORA-29276') = 0;
536 
537             -- 'COMPLETED','ERROR', or anything else;
538           IF l_status_request_cnt > G_MAX_STATUS_REQUESTS THEN
539             RAISE MAX_STATUS_REQUESTS_REACHED;
540           END IF;
541           l_status_request_cnt := l_status_request_cnt + 1;
542         END LOOP;
543 
544         IF(instr(x_return_status_text, 'ERROR') <> 0) THEN
545           x_return_status := FND_API.G_RET_STS_ERROR;
546           x_return_status_text := substr(x_return_status_text,7, length(x_return_status_text)-7);
547         END IF;
548 
549       ELSE
550       /*other errors than timeout error, send request to remove mid-tier status */
551         --UTL_HTTP_REQUEST(l_engine_server_url||'?'||l_ctxt_str||G_HARD_CHAR||'Action=finish'|| G_HARD_CHAR||'RequestId='|| QP_Price_Request_Context.GET_REQUEST_ID, x_return_status, x_return_status_text);
552         UTL_HTTP_REQUEST(l_engine_server_url||'?'||l_ctxt_str||G_HARD_CHAR||'Action=finish'|| G_HARD_CHAR||'RequestId='|| QP_Price_Request_Context.GET_REQUEST_ID,
553                          l_return_status_code,
554                          l_return_status_text,
555                          x_return_details,
556                          p_use_request_pieces);
557         RAISE E_ROUTINE_ERRORS;
558       END IF;
559     END IF;
560   END IF;
561 
562   /*Set transfer timeout back to default value, default is 60s in 9i database*/
563   IF(l_transfer_timeout IS NOT NULL AND defaultTimeout IS NOT NULL AND l_transfer_timeout <> defaultTimeout)THEN
564     IF l_debug = FND_API.G_TRUE THEN
565       QP_PREQ_GRP.engine_debug('set utl_http transfer_timeout back to '||defaultTimeout);
566     END IF;
567     EXECUTE IMMEDIATE 'BEGIN UTL_HTTP.Set_Transfer_Timeout(:1); END;' USING IN defaultTimeout;
568   END IF;
569 
570   /*Added for catch more detailed error when UTL_HTTP errored out*/
571   IF l_detailed_excp_support = FND_API.G_TRUE THEN
572     IF l_debug = FND_API.G_TRUE THEN
573       QP_PREQ_GRP.engine_debug('set utl_http set_detailed_excp_support(false)');
574     END IF;
575     EXECUTE IMMEDIATE 'BEGIN UTL_HTTP.set_detailed_excp_support(FALSE); END;';
576   END IF;
577 
578   IF l_debug = FND_API.G_TRUE THEN
579     l_pricing_end_time := dbms_utility.get_time;
580     QP_PREQ_GRP.engine_debug('Request total time: '||(l_pricing_end_time - l_pricing_start_time)/100);
581   END IF;
582 
583 EXCEPTION
584   WHEN UTL_HTTP.INIT_FAILED THEN
585     x_return_status := FND_API.G_RET_STS_ERROR;
586     --x_return_status_text := 'UTL_HTTP INIT_FAILED exception with errorcode:'||UTL_HTTP.get_detailed_sqlcode||' errormessage:'||UTL_HTTP.get_detailed_sqlerrm ;
587     x_return_status_text := 'UTL_HTTP.INIT_FAILED';
588     IF l_debug = FND_API.G_TRUE THEN
589       QP_PREQ_GRP.engine_debug('HTTP request failed because of UTL_HTTP_INIT_FAILED');
590     END IF;
591   WHEN UTL_HTTP.REQUEST_FAILED THEN
592     x_return_status := FND_API.G_RET_STS_ERROR;
593     x_return_status_text := 'UTL_HTTP.REQUEST_FAILED';
594     IF l_debug = FND_API.G_TRUE THEN
595       QP_PREQ_GRP.engine_debug('HTTP request failed because of UTL HTTP REQUEST_FAILED'||x_return_status_text);
596     END IF;
597     BEGIN
598       --EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlcode from dual' INTO x_return_status;
599       x_return_status := FND_API.G_RET_STS_ERROR;
600       EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlerrm from dual' INTO x_return_status_text;
601 
602       IF l_debug = FND_API.G_TRUE THEN
603         QP_PREQ_GRP.engine_debug('x_return_status='||x_return_status||' x_return_status_text='||x_return_status_text);
604       END IF;
605     EXCEPTION
606       WHEN OTHERS THEN
607         x_return_status := FND_API.G_RET_STS_ERROR;
608         x_return_status_text := 'UTL_HTTP REQUEST_FAILED exception';
609     END;
610   WHEN UTL_TCP.END_OF_INPUT THEN
611     x_return_status := FND_API.G_RET_STS_ERROR;
612     x_return_status_text := 'UTL_TCP.END_OF_INPUT';
613     IF l_debug = FND_API.G_TRUE THEN
614       QP_PREQ_GRP.engine_debug('HTTP request failed because of UTL_TCP.END_OF_INPUT');
615     END IF;
616   WHEN E_JAVA_ENGINE_URL_NULL THEN
617     x_return_status := FND_API.G_RET_STS_ERROR;
618     FND_MESSAGE.SET_NAME('QP','QP_JPE_URL_NULL_ERROR');
619     x_return_status_text := FND_MESSAGE.get;
620     --x_return_status_text := 'Java Engine URL should not be null. Please contact system administrator to setup the URL correctly first.';
621     IF l_debug = FND_API.G_TRUE THEN
622       QP_PREQ_GRP.engine_debug('Java Engine URL is null');
623     END IF;
624   WHEN MAX_STATUS_REQUESTS_REACHED THEN
625     x_return_status := FND_API.G_RET_STS_ERROR;
626     FND_MESSAGE.SET_NAME('QP','QP_JPE_REQUEST_TIMEOUT_ERROR');
627     FND_MESSAGE.SET_TOKEN('SECONDS',G_MAX_STATUS_REQUESTS*G_STATUS_REQUEST_INTERVAL);
628 
629     x_return_status_text := FND_MESSAGE.GET;
630      --x_return_status_text := 'Request has exceeded '||(G_MAX_STATUS_REQUESTS*G_STATUS_REQUEST_INTERVAL)||' seconds.';
631   WHEN E_ROUTINE_ERRORS THEN
632     IF QP_PREQ_GRP.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
633       QP_PREQ_GRP.engine_debug(l_routine||': '||x_return_status_text);
634     END IF;
635     x_return_status := FND_API.G_RET_STS_ERROR;
636   WHEN OTHERS THEN
637     BEGIN
638       --EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlcode from dual' INTO x_return_status;
639       x_return_status := FND_API.G_RET_STS_ERROR;
640       EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlerrm from dual' INTO x_return_status_text;
641 
642       IF l_debug = FND_API.G_TRUE THEN
643         QP_PREQ_GRP.engine_debug('x_return_status='||x_return_status||' x_return_status_text='||x_return_status_text);
644       END IF;
645     EXCEPTION
646       WHEN OTHERS THEN
647         x_return_status := FND_API.G_RET_STS_ERROR;
648         FND_MESSAGE.SET_NAME('QP','QP_JPE_UNEXPECTED_ERROR');
649         x_return_status_text := FND_MESSAGE.GET;
650         --x_return_status_text := 'Java Engine call failed unexpectedly. Please contact system administrator!';
651         IF l_debug = FND_API.G_TRUE THEN
652           QP_PREQ_GRP.engine_debug('HTTP request failed unexpectedly!' );
653         END IF;
654     END;
655 
656 end Send_Java_Engine_Request;
657 
658 PROCEDURE Send_Java_Engine_Request (p_url_param_string       IN VARCHAR2,
659 			x_return_status          OUT NOCOPY  VARCHAR2,
660 			x_return_status_text     OUT NOCOPY  VARCHAR2,
661                         p_transfer_timeout       IN NUMBER,
662                         p_detailed_excp_support  IN VARCHAR2,
663                         p_timeout_processing IN VARCHAR2)
664 is
665 l_dummy_return_details UTL_HTTP.HTML_PIECES;
666 BEGIN
667 
668   Send_Java_Engine_Request(p_url_param_string,
669                            x_return_status,
670                            x_return_status_text,
671                            l_dummy_return_details,
672                            false,
673                            p_transfer_timeout,
674                            p_detailed_excp_support,
675                            p_timeout_processing);
676 
677 END;
678 
679 PROCEDURE Send_Java_Request (p_server_url        IN VARCHAR2,
680                         p_url_param_string       IN VARCHAR2,
681 			x_return_status          OUT NOCOPY  VARCHAR2,
682 			x_return_status_text     OUT NOCOPY  VARCHAR2,
683 			x_return_details         OUT NOCOPY  UTL_HTTP.HTML_PIECES,
684                         p_use_request_pieces     IN BOOLEAN,
685                         p_transfer_timeout       IN NUMBER,
686                         p_detailed_excp_support  IN VARCHAR2,
687                         p_timeout_processing IN VARCHAR2)
688 is
689 l_debug VARCHAR2(3);
690 l_routine VARCHAR2(240):='Routine:QP_JAVA_ENGINE_UTIL_PUB.Send_Java_Request';
691 url_str VARCHAR2(32767);
692 p_ctrl_str varchar2(32767);
693 p_ctxt_str varchar2(32767);
694 
695 l_pricing_start_time number;
696 l_pricing_end_time number;
697 E_ROUTINE_ERRORS EXCEPTION;
698 E_JAVA_URL_NULL EXCEPTION;
699 l_engine_server_url VARCHAR2(500);
700 l_ctxt_str varchar2(32767);
701 l_transfer_timeout NUMBER;
702 l_detailed_excp_support VARCHAR2(3);
703 l_return_status_code varchar2(1);
704 l_return_status_text varchar2(240);
705 
706 --added for HTTP timeout issue handling
707 l_status_request_cnt  NUMBER;
708 MAX_STATUS_REQUESTS_REACHED EXCEPTION;
709 --added for HTTP timeout issue handling
710 BEGIN
711   l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
712 
713   IF l_debug = FND_API.G_TRUE THEN
714     l_pricing_start_time := dbms_utility.get_time;
715     QP_PREQ_GRP.engine_debug('Inside '||l_routine);
716     IF eightI_env = FND_API.G_FALSE THEN
717       l_detailed_excp_support := FND_API.G_TRUE;
718     ELSE
719       l_detailed_excp_support := FND_API.G_FALSE;
720     END IF;
721   ELSIF p_timeout_processing = FND_API.G_TRUE THEN
722     IF eightI_env = FND_API.G_FALSE THEN
723       l_detailed_excp_support := FND_API.G_TRUE;
724     ELSE
725       l_detailed_excp_support := FND_API.G_FALSE;
726     END IF;
727   ELSE
728     IF eightI_env = FND_API.G_FALSE THEN
729       l_detailed_excp_support := p_detailed_excp_support;
730     ELSE
731       l_detailed_excp_support := FND_API.G_FALSE;
732     END IF;
733   END IF;
734 
735   IF p_server_url is null THEN
736     IF l_debug = FND_API.G_TRUE THEN
737      QP_PREQ_GRP.engine_debug('Java Engine URL has not been setup correctly.');
738     END IF;
739     RAISE E_JAVA_URL_NULL;
740   END IF;
741 
742   /*Construct request parameter string ContextConfig*/
743   l_ctxt_str := Get_Context_Params;
744 
745   IF l_debug = FND_API.G_TRUE THEN
746     QP_PREQ_GRP.engine_debug('before UTL_HTTP.Request, the url string:'||p_server_url||'?'||l_ctxt_str||'&'||p_url_param_string);
747   END IF;
748 
749   /*Defaulting transfer timeout to transferTimeout specified by profile*/
750   IF p_transfer_timeout = -1 THEN
751     l_transfer_timeout := transferTimeout;
752   ELSE
753     l_transfer_timeout := p_transfer_timeout;
754   END IF;
755 
756   /*Set transfer timeout, default is 60s in 9i database*/
757   IF(l_transfer_timeout IS NOT NULL AND defaultTimeout IS NOT NULL AND l_transfer_timeout <> defaultTimeout)THEN
758     IF l_debug = FND_API.G_TRUE THEN
759       QP_PREQ_GRP.engine_debug('set utl_http transfer_timeout to '||l_transfer_timeout);
760     END IF;
761     EXECUTE IMMEDIATE 'BEGIN UTL_HTTP.Set_Transfer_Timeout(:1); END;' USING IN l_transfer_timeout;
762   END IF;
763 
764   /*Added for catch more detailed error when UTL_HTTP errored out*/
765   IF l_detailed_excp_support = FND_API.G_TRUE THEN
766     IF l_debug = FND_API.G_TRUE THEN
767       QP_PREQ_GRP.engine_debug('set utl_http set_detailed_excp_support(true)');
768     END IF;
769     EXECUTE IMMEDIATE 'BEGIN UTL_HTTP.set_detailed_excp_support(TRUE); END;';
770   END IF;
771 
772   /*HTTP Get Request from Java Engine*/
773   UTL_HTTP_REQUEST(p_server_url||'?'||l_ctxt_str||'&'||p_url_param_string,
774                    x_return_status,
775                    x_return_status_text,
776                    x_return_details,
777                    p_use_request_pieces);
778 
779   IF l_debug = FND_API.G_TRUE THEN
780     QP_PREQ_GRP.engine_debug('After first HTTP call: x_return_status='||x_return_status||' x_return_status_text='||x_return_status_text);
781   END IF;
782 
783   /*Set transfer timeout back to default value, default is 60s in 9i database*/
784   IF(l_transfer_timeout IS NOT NULL AND defaultTimeout IS NOT NULL AND l_transfer_timeout <> defaultTimeout)THEN
785     IF l_debug = FND_API.G_TRUE THEN
786       QP_PREQ_GRP.engine_debug('set utl_http transfer_timeout back to '||defaultTimeout);
787     END IF;
788     EXECUTE IMMEDIATE 'BEGIN UTL_HTTP.Set_Transfer_Timeout(:1); END;' USING IN defaultTimeout;
789   END IF;
790 
791   /*Added for catch more detailed error when UTL_HTTP errored out*/
792   IF l_detailed_excp_support = FND_API.G_TRUE THEN
793     IF l_debug = FND_API.G_TRUE THEN
794       QP_PREQ_GRP.engine_debug('set utl_http set_detailed_excp_support(false)');
795     END IF;
796     EXECUTE IMMEDIATE 'BEGIN UTL_HTTP.set_detailed_excp_support(FALSE); END;';
797   END IF;
798 
799   IF l_debug = FND_API.G_TRUE THEN
800     l_pricing_end_time := dbms_utility.get_time;
801     QP_PREQ_GRP.engine_debug('Request total time: '||(l_pricing_end_time - l_pricing_start_time)/100);
802   END IF;
803 
804 EXCEPTION
805   WHEN UTL_HTTP.INIT_FAILED THEN
806     x_return_status := FND_API.G_RET_STS_ERROR;
807     --x_return_status_text := 'UTL_HTTP INIT_FAILED exception with errorcode:'||UTL_HTTP.get_detailed_sqlcode||' errormessage:'||UTL_HTTP.get_detailed_sqlerrm ;
808     x_return_status_text := 'UTL_HTTP.INIT_FAILED';
809     IF l_debug = FND_API.G_TRUE THEN
810       QP_PREQ_GRP.engine_debug('HTTP request failed because of UTL_HTTP_INIT_FAILED');
811     END IF;
812   WHEN UTL_HTTP.REQUEST_FAILED THEN
813     x_return_status := FND_API.G_RET_STS_ERROR;
814     x_return_status_text := 'UTL_HTTP.REQUEST_FAILED';
815     IF l_debug = FND_API.G_TRUE THEN
816       QP_PREQ_GRP.engine_debug('HTTP request failed because of UTL HTTP REQUEST_FAILED'||x_return_status_text);
817     END IF;
818     BEGIN
819       --EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlcode from dual' INTO x_return_status;
820       x_return_status := FND_API.G_RET_STS_ERROR;
821       EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlerrm from dual' INTO x_return_status_text;
822 
823       IF l_debug = FND_API.G_TRUE THEN
824         QP_PREQ_GRP.engine_debug('x_return_status='||x_return_status||' x_return_status_text='||x_return_status_text);
825       END IF;
826     EXCEPTION
827       WHEN OTHERS THEN
828         x_return_status := FND_API.G_RET_STS_ERROR;
829         x_return_status_text := 'UTL_HTTP REQUEST_FAILED exception';
830     END;
831   WHEN UTL_TCP.END_OF_INPUT THEN
832     x_return_status := FND_API.G_RET_STS_ERROR;
833     x_return_status_text := 'UTL_TCP.END_OF_INPUT';
834     IF l_debug = FND_API.G_TRUE THEN
835       QP_PREQ_GRP.engine_debug('HTTP request failed because of UTL_TCP.END_OF_INPUT');
836     END IF;
837   WHEN MAX_STATUS_REQUESTS_REACHED THEN
838     x_return_status := FND_API.G_RET_STS_ERROR;
839     FND_MESSAGE.SET_NAME('QP','QP_JPE_REQUEST_TIMEOUT_ERROR');
840     FND_MESSAGE.SET_TOKEN('SECONDS',G_MAX_STATUS_REQUESTS*G_STATUS_REQUEST_INTERVAL);
841 
842     x_return_status_text := FND_MESSAGE.GET;
843      --x_return_status_text := 'Request has exceeded '||(G_MAX_STATUS_REQUESTS*G_STATUS_REQUEST_INTERVAL)||' seconds.';
844   WHEN E_ROUTINE_ERRORS THEN
845     IF QP_PREQ_GRP.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
846       QP_PREQ_GRP.engine_debug(l_routine||': '||x_return_status_text);
847     END IF;
848     x_return_status := FND_API.G_RET_STS_ERROR;
849   WHEN OTHERS THEN
850     BEGIN
851       --EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlcode from dual' INTO x_return_status;
852       x_return_status := FND_API.G_RET_STS_ERROR;
853       EXECUTE IMMEDIATE 'SELECT UTL_HTTP.get_detailed_sqlerrm from dual' INTO x_return_status_text;
854 
855       IF l_debug = FND_API.G_TRUE THEN
856         QP_PREQ_GRP.engine_debug('x_return_status='||x_return_status||' x_return_status_text='||x_return_status_text);
857       END IF;
858     EXCEPTION
859       WHEN OTHERS THEN
860         x_return_status := FND_API.G_RET_STS_ERROR;
861         --FND_MESSAGE.SET_NAME('QP','QP_JPE_UNEXPECTED_ERROR');
862         --x_return_status_text := FND_MESSAGE.GET;
863         x_return_status_text := 'Java call failed unexpectedly. Please contact system administrator!';
864         IF l_debug = FND_API.G_TRUE THEN
865           QP_PREQ_GRP.engine_debug('HTTP request failed unexpectedly!' );
866         END IF;
867     END;
868 
869 end Send_Java_Request;
870 
871 BEGIN
872    BEGIN
873      transferTimeout :=  FND_PROFILE.VALUE('QP_UTL_HTTP_TIMEOUT');
874      eightI_env := FND_API.G_FALSE;
875      EXECUTE IMMEDIATE 'BEGIN UTL_HTTP.GET_TRANSFER_TIMEOUT(:1); END;' USING IN OUT defaultTimeout;
876      IF l_debug = FND_API.G_TRUE THEN
877        QP_PREQ_GRP.engine_debug('transferTimeout='||transferTimeout||'sec defaultTimeout='||defaultTimeout||'sec.');
878      END IF;
879    EXCEPTION
880      WHEN OTHERS THEN
881        transferTimeout := NULL;
882        defaultTimeout := NULL;
883        eightI_env := FND_API.G_TRUE;
884      IF l_debug = FND_API.G_TRUE THEN
885        QP_PREQ_GRP.engine_debug('transferTimeout=NULL and defaultTimeout=NULL.');
886      END IF;
887    END;
888 END QP_JAVA_ENGINE_UTIL_PUB;