SEAM GWT集成

时间:2010-09-08 09:43:03

标签: gwt integration seam seam2

我正在尝试将GWT与SEAM集成。我跟着Docs并尝试运行

示例如下。

  1. 我使用Eclipse Galileo创建了一个GWT项目并创建了示例中给出的类

  2. 然后我将Seam 2.0.2 jar添加到构建路径

  3. 我使用eclipse UI使用Google GWT Compiler编译了应用程序。

  4. 最后我运行了该应用程序。

  5. 首先,我想知道上述步骤是否正确。运行应用程序后,我没有得到所需的结果。

    这也是将GWT与Seam集成的唯一方法吗?

    更新

    我已经使用ant运行此示例。但我练习的目的是通过eclipse ui运行它。

    我通过名称GWTTest创建了自己的项目,并尝试在Eclipse中重新创建示例

    UI。我注意到了一些事情。通过Eclipse UI进行的GWT编译在war文件中按名称gwttest创建一个目录。由ant创建的目录结构不同。

    在示例中,AskQuestionWidget getService函数中有一段代码如下

    String endpointURL = GWT.getModuleBaseURL() + "seam/resource/gwt";
    

    如何修改此代码以适合我的目录结构?

2 个答案:

答案 0 :(得分:2)

我们使用seam + richfaces + gwt,效果非常好。虽然我们用maven构建一切,但我想你也可以使用ant。一般的想法是在GWT开发模式下启动整个Web应用程序。您不必编译所有内容(在GWT编译器的情况下需要很长时间)。开发模式将按需编译所请求的资源。通过以这种方式运行GWT应用程序,您还可以调试客户端代码。

也可以调用GWT方法来响应接缝动作。

更新:

我可以详细说明我们的解决方案:

<强>的Maven

您的项目应配置为packaging: war。关于使用maven设置接缝的一些官方说明(也包括richfaces):

http://docs.jboss.org/seam/2.2.1.CR2/reference/en-US/html/dependencies.html#d0e34791

http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/SettingsForDifferentEnvironments.html

对于GWT,将以下部分添加到pom.xml

<dependency>
  <groupId>com.google.gwt</groupId>
  <artifactId>gwt-user</artifactId>
  <version>2.1.0</version>
  <scope>provided</scope> <!-- prevents from including this in war -->
</dependency>
<dependency>
  <groupId>com.google.gwt</groupId>
  <artifactId>gwt-dev</artifactId>
  <version>2.1.0</version>
  <scope>provided</scope> <!-- prevents from including this in war -->
</dependency>
<dependency>
  <groupId>pl.ncdc.gwt</groupId>
  <artifactId>gwt-servlet-war</artifactId>
  <version>2.1.0</version>
  <type>war</type> <!-- adds gwt-servlet.jar to your war, but not to your classpath -->
</dependency>

<!-- build section -->
<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
    </resource>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/client/**/*.java</include>
        <include>**/client/**/*.properties</include>
        <include>**/shared/**/*.java</include>
        <include>**/shared/**/*.properties</include>
        <include>**/*.gwt.xml</include>
      </includes>
    </resource>
  </resources>
  <testResources>
    <testResource>
      <directory>src/test/java</directory>
      <includes>
        <include>**/client/**/*.java</include>
        <include>**/client/**/*.properties</include>
        <include>**/shared/**/*.java</include>
        <include>**/shared/**/*.properties</include>
        <include>**/*.gwt.xml</include>
      </includes>
    </testResource>
  </testResources>
<plugins>
  <plugin> <!-- dirty hack for GWT issue #3439 - it is not really fixed -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
      <execution>
        <id>remove-javax</id>
        <phase>compile</phase>
        <configuration>
          <tasks>
            <delete dir="${project.build.directory}/classes/javax" />
          </tasks>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>gwt-maven-plugin</artifactId>
    <version>1.3.2.google</version>
    <configuration>
      <extraJvmArgs>-Xmx512M</extraJvmArgs>
      <gwtVersion>${gwt.version}</gwtVersion>
      <modules>
        <module>com.company.gwt.project.module.Module</module>
      </modules>
      <soyc>false</soyc>
      <draftCompile>${gwt.draft.compile}</draftCompile> <!-- you can control this with profiles -->
      <localWorkers>2</localWorkers><!-- in theory should speed things up on our quad CPU hudson -->
      <style>${gwt.style}</style> <!-- you can control this with profiles -->
    </configuration>
    <executions>
      <execution>
        <id>compile</id>
        <phase>prepare-package</phase>
        <goals>
          <goal>compile</goal>
        </goals>
      </execution>
      <execution>
        <id>gwt-test</id>
        <phase>integration-test</phase>
        <goals>
          <goal>test</goal>
        </goals>
        <configuration>
          <includes>**/*GwtTestSuite.java</includes>
        </configuration>
      </execution>
    </executions>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
      <archiveClasses>true</archiveClasses>
      <warSourceDirectory>src/main/webapp-empty</warSourceDirectory> <!-- just empty dir for workaround -->
      <webResources>
        <resource>
          <directory>src/main/webapp</directory>
          <excludes>
            <exclude>app.*</exclude> <!-- name of you gwt module(s) - rename-to in gwt.xml -->
            <exclude>WEB-INF/web.xml</exclude>
          </excludes>
        </resource>
        <resource>
          <directory>src/main/webapp</directory>
          <includes>
            <include>WEB-INF/web.xml</include>
          </includes>
          <filtering>true</filtering>
        </resource>
      </webResources>
    </configuration>
  </plugin>
</plugins>
</build>

这种配置应该产生与-seam和gwt编译的战争。如果您想在开发模式中使用此类项目,请将其放在pom.xml

<dependency>
  <groupId>com.xemantic.tadedon</groupId>
  <artifactId>tadedon-gwt-dev</artifactId>
  <version>1.0-SNAPSHOT</version>
  <scope>provided</scope>
</dependency>

并将-server com.xemantic.tadedon.gwt.dev.JettyLauncher添加到您的Google Web应用程序启动器中。这是maven友好的码头发射器,在某些情况下可能是必要的。

我希望它会对你有所帮助。您是否对gwt和richfacaes应用程序之间的通信感兴趣?

答案 1 :(得分:0)

如果您愿意,请查看&lt; SEAM_HOME&gt; / examples / remoting / gwt 。从那里开始运行(确保在使用之前安装了ANT)

ant

这是readme.txt文件

  

您可以在以下位置查看示例:   http://localhost:8080/seam-helloworld/org.jboss.seam.example.remoting.gwt.HelloWorld/HelloWorld.html

     

GWT:如果要重建GWT前端,则需要下载GWT,并配置build.properties以指向它。然后,您可以从此目录运行“ant gwt-compile”。它默认是预先构建的。 如果您想使用GWT托管模式,那么请从GWT文档中阅读所有相关信息!