Eclipse Jetty GWT 同时调试多个项目的配置方法

  阅读: 43 评论: 2 作者: blackcore 发表于 2009-11-30 10:05 原文链接

 

GWT应用程序有两种方式运行:

Hosted Model

     在Hosted Model方式下,Java程序并不会被编译成JavaScript,GWT只是创造了一个类似

     浏览器的环境,直接运行使用GWT开发的程序。这种模式最具生产力(这种模式下可以Debug所有的Java代码),

     所以开发环境通常使用Hosted Model,但是真正的程序执行不使用这种模式。

Web Model

     就是将使用GWT编写的Java程序整整编译成JavaScript,在Web容器上运行,使用浏览器

     访问的模式,这种方式只有在测试或者运行的时候才使用,每次对Java类的修改必须重新编译

     这些Java类,之后重新部署应用。所以生产力比较低。

 

这里没写完.......

2009.12.08

 

因为项目较大,项目组将项目的前后台分给了两个团队负责。
后台主要用了hibernate持久化,前台主要用Gwt的Widget实现页面的布局,中间用Json进行数据交互!
由于在后台代码中,都有单独的testcase,前台也有testcase,两个团队都是互不影响的,所以也没有将两个项目
整合调试。因为现在需要整合调试,所以就把前后台都放在一个工作区了,但如何debug却搞了一段时间,现总算
搞定了。
前台项目:***-frontend;后台项目:***-backend。
 
Eclipse Jetty GWT 同时调试多个项目的配置方法

在这里,我们用了ant build了一个war吧,其中在前后台的两个build.xml文件中,分别将后台项目生成为***_backend.war,前台项目生成为***.war包。这样完成以后,我们就需要对前后的debug方式进行相关配置,然后再对jetty服务器进行配置。其中需要注意的时,后台项目我们用jetty debug的方式来做,前台则用Gwt hosted mode来进行Debug,基本作法如下:
首先我的jetty_version的端口号是10000,可以在jetty_version\etc\jetty.xml中设置其port的默认端口号。
其次jetty启动时用-Xdebug -Xrunjdwp:transport=dt_socket,address=8080来启动,这个8080端口主要用于监听后台的debug商品
再次要将前台启动的端口设置成10000,这样就可以调试了。

详细做法如下:
假如我的jetty位置在:F:\Setupfiles\JavaPlatform\jetty_6.1.22
前台项目名称为:***_frontend;后台项目名称为:***_backend。
要注意把***_backend.war和***.war包都放入F:\Setupfiles\JavaPlatform\jetty_6.1.22\webapps\下。按常理也许很难理解,因为我们已经都编译成包了,虽然在eclipse中已经改过代码了,但我们调试时却是现在eclipse的代码,而不是***.war包的代码。。。这里牵涉到了GWT编译代码一些知识。

1. 右击***_backend --> Debug As --> Debug Configurations...,然后就会如下界面,按照如下设置: 
Eclipse Jetty GWT 同时调试多个项目的配置方法注意Connection Properties及其Connection Typeg两个属性的设置。

2. 启动Jetty,jetty的启动参数要求有-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888
 则完整的启动命令是:java -Xms256M -Xmx1024M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888 -jar start.jar
 在这里可以将命令保存为一个jettyStart.bat文件,以便使用,如:
 @echo off
 echo 正在启动jetty,请稍等......

 f:
 cd F:\Setupfiles\JavaPlatform\jetty_6.1.22
 java -Xms256M -Xmx1024M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888 -jar start.jar

 echo 启动完成
 echo. & pause
 单击jettyStart.bat启动jetty即可,如  
Eclipse Jetty GWT 同时调试多个项目的配置方法 在Eclipse中右击***_backend --> Debug As --> Debug Configurations...打开对话框后单击"debug"按钮,在Eclipse中的Debug界面就有如下:  
Eclipse Jetty GWT 同时调试多个项目的配置方法 可以看到8888端口已经启动,***_backend的所有线程都在里面了。。。

3. 在以上已经完成了后台的高度工作,接下来将处理前台的调试。前台主要用GWT Hosted Mode进行调试,在Eclipse中右击***_frontend --> Debug As --> Debug Configurations...界面如下:  
Eclipse Jetty GWT 同时调试多个项目的配置方法 要求将Run built-in server的复选框的勾去掉,然后再设置GWT标签的内容,如下:
  
Eclipse Jetty GWT 同时调试多个项目的配置方法 设置其URL即可,端口号10000为jetty的默认端口号,其中在output style选择Obfuscated即可,这里主要是输出调试信息,因为GWT编译JAVA代码后会生javascript代码,选择obfuscated输出的信息就是乱码,而 detailed就是可读的javascript代码.
 
 4.在以上界面设置完成后,点击"Debug"按钮后,我们就可以见到如下界面,输入用户名和密码后
  
Eclipse Jetty GWT 同时调试多个项目的配置方法 单击"Login"按钮后,我们就可以跟踪在后台的断点,如:
  
Eclipse Jetty GWT 同时调试多个项目的配置方法 

我们按F8后,然后就会进入前台的断点,如:
  Eclipse Jetty GWT 同时调试多个项目的配置方法 

在GWT Hosted Mode中,我们也可以看到详细的Log信息,如:  
Eclipse Jetty GWT 同时调试多个项目的配置方法 以上配置基本就完成了。
 要说明的是:
 两个war包一定要放在jetty/webapps/中,如
  
Eclipse Jetty GWT 同时调试多个项目的配置方法 

可以在eclipse中直接改代码,虽然看起来我们已经把war包扔到jetty中了,但调试时肯定是最新修改代码。
 GWT的项目在编译后都会生成javascript,但我们还是只要求关心我们的.java代码就OK,至于GWT如何去编译成javascript代码,如何把java代码与javascript代码相对 应。
 如下便是GWT编译后的javascript代码:   
  
Eclipse Jetty GWT 同时调试多个项目的配置方法 要注意的是java的一个method与javascript中的function不是1:1关系。
 
 另外介绍在配置过程中用到的几个工具
 1. hardlink工具(相当于快捷方式)
  Eclipse Jetty GWT 同时调试多个项目的配置方法

Junction,如果在CMD找不到此命令,请到MS上下载放入win32目录下就OK。
  Eclipse Jetty GWT 同时调试多个项目的配置方法
 2. 抓包工具Fiddler2,可以抓到本机的通过http等端口的传入/出数据包,但ftp的不会。
  启动界面
 主界面如下: 

Eclipse Jetty GWT 同时调试多个项目的配置方法 

 

Eclipse Jetty GWT 同时调试多个项目的配置方法

  发表评论


新闻频道:"小黑"终结? 传联想将推红色ThinkPad

推荐链接:Windows 7专题发布

网站导航:博客园首页  个人主页  新闻  社区  博问  闪存  知识库

转载于:https://my.oschina.net/agile/blog/2132