2017-06-20 48 views
0

我已经完成了一些使用GWT-RPC从客户端启动的冗长方法。 DoSomething的()GWT从服务器端调用RemoteServiceServlet方法

假设下列类别:(从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(); 

的问题(空指针异常),只要它遇到第一个DoSomething的一些调用getServletConfig()线()getServletContext()方法,因为它返回null。

另外,MyClassServiceImpl init()方法,我已经覆盖,所以它从web.xml中读取一些参数,也不会被调用。

Thx提前!

+0

https://stackoverflow.com/questions/32741692/how-to-call-one-servlet-to-another- servlet-in-gwt-using-java – Spiff

+0

对不起,我没有在那里看到答案。客户端/前端不涉及我的问题 – jpp1jpp1

回答

0

未进行具体GWT有关,但:

1)将初始化参数超出web.xml。这是一个糟糕的机制,不应该在servlet规范中。如果您构建一个war文件,这意味着每次参数更改时都必须重新生成war文件。如果你需要开发,接受和产品的不同参数,这意味着三个单独的战争文件。而是在文件系统上放置一个属性文件。使用额外的Java参数启动Web容器,为设置自定义属性设置一个值,例如-Dmyapp.conf=d:\\conf\\apps\\myapp.conf

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

3)从你的servlet GWT,您的调度等使用类...

相关问题