如何进行GWT服务器调用(GWT RPC?)

时间:2013-03-30 09:41:44

标签: java gwt web-applications rpc

您好我是gwt(java based gui)的新手。 我在这里尝试拨打GWT服务器。

我想将MyBean保存到我的Database

稍后我必须update,delete etc..

有什么可能性,我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

使用GWT(例如RequestFactoryRPC)可以通过数据库访问数据库。

在开始使用服务器电话之前,请仔细阅读,

  • GWT RPC使服务器异步调用

  • RequestFactory用于创建面向数据的GWT-RPC的替代方案 服务。

通过这里的链接后是Example of How to make an RPC

进入MyBean CRUD操作,简称RPC结构,如下所示:

GWT Code <===> InterfaceAsync <===> Interface (Synchronous)<===> Server Code 

我试图用你自己的元素来解释。

同步接口(整个RPC的核心):

import com.google.gwt.user.client.rpc.RemoteService;
public interface BeanProcessRPCInterface extends RemoteService
{
    public Mybean processMybeanRPC(Mybean  bean);
}

ASynchronous接口(客户端的关键部分):

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface BeanProcessRPCInterfaceAsync
{
    public void processMybeanRPC (Mybean bean, AsyncCallback callback);
}

在这里,您将使用 Service(等于servlet)来实现“BeanProcessRPCInterface”

public class BeanProcessRPCImpl extends 
                   RemoteServiceServlet implements BeanProcessRPCInterface
{
    private static final long serialVersionUID = 1L;

    public Mybean processMybeanRPC(Mybean  bean)
    {
       //Process your widget  here (CRUD operations)

    }

**you can override doget,doPost,doDelete....etc along with your methods 
}

在web.xml中映射上述类;

     <servlet>
    <servlet-name>beanrpc</servlet-name>
    <servlet-class>com.server.BeanProcessRPCImpl</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>beanrpc</servlet-name>
    <url-pattern>/beanrpc</url-pattern>
  </servlet-mapping>

最后在您的GWT代码中。使用以下服务

在代码中使用

//注册服务。

   private final BeanProcessRPCInterfaceAsync beanService = 
        GWT.create(BeanProcessRPCInterface.class);
        ServiceDefTarget endpoint = (ServiceDefTarget) service;
        endpoint.setServiceEntryPoint('beanrpc');

使用回调请求服务器

beanService.processMybeanRPC(mybean, callback);
 AsyncCallback callback = new AsyncCallback()
    {
        public void onFailure(Throwable caught)
        {
           //Do on fail
        }

        public void onSuccess(Object result)
        {
           //Process successfully done with result (result is which you
           // returned in impl class) .
        }
    };

P.S。软件包结构:

BeanProcessRPCInterfaceAsync,BeanProcessRPCInterface 应该在client * package中

MyBean 类应该位于shared * package

BeanProcessRPCImpl 应该在server * package

祝你好运。