【问题标题】:Provide data for gwteventservice from different service为不同服务的 gwteventservice 提供数据
【发布时间】:2012-08-31 12:39:16
【问题描述】:

我正在尝试使用 gwteventservice 将数据从我的服务推送到浏览器,但我无法通过与 MyServiceImpl.java 不同的服务来执行此操作。 情况如下:我有服务 DifferentService.java 从客户端读取数据。然后我有类 MyServiceImpl.java,它代表 MyService.java 的服务器端(经典 gwt 项目结构)。最后,我有一个类 CallEvent.java ,它使用 addEvent 方法将数据发送到侦听器(gwteventservice 的东西)。当我在 MyServiceImpl.java 中实例化一个 CallEvent 类并调用正确的方法 (addEvent) 时,一条消息已成功传递给侦听器。当我从 DifferentService.java 类调用相同的代码时,什么也没发生(没有消息传递给侦听器)。 我认为这是一个典型的情况,当数据需要从某个数据提供者发送到使用 gwteventservice 的客户端时。 你能帮我找出问题吗?在这种情况下,您使用哪种解决方案或方法? 这是我用于数据传递的代码 sn-ps。

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);
}
}

不同服务.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 的东西)

 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 的东西)

<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 中。 你觉得怎么样。 谢谢。

帕维尔

【问题讨论】:

    标签: web-services gwt comet server-push gwt-eventservice


    【解决方案1】:

    我知道这个问题是几个月前提出的,但也许它可以帮助某人......

    在您的DifferentService 中,您无法使用new CallEvent() 创建一个servlet 来发送您的事件...

    相反,使用类似的东西:

    EventExecutorServiceFactory pushServiceFactory = EventExecutorServiceFactory.getInstance();
    EventExecutorService pushService = pushServiceFactory.getEventExecutorService( /* param */);
    pushService.addEvent(...);
    

    param 替换为HttpServletRequest 或客户端ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 2021-10-12
      相关资源
      最近更新 更多