我已经完成了使用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中读取了一些参数,也没有被调用。
提前谢谢!答案 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,调度程序等中的类......