ユーザー追加などをバッチ処理する

Jetspeedでユーザーの追加や削除をバッチ処理したいという要望をよく聞いていたのですが、それをするサーブレットをPALポータルに追加してみました(次のリリースでは含まれている予定)。

http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/pal-portal/trunk/portal/files/components/portal/src/java/jp/sf/pal/portal/servlet/UserManagerServlet.java?rev=862&root=pal&view=markup

使い方は、ポータルの web.xml に以下のサーブレット定義を加える(必要に応じて、セキュリティの設定をする)。

<servlet>
<servlet-name>UserManagerServlet</servlet-name>
<servlet-class>jp.sf.pal.portal.servlet.UserManagerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserManagerServlet</servlet-name>
<url-pattern>/userManager</url-pattern>
</servlet-mapping>

あとは http://localhost:8080/palportal/userManager?name1=value1&… にアクセスする。以下の操作が可能である。

  • ユーザーの認証確認
  • ユーザーの追加
  • パスワードの更新
  • ユーザーの削除

出力フォーマットは以下のような感じ。

<?xml version="1.0" encoding="UTF-8" ?>
<results>
<status>文字列</status>
<message>文字列</message>
<result>
<name>文字列</name>
<value>文字列</value>
</result>
</results>

ユーザーの認証確認

URLで渡すパラメータ
リクエストパラメータ
action authenticate
username ユーザー名
password パスワード
出力結果のstatus
説明
success 正常終了(ユーザーが存在して、パスワードも正しい場合)
authentication-failed ユーザー認証に失敗した
invalid-parameter リクエストパラメータが正しくない
excluded-user 操作の対象外ユーザーへの処理を行った

ユーザーの追加

URLで渡すパラメータ
リクエストパラメータ
action create
username ユーザー名
password パスワード
出力結果のstatus
説明
success 正常終了(ユーザーが正常に作成された場合)
user-already-exists ユーザーが既に存在していて、作成できない
server-error ユーザー作成時にサーバー側でエラーが発生した
invalid-parameter リクエストパラメータが正しくない
excluded-user 操作の対象外ユーザーへの処理を行った

パスワードの更新

URLで渡すパラメータ
リクエストパラメータ
action update
username ユーザー名
password パスワード
出力結果のstatus
説明
success 正常終了(ユーザー情報が正常に更新された場合)
user-not-found 対象ユーザーが存在しない
server-error ユーザー更新時にサーバー側でエラーが発生した
invalid-parameter リクエストパラメータが正しくない
excluded-user 操作の対象外ユーザーへの処理を行った

ユーザーの削除

URLで渡すパラメータ
リクエストパラメータ
action update
username ユーザー名
password パスワード
出力結果のstatus
説明
success 正常終了(ユーザーが正常に削除された場合)
user-not-found 対象ユーザーが存在しない
server-error ユーザー削除時にサーバー側でエラーが発生した
invalid-parameter リクエストパラメータが正しくない
excluded-user 操作の対象外ユーザーへの処理を行った

以上。

MYFACES-434

1年以上ぶりにコメントが追加されたみたいで、それに今気がついた。そもそも、このバグを登録して、MyFacesのポートレット実装をよくしてあげようと思ったのが、2005年の8月ですか・・・。だいぶ時間が立っているな(結構、何だったか忘れ気味だけど)。結局、MyFacesチーム内にポートレットの話をできる人がいなくなり、話する人がいないので放置されるようになり、そんで、こっちも関わるのはやめた感じで今に至る。最新のコメントによると、DefaultAddResourceを置き換えたと言っているな(どういじったのかは興味がある)。MyFacesについては、かなり時間を使ったのだけど、結局はポートレットが分かっている人と話さないと無意味な時間を使うことになることを学んだから、直で議論してこないかぎりは放置かな・・・。

Preferencesにはまる

J2 では、JavaのPreferencesをベースにSPIを実装して使っていて、ユーザー属性とかデータを保存しているのだけど、そのSPIの中でEhcacheでキャッシュしたりで、複雑・・・。どうも、ehcache.xmlでキャッシュの生存時間が有効にならないなっと思って調べていて、J2->Spring->Ehcache みたい経路で使っていたりで、頭の中がかなり混乱してした。よく見てみると、getSpiの中でEhcacheのキャッシュをチェックしていないのが問題だったみたい。今回、Preferencesまわりもいろいろと見たけど、SPIで使っているAbstractPreferencesの中でキャッシュするのね(ここでもキャッシュしてくれるから頭の中が混乱するのだよ)。でも、まぁ、Javadocを見ていると、Preferences って、flush とかもあるから、キャッシュしない方がおかしいということか・・・。何か疲れたけど、すっきり 🙂