2015-10-01 210 views
1

我正在編寫一個GWT客戶端,它使用REST/Json與運行在IIS上的.NET服務進行通信。與自定義處理程序的GWT遠程日誌記錄

我使用GWT使用Java servlet和正常RPC經驗,我知道這是可以通過在.gwt.xml模塊文件中指定

<set-property name="gwt.logging.simpleRemoteHandler" value="ENABLED" /> 

到Logger.log輸出發送到遠程Java服務器。並通過在web.xml文件中配置servlet。

我知道這個SimpleRemoteHandler使用GWT/RPC進行通信。 現在我的問題是,我可以編寫我自己的RemoteHandler用於在服務器上存儲消息,它不使用GWT/RPC,而是使用RequestBuilder只使用REST/JSON?

有關如何使用普通的Java Servlet或PHP頁面進行操作的入門指南,也應該是一個很大的幫助,以瞭解我需要在.NET中開發這種方法。

回答

0

是的,你可以使用RequestBuilder在GWT中使用Rest服務。

在.Net中創建您的Rest服務並在GWT應用程序中使用它。

參考文獻: http://www.asp.net/web-api/overview/older-versions/build-restful-apis-with-aspnet-web-api

http://www.codeproject.com/Articles/255684/Create-and-Consume-RESTFul-Service-in-NET-Framewor


步驟應遵循:

  1. 取出simpleRemoteHandler

  2. 收集的事件爲L ogged

  3. 與日誌

    樣本方法

    2.1調用REST服務。創建活動的超級課程並讓所有活動擴展此課程

    2.2。如果在調用gwt的fireEvent之前觸發事件,請記下地圖中的日誌信息。012。一旦地圖達到預期的數量,比如說20個事件,觸發您休息的呼叫,您已經寫在.NET(使用RequestBuilder GWT中調用該服務)

    你可以有一個調度程序的API其在期望的時間間隔上運行

    2.4。清除地圖。

+0

我知道這一切。 我想知道如何使用GWT提供的simpleRemoteHandler以外的系統將我的日誌發送到服務器。 這是因爲simpleRemoteHandler針對java servlet工作,而我沒有servlet容器。 – Knarf

+0

以json格式捕獲您的日誌,並在日誌中打開.Net中的其他服務,這有幫助嗎? –

+0

我已經用更多的步驟更新了答案,希望它有幫助 –

1

訣竅如下:

只需創建一個擴展RemoteLogHandlerBase一類和你想在你需要重載發佈方法做的東西。

package be.gps.gwt.client.log; 

import java.util.logging.LogRecord; 

import com.google.gwt.logging.client.RemoteLogHandlerBase; 
import com.google.gwt.user.client.Window; 

public class JsonRemoteLogHandler extends RemoteLogHandlerBase 
{ 
    // ============================================================================================= 
    /** 
    * Constructor. 
    */ 
    public JsonRemoteLogHandler() 
    { 

    } 

    // ============================================================================================= 
    @Override 
    public void publish(LogRecord logRecord) 
    { 
     Window.alert("publish " + logRecord.getMessage()); 

     //TODO send to server 
    } 
} 

然後你必須配置該loghandler您的模塊中.gwt.xml喜歡:

<replace-with class="be.gps.gwt.client.log.JsonRemoteLogHandler"> 
    <when-type-is class="com.google.gwt.logging.client.SimpleRemoteLogHandler" /> 
    <any> 
     <when-property-is name="gwt.logging.enabled" value="TRUE" /> 
     <when-property-is name="gwt.logging.simpleRemoteHandler" value="ENABLED" /> 
    </any> 
</replace-with> 
相關問題