2

내 플레이에 URL이 있습니다! 응용 것과 루트 HTML 또는 XLSX는 같은 경로 라인, URL에 전달 된 확장에 따라 : -이 URL이 Play에서 열리지 않는 이유는 무엇입니까? 프레임 워크 1.2.4?

# Calls 
GET  /calls.{format}       Call.index 

그래서 calls.html 페이지는 calls.xlsx 사용하여 Excel 파일을 (다운로드 렌더 Excel 모듈 재생). 브라우저, cURL 요청 등에서 모두 정상적으로 작동합니다.

이메일을 만들고 Excel을 첨부 할 수 있기를 원하지만 첨부 파일을 가져올 수 없습니다.

public static void sendReport(List<Object[]> invoicelines, String emailaddress) throws MalformedURLException, URISyntaxException 
    { 
     setFrom("Telco Analysis <[email protected]>"); 
     addRecipient(emailaddress); 
     setSubject("Telco Analysis report"); 
     EmailAttachment emailAttachment = new EmailAttachment(); 
     URL url = new URL("http://localhost:9001/calls.xlsx"); 

     emailAttachment.setURL(url); 
     emailAttachment.setName(url.getFile()); 
     emailAttachment.setDescription("Test file"); 
     addAttachment(emailAttachment); 
     send(invoicelines); 
    } 

하지만 그냥 URL의 컨텐츠를 가져 오지 않는, 그냥 거기에 앉아 크롬의 페이지 회가가는, 오류 메시지없이 묶어 웹 서버를 (-이 : 여기에 내가 먼저 시도 무엇의 기본 버전입니다 다른 브라우저/기계의 요청이 서비스를받지 못하는 지점까지). 첨부 파일없이 이메일을 보내면 문제가없는 파일을 가져 오는 것뿐입니다.

지금까지 위의 방법을 시도해 봤지만 Play WS 웹 서비스 라이브러리를 사용해 보았습니다. 수동으로 만들어진 HttpRequests 등을 시도했습니다. 다른 URL (예 : http://www.google.com)을 지정하면 정상적으로 작동합니다.

누구든지 도움을 줄 수 있습니까?

답변

1

Dev 모드에서 실행되고 있다고 가정합니다.

Dev 모드에서는 단일 요청 실행 풀이있을 가능성이 있지만 컨트롤러에서 전자 메일을 보내면 두 번째 요청을 보냅니다. 이전 요청이 완료 될 때까지 차단됩니다. 두 번째 요청이 응답하기를 기다리고 있기 때문에) ... .... 교착 상태! 외부 요청이 정상적으로 작동하는 이유는 재생 요청 풀에서 교착 상태가 발생하지 않기 때문입니다.

문제의 간단한 대답은 application.conf의 play.pool 값을 늘리는 것입니다. 주석 처리가 해제되어 있는지 확인하고 1보다 큰 값을 선택하십시오!

# Execution pool 
# ~~~~~ 
# Default to 1 thread in DEV mode or (nb processors + 1) threads in PROD mode. 
# Try to keep a low as possible. 1 thread will serialize all requests (very useful for debugging purpose) 
play.pool=3 
+0

좋은 가정 ;-) 나는 이것이 올바른 대답이라고 생각하고 내가 책상으로 돌아올 때를 확인합니다. –