我有以下Java Servlet,执行我所谓的“ 附加服务”:
public class AdditionService extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) {
// The request will have 2 Integers inside its body that need to be
// added together and returned in the response.
Integer addend = extractAddendFromRequest(request);
Integer augend = extractAugendFromRequest(request);
Integer sum = addend + augend;
PrintWriter writer = response.getWriter();
writer.write(sum);
}
}
[我试图让GWT的RequestFactory使用ValueProxy
和AdditionService
执行相同的操作(在应用服务器上添加两个数字并返回总和作为响应,并且遇到了一些问题。
这里是AdditionRequest
(客户端层),它是一个值对象,其中包含要添加的两个Integer:
// Please note the "tier" (client, shared, server) I have placed all of my Java classes in
// as you read through the code.
public class com.myapp.client.AdditionRequest {
private Integer addend;
private Integer augend;
public AdditionRequest() {
super();
this.addend = 0;
this.augend = 0;
}
// Getters & setters for addend/augend.
}
下一个我的代理(客户端层):
@ProxyFor(value=AdditionRequest.class)
public interface com.myapp.client.AdditionRequestProxy extends ValueProxy {
public Integer getAddend();
public Integer getAugend();
public void setAddend(Integer a);
public void setAugend(Integer a);
}
下一个我的服务API(在共享层中:)>
@Service(value=DefaultAdditionService.class) public interface com.myapp.shared.AdditionService extends RequestContext { Request<Integer> sum(AdditionRequest request); }
下一个我的请求工厂(共享层):
public class com.myapp.shared.ServiceProvider implements RequestFactory { public AdditionService getAdditionService() { return new DefaultAdditionService(); } // ... but since I'm implementing RequestFactory, there's about a dozen // other methods GWT is forcing me to implement: find, getEventBus, fire, etc. // Do I really need to implement all these? }
最后发生魔术的地方(服务器层):
public class com.myapp.server.DefaultAdditionService implements AdditionService { @Override public Request<Integer> sum(AdditionRequest request) { Integer sum = request.getAddend() + request.getAugend(); return sum; } // And because AdditionService extends RequestContext there's another bunch of // methods GWT is forcing me to implement here: append, create, isChanged, etc. // Do I really need to implement all these? }
这是我的问题:
AdditionService
引用了服务器上不应执行的DefaultAdditionService
。共享类型应该能够同时存在于客户端和服务器上,但都不依赖于任何一个...ServiceProvider
应该是实现RequestFactory
的类,还是应该是extendsServiceProvider
impl,以及如何将其链接回所有其他这些类?ServiceProvider
和DefaultAdditionService
中的所有这些方法呢?我是否需要实现所有20种以上这些核心GWT方法?还是我使用API的方式不正确或不是像使用它时那样简单?[我有以下Java Servlet,执行我称为“附加服务”的步骤:公共类AdditionService扩展了HttpServlet {@Override public void doGet(HttpServletRequest request,...
[如果您想将RF用作简单的RPC机制[*],则可以(正确的是:仅ValueProxy
s),但是您还需要更多的内容:ServiceLocator
s(即GWT 2.1.1)。