Archive for 9 月, 2009


[GWT] GWTとRealm認証

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

サーブレットコンテナのRealm認証をGWTで利用したい場合、注意が必要だ。

通常、web.xmlに以下のように書いて、認証エリアを指定すると思うが、GWTで認証を利用したい場合、Ajax通信先のURLも認証エリアに指定する必要がある。URLは、web.xmlの中ののどこかに記載されているハズだ。

私の場合は、Ajax通信するまえのHTMLはちゃんと認証が掛って、正しいIDでログインしているにも関わらず、Ajax通信先のURLを認証エリアに指定していなかったために、Principal情報を取得できませんでした。

<web-resource-collection>
<web-resource-name>SobaEducationPortal</web-resource-name>
<url-pattern>/secure/*</url-pattern>
<!– ↓この指定を忘れるとうまくいかない –>
<url-pattern>/ajax/*</url-pattern>
</web-resource-collection>

この設定さえできてしまえば、Servlet側のプログラムは簡単だ。

RemoteServiceServletの拡張クラスで、getThreadLocalRequest()を利用しHttpServletRequestのインスタンスを取得すると後は、通常通りPrincipal情報を取得する事ができる。

HttpServletRequest request = this.getThreadLocalRequest();
Principal principal = request.getUserPrincipal();

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

[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