我的GWT应用程序加载时首先要做的是通过RequestFactory从服务器请求当前登录用户.这会阻止,因为我需要用户的属性才能知道如何继续.这只需要<500毫秒,但在此期间应用程序被阻止真的让我感到很恼火.生成jsp时,我已经在服务器上安装了User,那么为什么不将序列化的User添加到jsp中并完全消除这个请求呢?
我有两个问题阻止我这样做:
我还没有找到一个做好#1的好方法.这个逻辑似乎埋没在ServiceLayerDecorator中,没有一种简单的方法可以隔离?我可能在这里错了.
第二个似乎通过ProxySerializer更容易但是当我在服务器上时如何获得requestfactory?你不能GWT.create在服务器上打电话.
我一直在研究AutoBeans,但这并没有处理上面的#1.我的UserProxy引用了我想要维护的其他EntityProxy的集合.
我用GWT 2.5 RequestFactory,假设在服务器端,我有A,B,C,D4个实体,在客户端侧,我有AProxy,BProxy,CProxy,DProxy对应于服务器端实体.
B,C延伸A.在D实体中,我有一个方法:
A getEntity();
Run Code Online (Sandbox Code Playgroud)
这将实际返回B或C在客户端,在DProxy,我有:
AProxy getEntity();
Run Code Online (Sandbox Code Playgroud)
我的问题是在客户端,当我得到时,我AProxy可以将它投射到BProxy或CProxy,如果没有,有没有办法获得实际的实体代理?
PS在DProxy,我有 @ExtraTypes({BProxy,CProxy})
RequestFactory可以处理复合主键吗?
该文件提到,实体必须实现getId(); 如果实体没有单个"id"字段,而是有多个外键字段一起构成复合主键,那么应该如何实现呢?
在Google的RequestFactory教程中,他们建议将我的持久性逻辑(在我的例子中,Hibernate)放在Entity类中.然后他们提出了一个问题:"如果你不想在实体本身实现持久性代码怎么办?" 并继续解释另一种方法.
我的问题:哪个更好,将持久性逻辑放在Entity类中,或者将所有持久性逻辑保存在一个单独的类中?
任何信息表示赞赏,谢谢.
-tjw
我正在使用gwt-maven-plugin来管理GWT项目.我一直使用gwt:run目标在"开发模式"下本地运行以进行测试.我现在想要将我的项目编译成战争以在Tomcat上进行部署.gwt:compile但是,当我运行时,我收到编译错误,指出类路径配置问题.一个例子:
Finding entry point classes
[ERROR] Errors in 'shared.MyClass.java'
[ERROR] Line 4: The import server.model.MyObject cannot be resolved
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我是否需要手动将server软件包添加到某个配置文件中?在此先感谢您的任何信息.
-tjw
每次我启动我的应用程序时,即使没有执行 listEmptyBoxes(),我也会收到“RequestFactory Validation Tool must be run...”错误。我已经有了requestfactory-apt-2.5.0-rc1.jar关于注释处理的文件。
有任何想法吗?在我的代码下面。谢谢。
我的项目.java
private void listEmptyBoxes() {
BoxRequest boxRequest = requestFactory.boxRequest();
boxRequest.listAllEmpty().fire(new Receiver<List<BoxProxy>>() {
public void onSuccess(List<BoxProxy> response) { // List all phantom boxes
Window.alert("Successful");
}
});
}
Run Code Online (Sandbox Code Playgroud)
框请求.java
@Service(value=BoxDao.class, locator=DaoServiceLocator.class)
public interface BoxRequest extends RequestContext {
Request<List<BoxProxy>> listAllEmpty();
}
Run Code Online (Sandbox Code Playgroud)
BoxDao.java
public class BoxDao extends ObjectifyDao<Box>{
public List<Box> listAllEmpty() {
Objectify ofy = ObjectifyService.begin();
Query<Box> q=ofy.query(Box.class).filter("title", null).filter("description", null);
List<Box> results = q.list();
return results;
}
}
Run Code Online (Sandbox Code Playgroud)
错误
04-may-2013 12:29:18 com.google.web.bindery.requestfactory.server.RequestFactoryServlet doPost
GRAVE: …Run Code Online (Sandbox Code Playgroud) 为了得到RequestFactory以持续连接的实体,我需要确保我用同样的EntityManager每个请求.
我根据ThreadLocal实现拼凑了我自己的Factory类,但我不确定如何正确释放资源(例如,如何知道请求已完成并调用close()).
是否有一种简单的方法可以确保在给定的ServletRequest中使用单个EntityManager而无需使用完整的J2EE/CDI?如果必须,我会采取这种方式,但我希望保持简单,特别是因为我想继续使用GWT附带的轻量级开发服务器.
我想产生以下行为:
浏览器中的用户保存了一些实体.在服务器端保存实体后,它会生成通知,并且必须通过具有更新实体实例的Atmosphere通知所有其他客户端.
那么问题是如何通过Atmosphere接口推送POJO实体?最后一个支持Serializable类型通过线传输,而RequestFactory有另一个序列化机制.
所以我需要将POJO实体转换为autobean,因为这是由RF完成并发送给客户端.谁知道怎么做?
04-02 21:45:18.260:E/AndroidRuntime(17850):引起:java.lang.NoClassDefFoundError:com.capstonecontrol.client.ModulesRequestFactory
当我的Android应用程序尝试使用任何请求工厂对象时,我得到的错误.一切都工作,直到我更新了Eclipse的插件,现在我似乎无法得到任何工作.Eclipse给我一个关于我的requestfactory-apt.jar文件的错误,所以我从工厂路径中删除它并再次添加jar并清除了编译错误.但是现在我得到了上面的错误.
我甚至试图创建一个全新的Android链接应用程序引擎项目,只是测试默认的应用程序,我得到相同的错误.任何帮助将不胜感激.谢谢!
我正在使用IDEA 117.216
如果CrazyCoder看到这个问题会很棒:)
你们如何引用另一个模块,以便GWT编译器看到它?
当我说模块时,我指的是IntelliJ IDEA术语中的模块.
这是我的情况.我有中间项目(GAE + GWT + RequestFactory).现在我在我的项目中创建了Android模块.这个想法是它将使用C2DM并通过RequestFactory(RF)与服务器通信.
所以我自然而然地在我的项目中创建了第3个模块并移动了所有RF代理和接口,因此我可以从GWT/GAE模块和Android模块中引用它.
Android模块喜欢它,但GWT编译器不喜欢它.它找不到我移动到"共享"模块的类.给我错误,例如:
[ERROR] Errors in 'file:/C:/work/sideprojects/courierapp/src/com/blah/courierApp/client/admin/AdminPage.java'
[ERROR] Line 77: No source code is available for type com.blah.shared.proxies.OrderProxy; did you forget to inherit a required module?
[ERROR] Line 81: No source code is available for type com.blah.shared.factories.AdminRequestFactory; did you forget to inherit a required module?
Run Code Online (Sandbox Code Playgroud)
我需要注意,SharedClasses模块被添加为GWT模块的依赖项.但GWT仍然不知道它的来源在哪里.
在我看来,这是这个错误.
你是如何解决这个问题的?我真的不想有两个编译步骤:首先用源代码构建共享类jar,然后构建引用jar等的GWT项目......
requestfactory ×10
gwt ×9
java ×4
autobean ×2
android ×1
atmosphere ×1
cdi ×1
dao ×1
eclipse ×1
gwt-compiler ×1
gwt2 ×1
hibernate ×1
jpa ×1
maven ×1
objectify ×1