我正在尝试将GWT与SEAM集成。我跟着Docs并尝试运行
示例如下。
我使用Eclipse Galileo创建了一个GWT项目并创建了示例中给出的类
然后我将Seam 2.0.2 jar添加到构建路径
我使用eclipse UI使用Google GWT Compiler编译了应用程序。
最后我运行了该应用程序。
首先,我想知道上述步骤是否正确。运行应用程序后,我没有得到所需的结果。
这也是将GWT与Seam集成的唯一方法吗?
更新
我已经使用ant运行此示例。但我练习的目的是通过eclipse ui运行它。
我通过名称GWTTest创建了自己的项目,并尝试在Eclipse中重新创建示例
UI。我注意到了一些事情。通过Eclipse UI进行的GWT编译在war文件中按名称gwttest创建一个目录。由ant创建的目录结构不同。
在示例中,AskQuestionWidget getService函数中有一段代码如下
String endpointURL = GWT.getModuleBaseURL() + "seam/resource/gwt";
如何修改此代码以适合我的目录结构?
答案 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文档中阅读所有相关信息!