Archive for GWT


[GWT] java.lang.ClassNotFoundException: com.google.gwt.user.client.rpc.RemoteServiceが発生する場合の対策

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

GWTを利用していて、「java.lang.ClassNotFoundException: com.google.gwt.user.client.rpc.RemoteService」が発生する事がある。

このエラーが発生する時は、antかmavenを利用していると思うが、多くの場合、文字通りクラスパスが正しくない。gwt-user.jarにも同じパッケージ名が存在するので、gwt-user.jarだけで十分な気がしてしまうが、実際には、gwt-servlet.jarが必要。これに結構ハマったのでメモしておく。

私の場合、mavenのリポジトリの構築時に、artifactIdを重複させていて、必要なjarが全部パッケージできていなかった。

—–以下、検索用のスタックトレース—–
java.lang.ClassNotFoundException: com.google.gwt.user.client.rpc.RemoteService
続きを読む »

  • Digg
  • del.icio.us
  • Facebook
  • Google
  • hatena
  • LinkedIn
  • Technorati
  • Tumblr
  • TwitThis

GWTのシリアライズエラー

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

gwt-logo

デフォルトコンストラクター(引数なしのコンストラクター)が無い時に、以下のようなエラーが出ます。

Type ‘自作のクラス名’ was not serializable and has no concrete serializable subtypes

  • Digg
  • del.icio.us
  • Facebook
  • Google
  • hatena
  • LinkedIn
  • Technorati
  • Tumblr
  • TwitThis

GWT 1.6でJNDIを使う方法

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

gw-00001

Google Plugin for Eclipseにも同包されている、Google Web Toolkitの最新バージョンである1.6からは、サーブレットコンテナがTomcatからJettyに変更されています。

これは、Google App EngineのサーブレットコンテナにJettyが採用されている事と関係があると思いますが、古いGWTのローカル環境では動作していたJNDIが動作しなくなったという問題があります。

これは、業務で利用されている方は非常にお困りでないかと思います。私は困りました。。。

以下、Google Plugin for Eclipseで作成したGWT プロジェクトでJNDIを使えるようにする方法。

  1. プロジェクトディレクトリ直下に[lib]ディレクトリを作成し、jetty-naming-6.1.11.jarjetty-plus-6.1.11.jarを、コピーしクラスパスを通す。
  2. jetty-web.xmlを[war/WEB-INF]にコピーする。(jetty-web.xmlの書き方は以下の通り)
  3. プロジェクト名を右クリック[Run As]-[Web Application]で一度実行し、Run設定ファイルを自動生成させる。(この設定を行いたいプロジェクトを過去に1回でも実行していればOK)
  4. プロジェクト名を右クリック[Run As]-[Run Configurations...]で表示されるダイアログの[Arguments]タブの"VM arguments"に[-Djava.naming.factory.initial=org.mortbay.naming.InitialContextFactory]を記入し、[Apply]ボタンをクリック
  5. 以後、この設定で実行するとJNDIを正しく設定ファイルからロードします。

・MySQL用の設定です。他のDBの設定方法はこちらから。

XML:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
  3.  
  4. <configure class="org.mortbay.jetty.webapp.WebAppContext">
  5.  
  6.     <new id="DSTest" class="org.mortbay.jetty.plus.naming.Resource">
  7.  
  8.         <arg>java:comp/env/jdbc/screenshot</arg>
  9.         <arg>
  10.             <new class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
  11.                 <set name="Url">jdbc:mysql://testdb.soba-project.com:3306/testservice</set>
  12.                 <set name="User">test</set>
  13.                 <set name="Password">test</set>
  14.             </new>
  15.         </arg>
  16.    </new>
  17.  
  18. </configure>

本番はTomcatで動作させたい人は、[war]ディレクトリに[META-INF]ディレクトリを作成して、従来のJNDI設定を書いたcontext.xmlを設置しておくと便利かも。

====================以下、検索用====================
続きを読む »

  • Digg
  • del.icio.us
  • Facebook
  • Google
  • hatena
  • LinkedIn
  • Technorati
  • Tumblr
  • TwitThis