[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;