Errai

http://erraiframework.org/

Docs : http://docs.jboss.org/errai/3.2.4.Final/errai/reference/html_single/

Quickstart

http://www.mastertheboss.com/jboss-frameworks/errai/errai-quickstart-tutorial

mvn archetype:generate \
-DarchetypeGroupId=org.jboss.errai.archetypes \
-DarchetypeArtifactId=bus-quickstart \
-DarchetypeVersion=2.2.0.Final \
-DarchetypeRepository=https://repository.jboss.org/nexus/content/groups/public/

Old GWT dev mode no longer supported in recent browsers so gwt:run won't work. Just deploy a WAR to Wildfly or EAP.

mvn archetype:generate \
-DarchetypeGroupId=org.jboss.errai.archetypes \
-DarchetypeArtifactId=cdi-quickstart \
-DarchetypeVersion=2.3.2.Final \
-DarchetypeRepository=https://repository.jboss.org/nexus/content/groups/public/
$ mvn -Pjboss7 clean install

Debug

http://docs.jboss.org/errai/latest/errai/reference/html_single/#_running_and_debugging_in_your_ide_using_gwt_tooling

If you wish to debug your client-side JavaScript as Java code from within Eclipse, 
you will need to use the SDBG plugin for GWT Super Dev Mode. 
More information can be found here:

http://sdbg.github.io/
you may be prompted for a "WAR Directory Selection". 
Choose the "web/target/m2e-wtp/web-resources" directory in your project root.

Super Dev Mode を Chrome で debug

直接 127.0.0.1:9876 にアクセスすると、「Dev Mode On」「Dev Mode Off」のブックマークレットが貰えるけど必要無いかな?

Trouble shooting

mvn gwt:run でブラウザにGWTプラグインがないと怒られる

古いバージョンの Errai/GWT の場合、 gwt:run ではなく、Wildfly/EAP にデプロイする

mvn gwt:run で起動しない
[ERROR] Unable to start embedded HTTP server
[ERROR] java.lang.NullPointerException
[ERROR] 	at org.jboss.errai.cdi.server.as.JBossServletContainerAdaptor.stopHelper(JBossServletContainerAdaptor.java:261)
[ERROR] 	at org.jboss.errai.cdi.server.as.JBossServletContainerAdaptor.<init>(JBossServletContainerAdaptor.java:155)
[ERROR] 	at org.jboss.errai.cdi.server.as.JBossServletContainerAdaptor.<init>(JBossServletContainerAdaptor.java:58)
[ERROR] 	at org.jboss.errai.cdi.server.gwt.EmbeddedWildFlyLauncher.start(EmbeddedWildFlyLauncher.java:80)
[ERROR] 	at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:632)
[ERROR] 	at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1054)
[ERROR] 	at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:836)
[ERROR] 	at com.google.gwt.dev.DevMode.main(DevMode.java:413)
export JBOSS_HOME=

を忘れるな

サーバー側からのイベントがクライアントの @Observes に送られない

CDI 1.0 (e.g. EAP 6.x) では errai-weld-integration のバージョンを 3.0.6.Final-redhat-1 にする

ポイント

  • Errai Bus という仕組みが肝。クライアント、サーバ間で非同期にメッセージのやり取りをする。
    • クライアントから "XXXX.erraiBus" というURLでアクセスされる。サーバ側は DefaultBlockingServlet が受け付ける
  • クライアント/サーバにまたがって CDI/Event をサポート。通常の Java EEアノテーションが使える