2011-08-08 3 views
0

이 문제는 dev 모드 (Eclipse ...)에서 테스트되었으며 발생합니다.앱 엔진 동적 백엔드가 dev 모드에서 예상대로 작동하지 않습니다.

내가 (backends.xml에서) 하나의 구성 백엔드가 : 당신이 명시 적으로 '동적'으로 설정되어시피

<backends> 
    <backend name="example"> 
     <class>B8</class> 
     <options> 
      <instances>1</instances> 
      <public>false</public> 
      <dynamic>true</dynamic> 
     </options> 
    </backend> 
</backends> 

합니다.

<?xml version="1.0" encoding="utf-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    version="2.5"> 

    <servlet> 
     <servlet-name>backend_test</servlet-name> 
     <servlet-class>BackendTest</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>backend_test</servlet-name> 
     <url-pattern>/_ah/start</url-pattern> 
    </servlet-mapping> 

</web-app> 

.. 백엔드 그냥 일반 서블릿 엔트리 포인트 :

내 web.xml 파일입니다. 내가 제대로 this doc line을 이해한다면

INFO: The server is running at http://localhost:8888/ 
Backend started! 
Backend terminating! 

: 나는 F11를 쳤고 응용 프로그램을 디버깅을 시작할 때, 이것은 콘솔에 출력 지금

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@SuppressWarnings("serial") 
public class BackendTest extends HttpServlet 
{ 

    @Override 
    public void doGet(HttpServletRequest req, HttpServletResponse res) 
      throws ServletException, IOException 
    { 
     System.out.println("Backend started!"); 

     // ............ 

     System.out.println("Backend terminating!"); 
    } 
} 

:

그리고 여기 백엔드의 자바 코드입니다 내가 /_ah/start (http)을 요청할 때까지 시작해서는 안됩니다. 동적 백엔드를 시작하면

는, 앱 엔진은 트래픽을 받아 들일 수 있지만,/_ah 시작/요청은 그것의 첫 번째 사용자의 요청을 수신 때까지 인스턴스로 전송되지 않습니다 : 그것은 분명히 말한다.

또 다른 부작용은,이 문제에 관련, 백엔드는 결코 것이다 "정지"(나는 http://127.0.0.1:8888/_ah/admin/backends의 관리 영역에서 보는 바와 같이), 나는 그것이 "실행 중"상태로 남아 의미한다.
(위의 코드에서 콘솔에서 명확하게 인쇄 된 것처럼) 종료 된 후 몇 분 후에 종료하지 않아야합니까? (나는 약 20 분을 기다리고있다).

내가 뭘 잘못하고 있니?

하지만 최종 목표는 "작업"실행과 마찬가지로 "백엔드"컨텍스트에서 일부 코드를 실행하는 것입니다. 나는 "백엔드"CPU/RAM 전원 및 제한 시간 때문에.

저를 계몽하십시오. 감사합니다.

+0

올바르게 이해하면 https://developers.google.com/appengine/docs/java/backends/overview#Startup에 따라/_ah/start를 호출 할 수 없습니다. 백엔드 인스턴스가 첫 번째 요청 (동적 백엔드)을받을 때 앱 엔진에 의해 호출됩니다. –

답변

2

SDK가 항상 프로덕션 환경을 정확하게 반영하는 것은 아닙니다. 백엔드를 시작하고 종료하는 것이 그 중 하나 일 수 있습니다.

프로덕션 환경에서 백엔드가 예상대로 작동하는 경우 SDK의 경우 file a bug을 입력하십시오.

+0

하하 OK, 그 경우라고 가정합니다. 감사합니다. Nick! – Poni

관련 문제