我正在尝试优化GWT Web应用程序的序列化
该应用程序基于maven,它有3个模块(project / project-gwt / project-gwt-shared),其中一个方法必须向客户端返回大量信息。这个方法向我发回了大量相同DTO的列表,它在序列化和反序列化中消耗了相当多的内存和时间。
我们制作了一个custom_DTOserializator但是虽然时间更快,但我们认为它可以改进。
搜索解决方案我发现 gwtjsonrpc 它是JSON-RPC 1.1的一个实现,适用于GWT。它集成在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
我把它放在我所有的poms中
<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>
遵循自述文件说明我创建了一个新服务,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 [INFO]将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
答案 0 :(得分:1)
我认为你的问题是你正在安装一个JAR,而不是2:一个没有分类器(gwtjsonrpc-1.3.jar
)而另一个没有分类器sources
(实际上在Maven中它更像是{{1}而不是类型java-source
)。您将使用命令:
jar
哦,在构建模块时无需mvn install:install-file \
-DgroupId=gwtjsonrpc -Dpackaging=jar -DartifactId=gwtjsonrpc -Dversion=1.3 \
-Dfile=gwtjsonrpc-1.3.jar -Dsources=gwtjsonrpc-1.3-sources.jar
!
请注意,您可以在GAV install-file
下的http://gerrit-maven.storage.googleapis.com处的Maven仓库中找到gwtjsonrpc,因此只需将gwtjsonrpc:gwtjsonrpc:1.3
添加到您的POM或将其代理到您的存储库管理器中,而不是打扰手动安装JAR。至少你有正确的POM和适当的依赖关系!