0

gwteventservice を使用してサービスからブラウザにデータをプッシュしようとしていますが、 MyServiceImpl.javaとは別のサービスからプッシュできません。状況は次のとおりです。クライアントからデータを読み取るサービスDifferentService.javaがあります。次に、 MyService.javaのサーバー側 (従来の gwt プロジェクト構造) を表すクラスMyServiceImpl.javaがあります。最後に、addEventメソッドを使用してデータをリスナー (gwteventservice のもの) に送信するクラスCallEvent.javaがあります。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 のもの)

 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 にあると思います。どう思いますか。ありがとうございました。

パベル

4

1 に答える 1

0

質問が数か月前に行われたことは知っていますが、誰かの助けになるかもしれません...

では、イベントを送信するDifferentServiceためのサーブレットを作成できません...new CallEvent()

代わりに、次のようなものを使用します。

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

または クライアント IDに置き換えparamます。HttpServletRequest

于 2012-12-05T12:52:29.777 に答える