Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用自定义处理程序进行GWT远程日志记录_Java_.net_Gwt - Fatal编程技术网

Java 使用自定义处理程序进行GWT远程日志记录

Java 使用自定义处理程序进行GWT远程日志记录,java,.net,gwt,Java,.net,Gwt,我正在编写一个GWT客户端,它使用REST/Json与IIS上运行的.NET服务进行通信 我有在Java servlet和普通RPC中使用GWT的经验,我知道可以通过指定 在.gwt.xml模块文件中。并在web.xml文件中配置servlet 我知道这个SimpleRemoteHandler使用GWT/RPC进行通信。 现在我的问题是,我是否可以编写自己的RemoteHandler来在服务器上存储消息,而不是使用GWT/RPC,而是使用RequestBuilder编写REST/JSON 关

我正在编写一个GWT客户端,它使用REST/Json与IIS上运行的.NET服务进行通信

我有在Java servlet和普通RPC中使用GWT的经验,我知道可以通过指定


在.gwt.xml模块文件中。并在web.xml文件中配置servlet

我知道这个SimpleRemoteHandler使用GWT/RPC进行通信。 现在我的问题是,我是否可以编写自己的RemoteHandler来在服务器上存储消息,而不是使用GWT/RPC,而是使用RequestBuilder编写REST/JSON


关于如何使用普通Java Servlet或PHP页面执行此操作的入门指南,对于了解如何在.NET中开发此服务也会有很大帮助。

是的,您可以使用RequestBuilder在GWT中使用Rest服务

在.Net中创建Rest服务,并在GWT应用程序中使用它

参考资料:


应遵循的步骤:

  • 移除simpleRemoteHandler

  • 收集要记录的事件

  • 使用日志调用Rest服务

    示例方法

    2.1。为事件创建一个超级类,并让所有事件扩展该类

    2.2。如果在调用gwt的fireEvent之前触发了事件,请在映射中记录日志信息

    2.3。一旦映射达到所需的计数,比如20个事件,就会触发对在.NET中编写的API的rest调用(使用gwt中的RequestBuilder调用服务)

    您可以有一个按所需时间间隔运行的计划程序

    2.4。清除地图


  • 诀窍如下:

    只需创建一个扩展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
       }
    }
    
    然后,您必须在module.gwt.xml中配置此loghandler,如下所示:

    <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>
    
    
    
    我知道这一切。我想知道如何使用与GWT一起提供的simpleRemoteHandler之外的另一个系统将日志发送到服务器。这是因为simpleRemoteHandler针对java servlet工作,而我没有servlet容器。以json格式捕获您的日志,并使用这些日志点击.Net中的rest服务,这有帮助吗?我已经用其他步骤更新了答案,希望它有帮助。我想我必须深入挖掘simpleRemoteHandler的源代码,看看它是如何工作的。我真正想知道的是,这个SimpleRemoteHandler如何处理这样一个事实,即如果您执行java.util.Logger.log(),它将被发送到服务器。