Maven 2 这个GWT模块结构正常吗? 描述

Maven 2 这个GWT模块结构正常吗? 描述,maven-2,gwt,dto,gwt-rpc,Maven 2,Gwt,Dto,Gwt Rpc,我有一个使用GWT maven插件的GWT父项目。该项目分为两个子项目:域和WebApp,每个项目包含pom.xml文件。我想从GWT客户端代码中分离域代码 父项目 /母公司 /Parent/pom.xml 域项目 [1] 我认为它是在服务器上运行的应用程序的服务器端部分 /父/域 /父/域/pom.xml …/beans/PersonBean.java …/dao/PersonDAO.java …/services/PersonService.java …/util/DateUtil.j

我有一个使用GWT maven插件的GWT父项目。该项目分为两个子项目:域和WebApp,每个项目包含pom.xml文件。我想从GWT客户端代码中分离域代码

父项目
  • /母公司
  • /Parent/pom.xml
域项目 [1] 我认为它是在服务器上运行的应用程序的服务器端部分

  • /父/域
  • /父/域/pom.xml
  • …/beans/PersonBean.java
  • …/dao/PersonDAO.java
  • …/services/PersonService.java
  • …/util/DateUtil.java
  • …/gwt/client/GWTPersonService.java
  • …/gwt/server/GWTPersonServiceImpl.java
  • …/gwt/shared/GWTPersonDTO.java——一个DTO(数据传输对象)
WebApp项目 [2] 我认为它是在web浏览器中运行的应用程序的客户端

  • 家长/网络应用
  • Parent/WebApp/pom.xml
  • …/gwt/client/PersonUI.java
  • …/gwt/util/GWTUtility.java-这是一个由gwt组件调用的实用程序类,它不在服务器上使用
  • …/webapp/WEB-INF/WEB.xml
  • …/webapp/Page.css
  • …/webapp/Page.html
序列图

PersonUI将调用GWTPersonService的方法来调用PersonService(我需要这种分离,因为PersonService.java也将由非GWT客户端调用)

PersonService将调用PersonDAO,它使用并返回PersonBean实例。然后,PersonBean被转换为GWTPersondo,并由GWTPersonServiceImpl发送到客户端

问题(已编辑)
  • 我应该将通常位于/shared文件夹下的共享GWT代码放在哪个项目中
  • 在域项目中使用GWTPersonServiceImpl.java和GWTPersonService.java有意义吗?我的理由是,由于所有servlet都位于服务器上,并且域用于服务器端,因此这些类应该位于域项目中
  • 我应该将GWTUtility.java移到域项目中吗
  • 使用DTO有意义吗?有没有办法让它更直接:即直接使用PersonBean
  • 是否可以使用maven在GWT开发人员模式下运行此场景?配置起来有多容易
  • 如果您对上述场景有任何修改/添加,请发布它们-或者更好,如果您已经完成了一个应用程序,那么了解您是如何解决此分离的会有很大帮助
  • 谢谢大家!

  • 我将把共享代码放在第三个项目中,域和WebApp都可以依赖这个项目
  • 由于
    GWTPersonServiceImpl
    是一个servlet,在服务器上运行,而不是在客户机上运行,因此它属于域
  • gwtuity
    执行什么功能?如果只在客户端使用,则属于WebApp;如果它只在服务器上使用,那么它属于域;如果两者都使用,那么它可能属于WebApp和Domain都依赖的第三个项目
  • 您可以使用复杂类型,只要它(及其组成类型)实现或(有限制)。看。在任何情况下,按照设计,项目中的任何序列化类型都可能属于域和WebApp都依赖的模块
  • 我的管理方式如下:

    平民 CmnDomain[Java项目] src/java/com/cmnapp/CmnDomain.gwt.xml//指定“域”作为源 GWT应用程序中使用的src/java/com/cmnapp/domain//POJO src/java/com/cmnapp/iBatis//iBatis实现(您可以在这里使用您的DAO impl.here) src/java/com/myapp/service//commonspring服务 MyApp MyAppService[Java项目] src/java/com/mynapp/MyAppDomain.gwt.xml//指定“域”作为源 GWT应用程序中使用的src/java/com/mynapp/domain//POJO src/java/com/mynapp/iBatis//iBatis实现(您可以在这里使用您的DAO impl.here) src/java/com/myapp/service//Spring服务 MyAppWeb[Gwt Web项目] src/java/com/mynapp/MyApp.gwt.xml//指定“client”和“shared”作为源文件夹 src/java/com/myapp/client//纯GWT代码可以从该项目的.jar中排除 src/java/com/myapp/shared//在UI和表示层之间共享,例如常量 src/java/com/myapp/server//rpcservlet、标准servlet、struts操作等。 src/webapp/WEB-INF/WEB.xml src/webapp/images//images src/webapp/javascript//自定义java脚本 src/webapp/css//cascade样式表 src/webapp/WEB-INF/jspx//仅限内部访问 src/webapp/secure//用户登录后内容可访问 src/webapp/login//可通过/不通过登录访问的内容
    1.第三个项目的好处是什么?为什么不把所有共享代码都放在我想WebApp项目可以(应该?)访问的域项目中呢?2.由于GWTPersonServiceImpl.java是一个servlet,我认为它应该位于表示服务器端代码的域中。您认为域项目与服务器端代码是不同的概念吗?4.如果任何序列化类型属于“共享”项目,我是否应该将所有持久性bean移动到那里,并让DAO层访问它?顺便说一句,由于一个错误,除非您编辑它,否则我不能对您的答案投票。请在上面稍作改动。你想怎么做都行。从逻辑上讲,对我来说,共享代码属于它自己的项目,但这不一定是每个项目的最佳方法。2.从您的问题中不清楚GWTPersonServiceImpl是一个servlet。4.是的,这就是我要说的重点。 Commons CmnDomain [Java Project] src/java/com/cmnapp/CmnDomain.gwt.xml // specifying "domain" as source src/java/com/cmnapp/domain // POJO's used in GWT application src/java/com/cmnapp/iBatis // iBatis implementation (you can have ur DAO impl. here) src/java/com/myapp/service // Common Spring service MyApp MyAppService [Java Project] src/java/com/mynapp/MyAppDomain.gwt.xml // specifying "domain" as source src/java/com/mynapp/domain // POJO's used in GWT application src/java/com/mynapp/iBatis // iBatis implementation (you can have ur DAO impl. here) src/java/com/myapp/service // Spring service MyAppWeb [Gwt Web Project] src/java/com/mynapp/MyApp.gwt.xml // specifying "client" and "shared" as source folders src/java/com/myapp/client // Pure GWT code can be excluded from .jar of this project src/java/com/myapp/shared // Shared between UI and Presentation tiers e.g. constants src/java/com/myapp/server // RPC servlet, Standard servlet, struts action, etc. src/webapp/WEB-INF/web.xml src/webapp/images // images src/webapp/javascript // custom java scripts src/webapp/css // cascade style sheets src/webapp/WEB-INF/jspx // internal access only src/webapp/secure // content accessible post user login src/webapp/login // content accessible with/without login