阅读: 43 评论: 2 做者: blackcore 发表于 2009-11-30 10:05 原文连接javascript
GWT应用程序有两种方式运行:html
Hosted Modeljava
在Hosted Model方式下,Java程序并不会被编译成JavaScript,GWT只是创造了一个相似web
浏览器的环境,直接运行使用GWT开发的程序。这种模式最具生产力(这种模式下能够Debug全部的Java代码),windows
因此开发环境一般使用Hosted Model,可是真正的程序执行不使用这种模式。浏览器
Web Model服务器
就是将使用GWT编写的Java程序整整编译成JavaScript,在Web容器上运行,使用浏览器app
访问的模式,这种方式只有在测试或者运行的时候才使用,每次对Java类的修改必须从新编译frontend
这些Java类,以后从新部署应用。因此生产力比较低。eclipse
这里没写完.......
2009.12.08
由于项目较大,项目组将项目的先后台分给了两个团队负责。
后台主要用了hibernate持久化,前台主要用Gwt的Widget实现页面的布局,中间用Json进行数据交互!
因为在后台代码中,都有单独的testcase,前台也有testcase,两个团队都是互不影响的,因此也没有将两个项目
整合调试。由于如今须要整合调试,因此就把先后台都放在一个工做区了,但如何debug却搞了一段时间,现总算
搞定了。
前台项目:***-frontend;后台项目:***-backend。
在这里,咱们用了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...,而后就会以下界面,按照以下设置: 注意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中右击***_backend --> Debug As --> Debug Configurations...打开对话框后单击"debug"按钮,在Eclipse中的Debug界面就有以下:
能够看到8888端口已经启动,***_backend的全部线程都在里面了。。。
3. 在以上已经完成了后台的高度工做,接下来将处理前台的调试。前台主要用GWT Hosted Mode进行调试,在Eclipse中右击***_frontend --> Debug As --> Debug Configurations...界面以下: 要求将Run built-in server的复选框的勾去掉,而后再设置GWT标签的内容,以下:
设置其URL便可,端口号10000为jetty的默认端口号,其中在output style选择Obfuscated便可,这里主要是输出调试信息,由于GWT编译JAVA代码后会生javascript代码,选择obfuscated输出的信息就是乱码,而 detailed就是可读的javascript代码.
4.在以上界面设置完成后,点击"Debug"按钮后,咱们就能够见到以下界面,输入用户名和密码后
单击"Login"按钮后,咱们就能够跟踪在后台的断点,如:
咱们按F8后,而后就会进入前台的断点,如:
在GWT Hosted Mode中,咱们也能够看到详细的Log信息,如: 以上配置基本就完成了。
要说明的是:
两个war包必定要放在jetty/webapps/中,如
能够在eclipse中直接改代码,虽然看起来咱们已经把war包扔到jetty中了,但调试时确定是最新修改代码。
GWT的项目在编译后都会生成javascript,但咱们仍是只要求关心咱们的.java代码就OK,至于GWT如何去编译成javascript代码,如何把java代码与javascript代码相对 应。
以下即是GWT编译后的javascript代码:
要注意的是java的一个method与javascript中的function不是1:1关系。
另外介绍在配置过程当中用到的几个工具
1. hardlink工具(至关于快捷方式)
Junction,若是在CMD找不到此命令,请到MS上下载放入win32目录下就OK。
2. 抓包工具Fiddler2,能够抓到本机的经过http等端口的传入/出数据包,但ftp的不会。
启动界面
主界面以下:
推荐连接:Windows 7专题发布