{"id":163917,"date":"2012-12-25T17:01:03","date_gmt":"2012-12-25T13:01:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=163917"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=163917","title":{"rendered":"<span class=\"post_title\">\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f GWT RPC \u0432 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a\u0430\u043c\u0438 \u0438 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/span>"},"content":{"rendered":"<div class=\"content html_format\"> \t\t\t\u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a\u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043b\u044e\u0431\u044f\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 (\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435) GWT \u043a\u0430\u043a \u0440\u0430\u0437 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0439 \u0440\u043e\u0431\u043e\u0442 \u0441\u043c\u043e\u0433 \u043f\u0440\u043e\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 html \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0430 \u0432 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 GWT \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0443\u0442\u0435\u043c RPC \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<br \/>  \u0414\u043b\u044f \u043e\u0431\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<br \/>  \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043e\u043d\u0443\u0441 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u2014 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0442.\u043a. \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>  \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0442\u0430\u043a\u043e\u0439:  <\/p>\n<ul>\n<li> \u0414\u043b\u044f DTO, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434(\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0443\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 \u0432\u0438\u0434, \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a\u043e\u0432.<br \/> \n<pre><code class=\"java\">public abstract class GWTBootstrapDTO implements IsSerializable {      public abstract String getBootstrap(); } <\/code><\/pre>\n<p>  <\/li>\n<li> \u041f\u0440\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0445\u043e\u0441\u0442-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0443 \u0441 RPC \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f (\u043e \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435) \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.<\/li>\n<li> \u0414\u0430\u043b\u0435\u0435 \u0432 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0442\u0435\u0433 &#038;ltnoscript&#038;gt \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/li>\n<li> \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0430 \u0432\u0441\u0435 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u0437 \u0445\u043e\u0441\u0442-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.<\/li>\n<li> \u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a\u043e\u0432 \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/li>\n<\/ul>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<br \/>  \u0421\u0435\u0440\u0432\u0438\u0441:  <\/p>\n<pre><code class=\"java\">package com.oshift.ui.client.forummanamegemt;  import com.google.gwt.user.client.rpc.RemoteService; import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; import com.oshift.ui.shared.forum.GWTForum; import java.util.ArrayList;  @RemoteServiceRelativePath(&quot;forummanagementservice&quot;) public interface ForumManagementService extends RemoteService {      public ArrayList&lt;GWTForum&gt; getForums(); } <\/code><\/pre>\n<p>  \u0421\u0435\u0440\u0432\u043b\u0435\u0442:  <\/p>\n<pre><code class=\"java\">package com.oshift.ui.server.forummanamegemt;  import com.google.gwt.user.server.rpc.RemoteServiceServlet;  import com.oshift.ui.client.forummanamegemt.ForumManagementService; import com.oshift.ui.shared.forum.GWTForum; import com.oshift.ws.db.forummanagement.Forum; import com.oshift.ws.db.forummanagement.Mapper; import com.oshift.ws.ejb.ForumManagerBean; import java.util.ArrayList; import javax.ejb.EJB; import javax.servlet.ServletException;  public class ForumManagementServiceImpl extends RemoteServiceServlet implements ForumManagementService {      public static ForumManagementServiceImpl instance = null;  \t\/\/\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0435\u0440\u0432\u043b\u0435\u0442     @Override     public void init() throws ServletException {         super.init();         instance = this;     } \t \t\/\/\u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e EJB     @EJB     private ForumManagerBean forumBean;      @Override     public ArrayList&lt;GWTForum&gt; getForums() {         ArrayList&lt;GWTForum&gt; res = new ArrayList&lt;GWTForum&gt;();         for (Forum f : forumBean.getForums()) {             GWTForum toGwt = Mapper.ForumMap.toGwt(f);             res.add(toGwt);         }         return res;     } } <\/code><\/pre>\n<p>  \u041e\u0431\u044a\u0435\u043a\u0442\u044b DTO \u0434\u043b\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438:<br \/>  *\u0412\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0434\u043b\u044f \u0438\u0437\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0431\u044f \u043e\u0442 \u043c\u0443\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 SerializationPolicy, \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 IsSerializable.  <\/p>\n<pre><code class=\"java\">package com.oshift.ui.shared.forum;  import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.user.client.rpc.IsSerializable; import java.util.ArrayList;  public class GWTForum extends GWTBootstrapDTO implements IsSerializable {      public String forumName = &quot;\u043f\u0440\u043e\u0441\u0442\u043e \u0444\u043e\u0440\u0443\u043c&quot;;     public ArrayList&lt;GWTTopic&gt; topics = new ArrayList&lt;GWTTopic&gt;();      public GWTForum() {     }      @Override     public String getBootstrap() {         String res = &quot;Forum name: &quot; + forumName + &quot;&lt;br&gt;&quot;;         for (GWTTopic t : topics) {             res += t.getBootstrap();         } \t\t\/\/\u044d\u0441\u043a\u0435\u0439\u043f, \u043c\u0430\u043b\u043e \u043b\u0438 \u0447\u0442\u043e \u0442\u0430\u043c         SafeHtml fromString = SafeHtmlUtils.fromString(res);         return fromString.asString();     } }  package com.oshift.ui.shared.forum;  import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.user.client.rpc.IsSerializable;  public class GWTTopic extends GWTBootstrapDTO implements IsSerializable {      public String topicName = &quot;&quot;;      @Override     public String getBootstrap() {         String res = &quot;\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043f\u0438\u043a\u0430: &quot; + topicName + &quot;&lt;\/br&gt;&quot;;         SafeHtml fromString = SafeHtmlUtils.fromString(res);         return fromString.asString();     } } <\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430(\u0440\u0430\u0434\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b, \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 jsp):  <\/p>\n<pre><code class=\"html\">&lt;%@page import=&quot;com.google.gwt.safehtml.shared.SafeHtmlUtils&quot;%&gt; &lt;%@page import=&quot;com.oshift.ws.ejb.ForumManagerBean&quot;%&gt; &lt;%@page import=&quot;javax.ejb.EJB&quot;%&gt; &lt;%@page import=&quot;java.lang.reflect.Method&quot;%&gt; &lt;%@page import=&quot;com.oshift.ui.client.forummanamegemt.ForumManagementService&quot;%&gt; &lt;%@page import=&quot;com.google.gwt.user.server.rpc.RPC&quot;%&gt; &lt;%@page import=&quot;java.util.ArrayList&quot;%&gt; &lt;%@page import=&quot;com.oshift.ui.shared.forum.GWTForum&quot;%&gt; &lt;%@page import=&quot;com.oshift.ui.server.forummanamegemt.ForumManagementServiceImpl&quot;%&gt; &lt;%@page contentType=&quot;text\/html&quot; pageEncoding=&quot;UTF-8&quot;%&gt;  &lt;% \t\/\/\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441     ArrayList&lt;GWTForum&gt; forumsList = ForumManagementServiceImpl.instance.getForums(); \t\/\/\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434     Method m = ForumManagementService.class.getMethod(&quot;getForums&quot;); \t\/\/\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0445\u043e\u0441\u0442-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443     String forums = SafeHtmlUtils.fromString(RPC.encodeResponseForSuccess(m, forumsList)).asString(); \t\/\/\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0434\u043b\u044f noscript \u0442\u0435\u0433\u0430     StringBuilder noscriptSb = new StringBuilder();     for (GWTForum f : forumsList) {         noscriptSb.append(f.getBootstrap());     }     String noscript = noscriptSb.toString();  %&gt; &lt;!DOCTYPE html&gt; &lt;html&gt;     &lt;head&gt;         &lt;script type=&quot;text\/javascript&quot; language=&quot;javascript&quot;&gt;             var forums='&lt;%=forums%&gt;';          &lt;\/script&gt;         &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html; charset=UTF-8&quot;&gt;         &lt;title&gt;Forums index&lt;\/title&gt;         &lt;link href=&quot;res\/gfStyle.css&quot; type=&quot;text\/css&quot; rel=&quot;stylesheet&quot;\/&gt;         &lt;link href=&quot;res\/login.css&quot; type=&quot;text\/css&quot; rel=&quot;stylesheet&quot;\/&gt;         &lt;meta name='gwt:module' content='com.oshift.ui.index=com.oshift.ui.index'&gt;         &lt;script type=&quot;text\/javascript&quot;  src=&quot;com.oshift.ui.index\/com.oshift.ui.index.nocache.js&quot;&gt;&lt;\/script&gt;     &lt;\/head&gt;     &lt;body&gt; \t... \t&lt;noscript&gt;     &lt;%=noscript%&gt;     &lt;\/noscript&gt; <\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430:  <\/p>\n<pre><code class=\"java\">package com.oshift.ui.client;  import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.shared.GWT; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.SerializationException; import com.google.gwt.user.client.rpc.SerializationStreamFactory; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; import com.oshift.ui.client.forummanamegemt.ForumManagementServiceAsync; import com.oshift.ui.client.mainpage.ForumComposite; import com.oshift.ui.shared.forum.GWTForum; import java.util.ArrayList;  public class IndexEntryPoint implements EntryPoint {  \t\/\/\u0421\u0435\u0440\u0432\u0438\u0441     private final ForumManagementServiceAsync svc = ServicesFactory.getForumManagementServiceAsync();      @Override     public void onModuleLoad() { \t\t\/\/\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c unescape \u0434\u043b\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430         String forums = new HTML(getForums()).getText();         SerializationStreamFactory ssf = (SerializationStreamFactory) svc;         try {             ArrayList&lt;GWTForum&gt; readObject = (ArrayList&lt;GWTForum&gt;) ssf.createStreamReader(forums).readObject();             for (GWTForum f : readObject) { \t\t\t\t\/\/\u0434\u0435\u043b\u0430\u0435\u043c \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c                 process(f);             }         } catch (SerializationException ex) { \t\t\t\/\/\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043a\u0438             Window.alert(&quot;\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0444\u043e\u0440\u0443\u043c\u044b \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f: &quot; + ex);         }         ...\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e     }  \t\/\/\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b     private native String getForums()\/*-{      return eval(&quot;$wnd.forums&quot;);      }-*\/; } <\/code><\/pre>\n<p>  \u0421\u0430\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"html\">&lt;!DOCTYPE html&gt; &lt;html&gt;     &lt;head&gt;         &lt;script type=&quot;text\/javascript&quot; language=&quot;javascript&quot;&gt; \t\t\/\/\u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u044d\u0441\u043a\u0435\u0439\u043f\u043b\u0435\u043d\u044b, \u043f\u043e\u0432\u0435\u0440\u044c\u0442\u0435.             var forums='\/\/OK[7,4,6,4,5,4,3,1,3,2,1,1,[&quot;java.util.ArrayList\/4159755760&quot;,&quot;com.oshift.ui.shared.forum.GWTForum\/1236332786&quot;,&quot;\u0444\u043e\u0440\u0443\u043c1&quot;,&quot;com.oshift.ui.shared.forum.GWTTopic\/1653537274&quot;,&quot;\u043d\u0435\u043a\u0438\u0439 \u0442\u043e\u043f\u0438\u043a1&quot;,&quot;\u043d\u0435\u043a\u0438\u0439 \u0442\u043e\u043f\u0438\u043a2&quot;,&quot;\u043d\u0435\u043a\u0438\u0439 \u0442\u043e\u043f\u0438\u043a3&quot;],0,7]';          &lt;\/script&gt;         &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html; charset=UTF-8&quot;&gt;         &lt;title&gt;Forums index&lt;\/title&gt;         &lt;link href=&quot;res\/gfStyle.css&quot; type=&quot;text\/css&quot; rel=&quot;stylesheet&quot;\/&gt;         &lt;link href=&quot;res\/login.css&quot; type=&quot;text\/css&quot; rel=&quot;stylesheet&quot;\/&gt;         &lt;meta name='gwt:module' content='com.oshift.ui.index=com.oshift.ui.index'&gt;         &lt;script type=&quot;text\/javascript&quot;  src=&quot;com.oshift.ui.index\/com.oshift.ui.index.nocache.js&quot;&gt;&lt;\/script&gt;     &lt;\/head&gt;     &lt;body&gt; \t... \t&lt;noscript&gt;             Forum name: \u0444\u043e\u0440\u0443\u043c1&lt;br&gt;\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043f\u0438\u043a\u0430: \u043d\u0435\u043a\u0438\u0439 \u0442\u043e\u043f\u0438\u043a1&amp;lt;\/br&amp;gt;\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043f\u0438\u043a\u0430: \u043d\u0435\u043a\u0438\u0439 \u0442\u043e\u043f\u0438\u043a2&amp;lt;\/br&amp;gt;\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043f\u0438\u043a\u0430: \u043d\u0435\u043a\u0438\u0439 \u0442\u043e\u043f\u0438\u043a3&amp;lt;\/br&amp;gt;             &lt;\/noscript&gt;         &lt;\/div&gt;     &lt;\/body&gt; &lt;\/html&gt; <\/code><\/pre>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043c\u043e\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0441\u0442\u0430\u043d\u0435\u0442 \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439. \t\t\t \t\t\t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/163917\/\"> http:\/\/habrahabr.ru\/post\/163917\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\"> \t\t\t\u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a\u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043b\u044e\u0431\u044f\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 (\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435) GWT \u043a\u0430\u043a \u0440\u0430\u0437 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-163917","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/163917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=163917"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/163917\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=163917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=163917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=163917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}