Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RESTLET GAE ECLIPSE初始化方法_Eclipse_Google App Engine_Initialization_Restlet_Init - Fatal编程技术网

RESTLET GAE ECLIPSE初始化方法

RESTLET GAE ECLIPSE初始化方法,eclipse,google-app-engine,initialization,restlet,init,Eclipse,Google App Engine,Initialization,Restlet,Init,我正在用Restlet、GAE和Eclipse开发一个应用程序。好的,我知道了: 公共类MainRestleApplication扩展了应用程序{ public MainRestletApplication() { //init code? } @Override public Restlet createInboundRoot() { Router router = new Router(getContext()); router.attach("/v1/mainsta

我正在用Restlet、GAE和Eclipse开发一个应用程序。好的,我知道了:

公共类MainRestleApplication扩展了应用程序{

public MainRestletApplication()
{
//init code?
} 


@Override
public Restlet createInboundRoot() {
    Router router = new Router(getContext());

    router.attach("/v1/mainstatus",MainStatus.class);
    router.attach("/v1/game/{id}/result",GameResult.class);

    return router;
}
}

这是:

<servlet>
    <servlet-name>RestletServlet</servlet-name>
    <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
    <init-param>
        <param-name>org.restlet.application</param-name>
        <param-value>com.example.MainRestletApplication
        </param-value>
    </init-param>
</servlet>

<!-- Catch all requests -->
<servlet-mapping>
    <servlet-name>RestletServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

RestletServlet
org.restlet.ext.servlet.ServerServlet
org.restlet.application
com.example.mainRestleApplication
RestletServlet
/*

那么,我可以在哪里放置一个初始化Web服务的方法,因此,一些代码只在应用程序启动时(一次)初始化一些数据,而不是在第一次调用到来时


谢谢

无论您是否使用Restlet,是否使用AppEngine,您都可以在web.xml中的任何servlet环境中设置上下文侦听器,如下所示:

<listener>
    <listener-class>
        example.ServletContextExample
    </listener-class>
</listener>
启动GAE上的实例时,将在处理调用之前执行init代码;另一方面,新实例很可能已启动,因为必须处理调用。鸡和蛋的故事…

为此,您可以重写com.example.mainRestleApplication类的start()方法。它的生命周期与包装器RestletServlet同步

public class ServletContextExample implements ServletContextListener{
    ServletContext context;
    public void contextInitialized(ServletContextEvent contextEvent) {
        System.out.println("Context Created");
        context = contextEvent.getServletContext();
        // set variable to servlet context
        context.setAttribute("TEST", "TEST_VALUE");
    }
    public void contextDestroyed(ServletContextEvent contextEvent) {
        context = contextEvent.getServletContext();
        System.out.println("Context Destroyed");
    }
}