GWT应用程序的切分

来源:互联网 发布:vc socket多线程编程 编辑:程序博客网 时间:2024/06/01 16:51

有过在Eclipse下编写GWT应用程序经验的Programmer都知道,本质上GWT的Compiler是将客户端的代码编译成JS代码,默认是放在war文件夹下面。现在我们将客户端的代码与服务端的代码切分开来,分别放在两个不同的工程里面。

首先看一下GWT应用程序的结构:

image

其中最重要的文件是GWTPartition.gwt.xml:

image其中元素module的属性rename-to的值很重要,上面的值是gwtpartition,从而编译产生的JS文件都放在war/gwtpartition下面,entry-point的class属性的值是程序的入口点,该类的onModuleLoad方法在程序启动的时候将会被执行。

同时也可以看到客户端的代码都在edu.sjtu.client下面,服务端的代码都在edu.sjtu.server下面,当然这个不是绝对的,只要经由GWTPartition引用(直接或者间接)的类都将会被编译成JS代码。

为了切分,我们首先新建一个Plug-in project,至于为什么选择Plug-in project,是想将这个分离出来的project做成一个war格式的bundle:

image

 

 

 

注意,这里将Project name加一个后缀.war是必要的,因为WAR格式的Bundle其识别机制是看工程名(Bundle的SymbolicName)是否有后缀war,同时选择Equinox。下一步:image

这里勾掉Generate an activator…选项,因为不需要。下一步后,直接Finish。

生成的工程目录结构:

image 现在我们要开始切割了!

首先将edu.sjtu.server这个包移到GWTPartition.war下面,此时会产生编译错误,我们将GWTPartition加到GWTPartition.war的类路径上,同时把gwt-servlet.jar与gwt-dev-windows.jar也加到类路径上来。这是目前的工程目录结构:

image同时也为了使得GWTPartition能运行起来,在它的Run Configuration里面把工程GWTPartition.war加到Classpath里面:

image这个时候应用程序能够在Hosted Mode下运行,如图:

 image 至此,已经切割完毕。

倘有疏漏之处,敬请指正。

Best Regards

胡靖飞

原创粉丝点击