GWT Web アプリのシリアル化を最適化しようとしています。
アプリケーションは Maven ベースで、3 つのモジュール (project/project-gwt/project-gwt-shared) があり、メソッドの 1 つはクライアント側に大量の情報を返す必要があります。この方法では大量の同じ DTO のリストが返され、シリアライズとデシリアライズにかなりのメモリと時間が消費されます。
custom_DTOserializator を作成しましたが、時間は速くなりますが、改善できると思います。
解決策を探していると、GWT で動作する JSON-RPC 1.1 の実装であるgwtjsonrpcが見つかりました。gerritに統合されているので、試してみることにしました。
gwtjsonrpc-1.3.jar をダウンロードし、次のようにインストールしようとしました。
mvn install:install-file -Dfile=gwtjsonrpc-1.3.jar
-DgroupId=com.google.gwtjsonrpc -Dpackaging=jar -DartifactId=gwtjsonrpc
-Dversion=1.3 -Dclassifier=sources
そして、私はそれをすべてのポンポンに入れました
<dependency>
<groupId>com.google.gwtjsonrpc</groupId>
<artifactId>gwtjsonrpc</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>com.google.gwtjsonrpc</groupId>
<artifactId>gwtjsonrpc</artifactId>
<version>1.3</version>
<classifier>sources</classifier>
<type>jar</type>
</dependency>
Readme Instruction に従って、新しい Service、serviceImpl、および ServiceAsyn (AppJsonService) を作成し、それをアプリの古いモジュールで使用しようとしています。
<inherits name='com.google.gwtjsonrpc.GWTJSONRPC'/>
<servlet path='/AppJsonService' class='com.company.project.server.AppJsonServiceImpl'/>
この行でコンパイルします(permgemメモリの問題の余分な行ID)
mvn clean install:install-file -e -Dfile=gwtjsonrpc-1.3.jar
-DgroupId=com.google.gwtjsonrpc -Dpackaging=jar -DartifactId=gwtjsonrpc
-Dversion=1.3 -Dclassifier=sources install -Dmaven.test.skip=true
-Dgwt.extraJvmArgs="-XX:MaxPermSize=512M -Xmx1024M"
コマンドは jar をインストールします[情報] C:\Users\me\Desktop\project\version\pom\gwtjsonrpc-1.3.jar を C:\Users\me.m2\repository\com\google\gwtjsonrpc\gwtjsonrpc\1.3 にインストールします\gwtjsonrpc-1.3-sources.jar
しかし、gwt モジュールのコンパイルで、解決方法がわからないというエラーが表示されます。
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] GWT Module com.google.gwtjsonrpc.GWTJSONRPC not found in project sources or resources.
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: GWT Module com.google.gwtjsonrpc.GWTJSONRPC not found in project sources or resources.
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
...
Caused by: org.apache.maven.plugin.MojoExecutionException: GWT Module com.google.gwtjsonrpc.GWTJSONRPC not found in project sources or resources.
at org.codehaus.mojo.gwt.shell.CompileMojo.compilationRequired(CompileMojo.java:447)
at org.codehaus.mojo.gwt.shell.CompileMojo.compile(CompileMojo.java:308)
at org.codehaus.mojo.gwt.shell.CompileMojo.doExecute(CompileMojo.java:237)
at org.codehaus.mojo.gwt.shell.AbstractGwtShellMojo.execute(AbstractGwtShellMojo.java:142)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
... 17 more
Caused by: org.codehaus.mojo.gwt.utils.GwtModuleReaderException: GWT Module com.google.gwtjsonrpc.GWTJSONRPC not found in project sources or resources
.
at org.codehaus.mojo.gwt.AbstractGwtModuleMojo.readModule(AbstractGwtModuleMojo.java:205)
at org.codehaus.mojo.gwt.GwtModule.getLocalInherits(GwtModule.java:189)
at org.codehaus.mojo.gwt.GwtModule.getInherits(GwtModule.java:149)
at org.codehaus.mojo.gwt.GwtModule.getEntryPoints(GwtModule.java:114)
at org.codehaus.mojo.gwt.shell.CompileMojo.compilationRequired(CompileMojo.java:361)
... 22 more