我正在尝试使用gwteventservice将数据从我的服务推送到浏览器,但是我无法通过其他服务从 MyServiceImpl.java 执行此操作。 这是一个情节:我有服务 DifferentService.java 从客户端读取数据。然后我有 MyServiceImpl.java 类,它代表 MyService.java (clasic gwt项目结构)的服务器端。最后我有类 CallEvent.java ,它使用 addEvent 方法将数据发送到监听器(gwteventservice stuff)。当我在 MyServiceImpl.java 中实例化 CallEvent 类并调用正确的方法( addEvent )时,会成功将消息传递给侦听器。当我从 DifferentService.java 类调用相同的代码时,没有任何事情发生(没有消息传递给侦听器)。 我认为这是一种经典情况,需要使用gwteventservice将数据从某个数据提供者发送到客户端。 你能帮我找个问题吗?您在这种情况下使用哪种解决方案或方法? 以下是用于数据传递的代码片段。
MsgEvent.java(代表携带数据的消息 - gwteventstuff)
public class MsgEvent implements Event {
public static final Domain SERVER_MESSAGE_DOMAIN = DomainFactory.getDomain("my_domain");
public String message;
public MsgEvent(){}
public MsgEvent(String message) {
this.setMessage(message);
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
CallEvent.java(gwteventstuff)
public class CallEvent extends RemoteEventServiceServlet{
public void SendData(String data){
//create the event
Event theEvent = new MsgEvent("DagaMsg");
//add the event, so clients can receive it
addEvent(MsgEvent.SERVER_MESSAGE_DOMAIN, theEvent);
}
}
DifferentService.java
public class DifferentService{
...
//Reading string data from client
CallEvent ce = new CallEvent();
ce.SendData(stringData); //this code delivers nothing to a listener
...
}
MyServiceImpl.java(gwt stuff)
public class MyServiceImpl extends RemoteEventServiceServlet implements MyService {
public void sendMessage(String message) {
CallEvent ce = new CallEvent();
ce.SendData("Data"); //this code deliver message succesfully to a listener
}
}
web.xml(gwt和gwteventservice stuff)
<web-app>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>My.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>MyService</servlet-name>
<servlet-class>cz.pohanka.my.server.MyServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyService</servlet-name>
<url-pattern>/cz.pohanka.my.My/MyService</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>EventService</servlet-name>
<servlet-class>de.novanic.eventservice.service.EventServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>EventService</servlet-name>
<url-pattern>/cz.pohanka.my.My/gwteventservice</url-pattern>
</servlet-mapping>
</web-app>
我希望我把一切都包括在内。 我认为问题可能在web.xml中。 你怎么看。 谢谢。
的Pavel
答案 0 :(得分:0)
我知道这个问题是几个月前被问到的,但也许它可以帮助别人......
在DifferentService
中,您无法使用new CallEvent()
创建用于发送活动的servlet ...
相反,请使用以下内容:
EventExecutorServiceFactory pushServiceFactory = EventExecutorServiceFactory.getInstance();
EventExecutorService pushService = pushServiceFactory.getEventExecutorService( /* param */);
pushService.addEvent(...);
将param
替换为HttpServletRequest
或客户端ID。