Is Remote Logging in Phonegap Container possible?

59 views
Skip to first unread message

confile

unread,
Apr 3, 2014, 1:25:13 PM4/3/14
to gwt...@googlegroups.com
I use gwt-log with remote logging which works fine. My app is also running in a PhoneGap container. 

My web.xml configuration is the following: 

<inherits name="com.allen_sauer.gwt.log.gwt-log-TRACE" />
<inherits name="com.allen_sauer.gwt.log.gwt-log-RemoteLogger" />
  <set-property name="log_DivLogger" value="DISABLED" />
  <set-property name="log_FirebugLogger" value="DISABLED" />

<set-property name="compiler.emulatedStack" value="true" />
  <set-configuration-property name="compiler.emulatedStack.recordLineNumbers" value="true"/>
  <set-configuration-property name="compiler.emulatedStack.recordFileNames" value="true"/>


Remote logging works fine when using my app in web browser but when I switch it to a phonegap container do not se the method names. I tried: 

 Log.fatal("This is what an exception might look like", new RuntimeException("2 + 2 = 5"));


The Console output is: 


2014-04-03 19:20:41.202 Test[29194:907] ERROR: (-:-) 2014-04-03 19:20:41,193 [FATAL] This is what an exception might look like

java.lang.RuntimeException: 2 + 2 = 5

   at Unknown._Jb(StackTraceCreator.java:180)

   at Unknown.ixb(StackTraceCreator.java:518)

   at Unknown.gxb(Throwable.java:56)

   at Unknown.Bzb(Exception.java:29)

   at Unknown.Ezb(RuntimeException.java:29)

   at Unknown.Cc(Mobile.java:81)

   at Unknown.Fc(Mobile.java:32)

   at Unknown.FJb(SchedulerImpl.java:180)

   at Unknown.wJb(SchedulerImpl.java:345)

   at Unknown.JJb(SchedulerImpl.java:78)

   at Unknown.DJb(SchedulerImpl.java:138)

   at Unknown.TIb(Impl.java:290)

   at Unknown.XIb(Impl.java:347)

   at Unknown.anonymous(Impl.java:93)

   at Unknown.anonymous(UnloadSupport.java:42)



Somehow stacktrace deobfuscation does not run correctly. 


Does anyone has an idea how to fix it?

 


Fred Sauer

unread,
Apr 3, 2014, 2:00:17 PM4/3/14
to gwt...@googlegroups.com
Have you enabled the deobfuscation servlet?




--
You received this message because you are subscribed to the Google Groups "gwt-log" group.
To unsubscribe from this group and stop receiving emails from it, send an email to gwt-log+u...@googlegroups.com.
To post to this group, send email to gwt...@googlegroups.com.
Visit this group at http://groups.google.com/group/gwt-log.
For more options, visit https://groups.google.com/d/optout.



--
Fred Sauer
fre...@gmail.com

confile

unread,
Apr 3, 2014, 2:02:04 PM4/3/14
to gwt...@googlegroups.com
AS I wrote it works perfect on desktop browsers. So of course I enabled it.

Other ideas?

Fred Sauer

unread,
Apr 3, 2014, 2:25:37 PM4/3/14
to gwt...@googlegroups.com
The client makes XMLHTTPRequests to the the server to deobfuscate the messages. In the browser case the domain name ('origin' actually) of the servlet needs to be the same as where the JavaScript came from, or you need to use CORS.

Not sure what the requirements are in the PhoneGap case. Are XHRs allowed? Do you have to whitelist the origin? Can you log the XHRs and see if they make it through?

confile

unread,
Apr 3, 2014, 2:26:45 PM4/3/14
to gwt...@googlegroups.com
I used this configuration:

<set-configuration-property name="log_url" value="http://192.168.178.26:8080/mobilePhoneGapIOS/gwt-log" />

and I get the following error. Any idea how to solve it?


  [WARN] GWT-Log-remote-logger-Servlet: An IncompatibleRemoteServiceException was thrown while processing this call.
com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: Type 'com.allen_sauer.gwt.log.shared.LogRecord' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer. For security purposes, this type will not be deserialized.
at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:323)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:263)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:305)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:68)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:722)
Caused by: com.google.gwt.user.client.rpc.SerializationException: Type 'com.allen_sauer.gwt.log.shared.LogRecord' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer. For security purposes, this type will not be deserialized.
at com.google.gwt.user.server.rpc.impl.LegacySerializationPolicy.validateDeserialize(LegacySerializationPolicy.java:127)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:676)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:592)
at com.google.gwt.user.server.rpc.core.java.util.Collection_ServerCustomFieldSerializerBase.deserialize(Collection_ServerCustomFieldSerializerBase.java:38)
at com.google.gwt.user.server.rpc.core.java.util.ArrayList_ServerCustomFieldSerializer.deserialize(ArrayList_ServerCustomFieldSerializer.java:40)
at com.google.gwt.user.server.rpc.core.java.util.ArrayList_ServerCustomFieldSerializer.deserializeInstance(ArrayList_ServerCustomFieldSerializer.java:54)
at com.google.gwt.user.server.rpc.core.java.util.ArrayList_ServerCustomFieldSerializer.deserializeInstance(ArrayList_ServerCustomFieldSerializer.java:33)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeImpl(ServerSerializationStreamReader.java:884)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:687)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:592)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader$ValueReader$8.readValue(ServerSerializationStreamReader.java:149)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue(ServerSerializationStreamReader.java:434)
at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:312)
... 30 more



Am Donnerstag, 3. April 2014 20:00:17 UTC+2 schrieb Fred Sauer:

confile

unread,
Apr 3, 2014, 2:30:59 PM4/3/14
to gwt...@googlegroups.com
As you can see I can reach the server from my client but the server does not show the correct log.

confile

unread,
Apr 3, 2014, 2:34:11 PM4/3/14
to gwt...@googlegroups.com
The response on the device contains this: 

//EX[2,1,["com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException/3936916533","Type \x27com.allen_sauer.gwt.log.shared.LogRecord\x27 was not assignable to \x27com.google.gwt.user.client.rpc.IsSerializable\x27 and did not have a custom field serializer. For security purposes, this type will not be deserialized."],0,7]


Note that I use the following as log message which works fine on desktop browsers: 

Log.fatal("This is what an exception might look like", new RuntimeException("2 + 3 = 4"));

confile

unread,
Apr 3, 2014, 2:39:26 PM4/3/14
to gwt...@googlegroups.com
I also tried: 

<init-param>

<param-name>Access-Control-Allow-Origin</param-name>

<param-value>*</param-value>

</init-param> 



the same result as above.

Fred Sauer

unread,
Apr 4, 2014, 2:37:44 PM4/4/14
to gwt...@googlegroups.com
How does this jar work?

gwt-log-e342e83b59370d22c24f230df2dad4474821ab42.jar
Reply all
Reply to author
Forward
0 new messages