« StampPublisher で TaskMonitor を止める | トップページ | スタンプ箱の保存・読み込み »

2010年5月19日 (水)

JBoss AS 5.1.0.GA に乗り換え

OpenDolphin サーバを JBoss AS 4.2.3.GA から 5.1.0.GA にバージョンアップした。実運用して2週間ほど様子をみているが,今のところ特に問題なく動いている。
  • JBoss AS 5.1.0.GA のダウンロードページから,jboss-5.1.0.GA-jdk6 をダウンロードしてインストール。
  • postgresql-8.3-605.jdbc4.jar を $JBOSS_HOME/common/lib に入れる。
  • server は default で OK。
  • OpenDolphin の lib に入っている jboss 関連の jar を削除して,代わりに JBoss-5.1.0.GA の $JBOSS_HOME/client に入っている jar を全部と,$JBOSS_HOME/common/lib に入っている hibernate-core.jar を入れる。
  • org.jboss.security.Util.createPasswordHash を使っているメソッドにエラーが出るので,org.jboss.crypto.CryptoUtil.createPasswordHash に書き換える。
  • org.jboss.annotation.ejb.RemoteBinding を使っているメソッドにエラーが出るので,org.jboss.ejb3.annotation.RemoteBinding に書き換える。
  • org.jboss.annotation.security.SecurityDomain を使っているメソッドにエラーが出るので,org.jboss.ejb3.annotation.SecurityDomain に書き換える。
  • persistence.xml のヘッダーの書き換えが必要。
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
        version="1.0">
    
  • application.xml と jboss-app.xml は不要。(使いたい場合は,やはりヘッダを書き換えなければならない)
  • ejb/RemoteMainteServiceImpl.java と ejb/RemoteMainteService.java を削除。これは RemotePvtService という JNDI ネームを持っていて,本物の RemotePvtService とぶつかる。
  • delegater/UserDelegater.java に以下のように credential のコードを追加。これを入れないと,せっかく login したのに ejb にアクセスする度に再ログインしようとして失敗しまくる。(4.2.3 では良きに計らってくれていたようだ)

    delegater/UserDelegater.java

    public class UserDelegater extends BusinessDelegater {
        /**
         * ユーザ認証を行う。
         * @return  UserModel
         */
        public UserModel login(DolphinPrincipal principal, String password) throws Exception {
            
            String pk = principal.getFacilityId() + ":" + principal.getUserId();
    //pns^  JBoss AS 5.1.0 対応
            SecurityAssociation.setPrincipal(new SimplePrincipal(pk));
            SecurityAssociation.setCredential(password.toCharArray());
    //pns$
            UsernamePasswordHandler h = new UsernamePasswordHandler(pk, password.toCharArray());
            LoginContext lc = new LoginContext(getSecurityDomain(), h);
            lc.login();
    
            return getUser(pk);
    
  • postgres-ds.xml はそのまま使用可。
  • 構築して ear をデプロイ。

« StampPublisher で TaskMonitor を止める | トップページ | スタンプ箱の保存・読み込み »

OpenDolphin」カテゴリの記事