2013-05-13 7 views
1

새로운 질문 :펄 LWP 밀접한 관계를 수동으로

나는 내 펄 스크립트와 함께 다음과 같은 일을 해요 : 세션을 종료 할 수있는 방법이

use strict; 
use warnings; 
use LWP 5.64; 

my $browser = LWP::UserAgent->new(); 
$browser->credentials( 
'localhost:8080', 
'Tomcat Manager Application', 
'admin' => '123' 
); 

my $app_url = qq(http://localhost:8080/manager/list); 
my $response = $browser->get($app_url); #this starts the Tomcat Manager Application 
#do something 
#end the tomcat manager application/terminate the session 

있습니까? 내 Manager 응용 프로그램의 기본 세션 시간 초과는 30 분입니다. 내가 시도한 것은 :

my $browser = LWP::UserAgent->new(); 
$browser->conn_cache(LWP::ConnCache->new()); 

그러나 항상 새로운 세션을 엽니 다.

나는 내가 이미 응답을받은 후 세션을 종료해야하기 때문에 $browser->timeout을 변경하면 여기에 올바른 접근하지라고 생각합니다.

도움이 될 것입니다.


오래된 질문 :

는 LWP를 사용하여 수동으로 세션을 종료하는 방법이 있나요? 나는 다음과 같은 것을 가지고있다 :

use strict; 
use warnings; 
use LWP 5.64; 

my $app_url = 'htpp://localhost:8080/manager/list' 
my $base_url = 'http://localhost:8080' 

my $browser = LWP::UserAgent->new; 
$browser->credentials( 
'localhost:8080/manager/list', 
'Tomcat Manager Application', 
'admin' => '123' 
); 

my $response = $browser->get($base_url); #session does not remain open 
my $respuesta = $browser->get($app_url); #session remains opened 
#do some processing 
#and now close the connection 

내 스크립트를 여러 번 연속적으로 실행하고 잠시 후 서버에 열린 세션이있다.

미리 답변 해 주셔서 감사합니다.

+0

내가 https://metacpan.org/module/GAAS/libwww-perl-6.05/lib/LWP/UserAgent.pm을 끌어와 "연결"을 검색합니다. 첫 번째 히트는 keep_alive와 연결 캐시에 대해 언급합니다. 나는 느낌이있다, 이것은 도움이 될지도 모른다. – innaM

+0

스크립트가 아직 실행 중입니까? 내가 아는 한, LWP :: UA는 새로운 생성자에 대한 옵션 해시를 명시 적으로 요청하지 않으면 영구 연결을 유지하지 않습니다. 스크립트가 리눅스에서 돌아가고 있다고 가정하고,'netstat -lnp | grep 8080'을보고 a) 포트 8080에 연결된 perl/script 프로세스가 있고 b) 소켓의 상태가 어떨지 확인하십시오. (CLOSE_WAIT, CONNECTED 등). –

+0

감사합니다. 나는 이것이 HTTP 기본 인증 문제 일 수 있다고 생각하니? AFAIK 기본 인증은 "로그 아웃"을 지원하지 않습니다. 필자의 가정은 perl의 종료가 연결을 끊을 것이지만 나는 틀렸다. 또한 이것은 Windows 컴퓨터에서 실행 중입니다. 나는 그것이 기본 URL에 대한 간단한 GET이 세션을 열어 두지 않기 때문에 HTTP 기본 인증과 관련이 있다고 확신한다. 그에 따라 내 게시물을 편집했습니다. 이론적으로 이것은 – user2236021

답변

0

당신은 당신의 연결 시간 제한을 설정할 수 있습니다 기본적으로

$browser->timeout([$secs]) 

는 제한 시간 180 초입니다. 더 작은 값을 지정할 수 있으며 연결이 더 빨리 닫힙니다.

+0

입니다. 그렇지만 작동하지 않아야합니다. – user2236021

+0

이것은 이상하지만, 내 두 번째 옵션을 시도;) –

0

이 하나의 시도 :

my $response = $browser->get($base_url); #session does not remain open 
my $respuesta = $browser->get($app_url); #session remains opened 
if($respuesta->is_success){ 
    #do some processing 
    die "OK"; 
} 
return 1; 
+0

감사 드미트리, 나는 그것을 고맙게 생각합니다. 하지만 여전히 작동하지 않습니다. 나는 정말로 HTTP Basic auth/Tomcat 문제라고 생각한다. 시간 초과 및 위에서 언급 한 keep_alive 옵션을 시도했지만 두 번 작동하지 않을 것입니다. 기본적으로 내가하고있는 일은 펄 스크립트로 톰캣 애플리케이션을 시작하고 그것을 닫는 방법을 모른다. 내 스크립트를 실행하면 매번 새로운 세션이 열립니다. keep_alive를 전달하면 그 문제가 해결되기를 바랍니다. – user2236021