至于为什么要用Tomcat替换jetty ?简单来说,jetty不符合我们国内大部分公司开发习惯,功能也太弱,不能直接和Struts结合等等,总之Tomcat对开发来说就是要爽些。
如果你成功的在Myeclipse运行GWT项目,那么现在需要使用Tomacat7替换GWT内置的jetty web服务器。其实不替换也可以,你直接把编译后生成GWT html和相关的包直接扔到tomcat webapp 就可以运行,这种方法google也很多,这里不做详述。但那样太麻烦而且效率奇低!我们需要在集成开发环境中使用tomcat ,最好是不通过GWT 编译,直接使用其hosted模式开发最好!但是麻烦的是,直接在Myeclipse 中生成的GWT项目不能使用“Deployments”,那就不能把相关的web运行环境和文件自动copy到web服务器的运行目录当中!所以这里必须对tomcat进行一番改造才行。
我们的目标:
1.完全不需要在myeclipse外另外启动tomcat,能通过myeclipse启动管理tomcat;
2.使用GWT hosted模式下,不需要编译就能在tomcat里部署,访问GWT项目;
3.不需要手工copy任何文件,实现像SSH在Myeclipse一样的自动部署。
如果你生成了GWT项目你就会发现,GWT的访问目录是“war” ,而不是象以往一样的“WebRoot”至于其他,什么"WEB-INF"什么呀,都一样!换句话说就是根目录名不一样而已!
改变我们tomcat默认的web根目录是其目录下的“webapps”为GWT产生的web根目录——“war”就行了!
1.下载Tomcat7 ,注意最好是那个zip包就好,直接解压就能用;
2.解压Tomcat7;
3.在“conf”目录下打开“server.xml”,修改此文件,更改tomcat默认目录
3.1 找到<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
3.2 在下面添加<Context path="" docBase="D:\JavaProject\GWT_ContactInfo\war" debug="0" reloaxsdable="true" ></Context>
请注意“docBase”,就是你将要的重新定义的tomcat web根目录,在这里有一个小小的不同,在windows下,如果你想上面一样写"D:\JavaProject\..."tomcat将会认为这是绝对路径,如果不写"D:\"仅仅写docBase="GWT_ ContactInfo" ,tomcat认为这是相对路径,其web的根目录仍然是默认根目录"webapps"下的一个名叫"GWT_ContactInfo"子目录,其绝对路径等于是"C:\tomcat7\webapps\GWT_ContactInfo",至于linux下,原理其实是一样的哈:)
还有就是重新指定的tomcat web目录就是你建立的GWT项目的web默认目录"war"
4.在Myeclipse下配置tomcat 7,这个需要注意的是,指定jre的时候一定是指定你的jdk目录!
随便在你的"war"下建立一"test.jsp"页面,通过Myeclipse启动tomcat,访问一下这个页面,看能不能访问?
如果像上图一样,Tomcat就算在Myeclipse GWT里集成成功了!
(下一节看点,在GWT(GXT)模块项目中集成Struts2)