【问题标题】:gae - is it possible to divide the appgae - 是否可以划分应用程序
【发布时间】:2011-09-22 18:42:27
【问题描述】:

gae上的app可以这样设计吗 - 管理部分 - gwt,guice - 用户部分 - guice、html、js

出于性能原因,它们应该是独立的。据我所知,该应用程序可以在每个请求时启动,因此没有理由每次都启动并将管理部分加载到内存中。 正如我所读到的,无法在 2 个应用程序之间共享数据存储。也许 guice 支持这种情况?

编辑

对不起,我再试一次

  1. 发现每次http请求都可以重启app。即使对于同一个用户和同一个会话
  2. 启动应用需要几秒钟的宝贵时间
  3. 应用程序的一部分很少使用,它会用 gwt 编写,会比较重并且仅供管理员使用 我认为我可以在这里节省一些时间——关于 guice 注入、类初始化等。但也许我错了所有资源 按需创建,没有问题。 我只是还不知道 guice 和 gwt

【问题讨论】:

  • 出于性能原因,它们为什么要独立?

标签: java google-app-engine guice share datastore


【解决方案1】:

我认为您在谈论 bean 的惰性创建。默认情况下是这样(除非您使用 toInstance 绑定):

package com.sopovs.moradanen;

import javax.inject.Singleton;

import com.google.inject.Guice;
import com.google.inject.Injector;

public class Main {
public static void main(String[] args) {
    System.out.println("Creating injector");
    Injector injector = Guice.createInjector();
    System.out.println("Injector created");
    System.out.println("Getting instance of Foo");
    injector.getInstance(Foo.class);
    System.out.println("Got instance of Foo");

    System.out.println("Getting instance of Bar");
    injector.getInstance(Bar.class);
    System.out.println("Got instance of Bar");

    System.out.println("Getting another instance of Foo");
    injector.getInstance(Foo.class);
    System.out.println("Got another instance of Foor");
}

@Singleton
public static class Foo {

    public Foo() {
        System.out.println("Foo Created");
    }
}

@Singleton
public static class Bar {

    public Bar() {
        System.out.println("Bar Created");
    }
}
}

输出是:

Creating injector
Injector created
Getting instance of Foo
Foo Created
Got instance of Foo
Getting instance of Bar
Bar Created
Got instance of Bar
Getting another instance of Foo
Got another instance of Foor

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多