【问题标题】:How do I set up GWT Super Dev Mode with the new (tbroyer) maven-gwt-plugin on WildFly?如何在 WildFly 上使用新的 (tbroyer) maven-gwt-plugin 设置 GWT 超级开发模式?
【发布时间】:2017-05-28 12:07:31
【问题描述】:

使用new maven-gwt-pluginofficially 取代了传统的 mojo 之一),我可以运行 GWT 超级开发模式:

mvn gwt:codeserver

如何让我的后端运行 WildFly(它使用 JAX-RS 和其他 JavaEE 技术)?

【问题讨论】:

  • 1) 你是如何使用 MojoHaus 插件的? 2)也许看看 wildfly-maven-plugin 和 wildfly:run/wildfly:start?
  • 它需要作为一个进程启动(所以它可以作为一个进程被杀死,所以它可以作为一个被调试,等等),所以 2)不是一个选项。 1)我看到人们使用启动器,所以我现在也在尝试。

标签: java maven gwt jboss wildfly


【解决方案1】:

使用 EmbeddedWildFlyLauncher

  • 添加 errai-cdi-jboss 依赖项,其中包括 WildFly 的启动器
  • 但还要从 gwt-dev 中排除 apache-jsp 依赖项以避免错误。

pom.xml 看起来像这样:

<dependency>
  <groupId>com.google.gwt</groupId>
  <artifactId>gwt-dev</artifactId>
  <exclusions>
    <exclusion>
      <!-- Contains a ServletContainerInitializer that breaks the EmbeddedWildFlyLauncher during GWT Super Dev Mode -->
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>apache-jsp</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <!-- Only used for EmbeddedWildFlyLauncher during GWT Super Dev Mode -->
  <groupId>org.jboss.errai</groupId>
  <artifactId>errai-cdi-jboss</artifactId>
  <scope>runtime</scope>
</dependency>
  • 在 maven-gwt-plugin 中从 errai-cdi-jboss 配置 WildFly 启动器 EmbeddedWildFlyLauncher
  • 为生成的进程配置 errai.jboss.home 系统属性,以便启动器可以启动 WildFly。
  • warDir 配置到展开的目录,这样后端战争也被加载(因此来自GWT 客户端的REST/RPC 调用实际上有人在后端应答它们)。

pom.xml 中的该部分如下所示:

    <plugin>
      <groupId>net.ltgt.gwt.maven</groupId>
      <artifactId>gwt-maven-plugin</artifactId>
      <extensions>true</extensions>
      <configuration>
        <devmodeArgs>
          <!-- GWT Super Dev Mode: Replace default backend by WildFly -->
          <arg>-server</arg>
          <arg>org.jboss.errai.cdi.server.gwt.EmbeddedWildFlyLauncher</arg>
          <arg>-startupUrl</arg>
          <arg>gwtui/gwtui.html</arg>
        </devmodeArgs>
        <!-- GWT Super Dev Mode: deploy backend correctly -->
        <warDir>optashift-employee-rostering-webapp/target/optashift-employee-rostering-webapp-${project.version}</warDir>
        <systemProperties>
          <!-- GWT Super Dev Mode: which WildFly to use -->
          <errai.jboss.home>${wildfly.home}</errai.jboss.home>
        </systemProperties>
      </configuration>
    </plugin>

然后运行

mvn gwt:devmode

重要提示:这并不完全有效,因为后端不是真正的 wildfly 战争,而只是 gwt ui 战争......

【讨论】:

  • @thomas-broyer WildFly 服务器在端口9990 启动,devmode 在端口9876 启动,但是我来自GWT UI 的REST 请求失败,因为9876 的devmode 服务器忽略了它们。知道如何让他们转发到9990 吗?我没有使用 GWT-RPC。
  • 使它们相对于GWT.getModuleBaseURL()GWT.getHostPageBaseURL()?
  • 修复warDir,现在一切都运行到wildfly端口。
猜你喜欢
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 2013-08-22
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
相关资源
最近更新 更多