0

所以我有这个(有点)奇怪的想法——正在开发的系统通过各种服务与外部世界通信,但它完全是服务器端的,并且被部署为单一的战争。我想为它编写一个基本的 UI(开发/调试级,不用于生产)。主要目标:

  • 避免调用系统服务,而是直接在 java 对象上调用方法
  • 使用 GWT
  • 必须从测试用例 (testng) 和部署到 tomcat 的战争中工作(最好在开发和生产 gwt 模式下)
  • 保持独立,限制对系统的更改

那么......如何用gwt做到这一点?在部署到 tomcat 时,我会将两者都投入到同一场战争中。(因为不同的战争有不同的类加载器)。运行测试用例(集成,它们使用 db 和所有东西)时,我会在初始化期间启动嵌入式码头并注册新的 gwt servlet。

好的,这听起来可行。但是开发模式呢?我希望能够启动常规开发模式,这将允许

  • 修改 UI 代码(显然可以),以及
  • 修改服务器端代码(我通常会使用 jrebel 来实现) - 但在这种情况下如何运行测试用例?我肯定不会重写它们。

放弃在同一个 jvm 中运行 UI 和系统的想法会有所帮助并且可以很好地分离,但也会迫使我编写一些毫无意义的 RPC/RMI/东西。

关于如何解决这个问题的任何见解?

顺便说一句 - 这只是一个下班后的项目,所以疯狂的我永远不会在真实系统中做那个想法是受欢迎的。

4

1 回答 1

0

在单独的 JVM 中运行后端(Tomcat、Jetty 等)和前端(GWT 开发模式)可以正常工作。这实际上是现在或多或少推荐的方法(特别是如果您想在某些时候使用 SuperDevMode)。

这是我使用eclipse的开发策略:

  1. 在调试模式下使用 WTP 和 Jetty 启动后端服务器(当我在后端更改某些内容时,JRebel 用于热交换类)。
  2. 启动 GWT 开发模式
  3. 在浏览器中打开 GWT 应用程序

这样,当我在 GWT 部分更改某些内容时,我只需刷新浏览器,我就会看到 UI 中的更改。
JRebel 负责后端部分的所有更改。

前端和后端之间的通信方式与在生产模式(RequestFactoryRPCRequestBuilder中的方式相同。

于 2012-09-17T09:47:24.447 回答