« 2011年2月 | トップページ | 2011年4月 »

2011年3月

2011年3月31日 (木)

JBoss AS 5.1.0.GA の起動時間短縮

JBoss AS の不要なサービスを止めて,どれくらい起動時間が早くなるか実験してみた。使ってないサービスは以下の通り。

  • JUDDI: deploy/juddi-service.sar
  • Key Generator: deploy/uuid-key-generator.sar
  • JMS: deploy/messaging, deploy/jms-ra.rar, deployers/messaging-definitions-jboss-beans.xml
  • Mail Service: deploy/mail-service.xml
  • JBoss WS: deploy/jbossws.sar, deployers/jbossws.deployer
  • Seam: deployers/seam.deployer, deployers/webbeans.deployer
  • その他
    deployers/bsh.deployer, deploy/hdscanner-jboss-beans.xml, deployers/xnio.deployer, deploy/profilesevice-secured.jar

以上を削除してテスト機で立ち上げてみたところ,起動時間が 58.9 秒から 41.5 秒に短縮された。

削除前

18:46:26,944 INFO  [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221634)] Started in 58s:939ms

削除後

19:25:48,803 INFO  [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221634)] Started in 41s:489ms

実験の結果,大した違いがないことが分かったので,実運用サーバでは default のままで運用することにした。

2011年3月20日 (日)

xen dom0 を debian squeeze にする

自宅サーバは debian lenny を xen の dom0 として使用し,domU で ubuntu 8.04 をサーバとして走らせていたが,dom0 を squeeze にアップグレードしてみた。ちなみに,業務用は dom0 も domU も ubuntu 8.04 である。ubuntu 10.04 は domU にはできるが,dom0 にはなれないらしいので,将来的に ubuntu 8.04 のサポートが切れたら,業務用も debian に乗り換えようと考えている。

  • xen カーネルのインストール
    # aptitude install xen-linux-system-2.6-xen-amd64
    以下の新規パッケージがインストールされます:
      bridge-utils{a} firmware-linux-free{a} gawk{a} libxenstore3.0{a}
      linux-image-2.6.32-5-xen-amd64{a} mime-support{a} python{a} python-minimal{a}
      python-support{a} python2.5{a} python2.5-minimal{a} python2.6{a}
      python2.6-minimal{a} xen-hypervisor-4.0-amd64{a} xen-linux-system-2.6-xen-amd64
      xen-linux-system-2.6.32-5-xen-amd64{a} xen-utils-4.0{a} xen-utils-common{a}
      xenstore-utils{a}
    
  • grub の設定。10_linux より 20_linux_xen が先に立ち上がるようにする。
    # mv /etc/grub.d/10_linux /etc/grub.d/50_linux
    # update-grub2
    
  • /etc/default/xendomains の設定
    /etc/default/xendomains
    XENDOMAINS_RESTORE=false
    XENDOMAINS_SAVE=""
    
  • /etc/xen/xend-config.sxp の設定
    /etc/xen/xend-config.sxp
    (network-script 'network-bridge antispoof=yes')
    
  • これで xen-kernel で立ち上がるようになる。
    $ uname -a
    Linux 2.6.32-5-xen-amd64 #1 SMP Tue Mar 8 00:01:30 UTC 2011 x86_64 GNU/Linux
    
  • sda1 というデバイス名が使えなくなったので,xvda1 に変更する
    $ cat /etc/xen/orca.cfg
    kernel  = '/xen-kernels/hardy-i386/vmlinuz-2.6.24-28-xen'
    ramdisk = '/xen-kernels/hardy-i386/initrd.img-2.6.24-28-xen'
    memory  = '1024'
    extra='xencons=tty'
    name        = 'orca'
    vif       = [ 'mac=00:16:3e:00:11:41' ]
    disk = [ 'phy:sda6,xvda1,w' ]
    root = '/dev/xvda1 ro'
    on_poweroff = 'destroy'
    on_reboot = 'restart'
    on_crash = 'restart'
    
  • 使用していた domU では /etc/fstab の変更が必要。
    $ cat /etc/fstab
    /dev/xvda1    /      ext3  errors=remount-ro       0  1
    /swap/swap0   none   swap  sw                      0  0
    proc          /proc  proc  rw,nodev,nosuid,noexec  0  0
    

2011年3月11日 (金)

初回実施月日の自動入力(2)

初回実施月日の自動入力が,スタンプの上にドロップしてスタンプを入れ替えた場合は効かなかった。スタンプ入れ替えは StampHolder#importStamp でしているので,そちらにも modify を加えた。

client/StampHolder.java

public void importStamp(ModuleModel newStamp) {
  // 「月 日」の自動挿入:replace の場合はここに入る
  // replace でない場合は,KartePane でセット
  StampModifier.modify(newStamp);

  setStamp(newStamp);
  kartePane.setDirty(true);
  kartePane.getTextPane().validate();
  kartePane.getTextPane().repaint();
}

2011年3月 9日 (水)

KarteBean#getEntryCollection("visit") の受付キャンセル対応

KarteBean#getEntryCollection("visit") はキャンセルした受付も返してしまうため,PatientVisitInspector にキャンセルされた受付が表示されてしまっていた。キャンセルした受付は EntryCollection に入れないようにした。

ejb/RemoteKarteServiceImpl.java

// 直近の来院日エントリーを取得しカルテに設定する
List latestVisits = em.createQuery("from PatientVisitModel p where p.patient.id = :patientPk and p.pvtDate >= :fromDate")
   .setParameter("patientPk", patientPk)
   .setParameter("fromDate", ModelUtils.getDateAsString(fromDate))
   .getResultList();
            
if (latestVisits != null && latestVisits.size() > 0) {
  List visits = new ArrayList();
  for (Iterator iter=latestVisits.iterator(); iter.hasNext() ;) {
    PatientVisitModel bean = (PatientVisitModel) iter.next();
//pns^ キャンセルされた受付は無視する
    if (bean.getState() != KarteStatus.CANCEL_PVT)
//pns$
    visits.add(bean.getPvtDate());
  }
  karte.addEntryCollection("visit", visits);
}

2011年3月 7日 (月)

シェーマエディタの機能アップ

SchemaEditor に機能を加えた。複数の点を打つ,網を描く,キャンバスの拡大縮小,回転,一部の切り抜き,アンドゥー・リドゥー機能,ツールウインドウの分離など,大幅にコードをいじった。

Schemaeditor

Schemaeditorei

Schemaeditorgianotti

ツールウインドウはキャンバスウインドウに
くっついているが,分離することもできる。

作成例
Erythema infectiosum

作成例
Gianotti-Crosti syndrome


修正履歴

  • 拡大で絵が欠けることがあるのを修正。(2011/3/20)
  • DrawTest.jar ファイルをダブルクリックするとサンプルが起動するようにした。(2011/3/20)
  • フォントサイズが保存されなかったのを修正。(2011/3/26)
  • 拡大・縮小で Stroke が拡大・縮小されないのを修正。(2011/4/15)
  • 小さく切り取った後に拡大すると SchemaCanvas が小さいままになるのを修正。(2011/4/15)

2011年3月 6日 (日)

Mac の JPopupMenu の不具合の回避(2)

Mac の JPopupMenu の不具合の回避で,極くまれに右クリック後にフリーズしてしまうことがあった orz。AWTEventListener をつける方法に変更してみた。これでまたしばらく様子を見る。

ui/MyJPopupMenu.java

public class MyJPopupMenu extends JPopupMenu {

  private AWTEventListener listener;
  private Component invoker;
  private int x;
  private int y;

  public MyJPopupMenu() {
    listener = new EventListener();
  }

  @Override
  public void show(Component invoker, int x , int y) {
    // 他のアプリケーションからクリックされたとき
    com.apple.eawt.Application.getApplication().requestForeground(true);

    this.invoker = invoker;
    this.x = x;
    this.y = y;
    Toolkit.getDefaultToolkit().addAWTEventListener(listener, AWTEvent.MOUSE_EVENT_MASK);
  }

  // MOUSE_RELEASED を検出する Listener
  private class EventListener implements AWTEventListener {
    public void eventDispatched(AWTEvent event) {
      if (event.getID() == MouseEvent.MOUSE_RELEASED) {
        superShow();
      }
    }
  }

  public void superShow() {
    Toolkit.getDefaultToolkit().removeAWTEventListener(listener);
    super.show(invoker, x, y);
  }

« 2011年2月 | トップページ | 2011年4月 »