GWT从服务器端调用RemoteServiceServlet方法

时间:2017-06-20 12:13:16

标签: java gwt gwt-rpc

我已经完成了使用GWT-RPC从客户端启动的一些冗长方法。 doSomething的()

假设以下类:(从GWT: invoke the same RPC-methods on the server-side as on the client-side复制)

//MyClassService.java - client package
@RemoteServiceRelativePath("myService")
public interface MyClassService extends RemoteService{
   public doSomething();
}

//MyClassServiceAsync.java - client package
public interface MyClassServiceAsync{
   public void doSomething(AsyncCallback<Void> callback);
}

//MyClassServiceImpl.java - server package
public class MyClassServiceImpl extends RemoteServiceServlet implements MyClassService{
   @Override
   public void doSomething()
   {
      //interacts with DB and another stuff
   }
}

现在我希望从我的ScheduledTask基础架构中启动相同的方法,但我不知道这是否可行。 ScheduledTask基础结构位于服务器端。我几乎没有使用任何语言的网络方面而且我迷路了。到目前为止,我已经尝试过:

    MyClassServiceImpl a = new MyClassServiceImpl();
    a.doSomething();

问题出现(NullPointerException),只要它遇到第一个doSomething()行,并调用getServletConfig()。getServletContext(),因为它返回null。

另外,我已经覆盖了MyClassServiceImpl init()方法,因此它从web.xml中读取了一些参数,也没有被调用。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

与GWT无关,但是:

1)将初始化参数移出web.xml。这是一个糟糕的机制,应该永远不会出现在servlet规范中。如果您构建war文件,则意味着每次参数更改时都必须重建war文件。如果您需要dev,acceptance和prod的不同参数,这意味着三个单独的war文件。而是将属性文件放在文件系统的某个位置。使用额外的Java参数启动Web容器,为自定义属性设置值,例如-Dmyapp.conf=d:\\conf\\apps\\myapp.conf

2)现在您已将参数移出web.xml,您可以编写一个独立的类,从系统定义的参数文件(System.getProperty("myapp.conf"))初始化自己,不依赖于任何与servlet相关的内容。 / p>

3)使用GWT servlet,调度程序等中的类......