2012-09-06 31 views
0

我試圖用gwteventservice將我的服務中的數據推送到瀏覽器,但我無法通過不同的服務從MyServiceImpl.java。 這裏是情況:我有服務DifferentService.java從客戶端讀取數據。然後我有MyServiceImpl.java,它代表服務器端MyService.java(clasic gwt項目結構)。最後,我有類CallEvent.java它使用addEvent方法發送數據給一個監聽器(gwteventservice的東西)。當我在MyServiceImpl.java中實例化CallEvent類並調用正確的方法(addEvent)時,消息被成功傳遞給偵聽器。當我從調用相同的代碼DifferentService.java class nothing happend(沒有消息傳遞給偵聽器)。 我認爲這是一個經典的情況,當數據需要從某個數據提供者發送到使用gwteventservice的客戶端。 你能幫我找到問題嗎?你在這種情況下使用哪種解決方案或方法? 以下是我用於數據傳輸的代碼片段。爲不同服務提供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東西)

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中。 您怎麼看。 謝謝。

帕維爾

回答

0

我知道這個問題幾個月前有人問,但也許它可以幫助別人......

在你DifferentService,你不能創建一個servlet與new CallEvent()發送您的事件。 ..

相反,使用類似:

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

或者由01替換或客戶端ID。

相關問題