ognl.MethodFailedException: Method “setQty” failed for object com.amjet.sales.model.Order

最近寫一個 struts2 action 傳回 json 資料,測試時發生上面的錯誤。原因是頁面的 jquery 元件透過 post method 送出 “order.qty” 的參數,struts2 的 interceptor 在收到參數後想要設定 action 內 order 物件的 qty property,事實上我不需要 struts2 作 parse 參數及設定物件的動作,參數我想在 action 內用 request.getParameter() 自己接取處理。以下的 action 設定範例可以讓 interceptor 忽略開頭為 order 的參數,由於 struts2 預設也會忽略開頭為 dojo,struts 的參數,我們也一併保留:

<action name=”updateSell” method=”jsonUpdate”
class=”com.amjet.sales.web.action.SellAction”>
<interceptor-ref name=”defaultStack”>
<param name=”params.excludeParams”>^order\..*,dojo\..*,^struts\..*</param>
</interceptor-ref>

<result type=”json”>
<param name=”target”>jquery</param>
</result>
</action>

[ratings]

安裝印表機於無 X window Ubuntu server

由於 Ubuntu server 預設並未安裝 KDE 或 Gnome,在沒有 GUI 管理工具可運用的情況下找到這個方法。

首先安裝印表機驅動程式,以 HP 產品為例,需要安裝 hpijs。

接下來安裝 cups 列印管理系統,cups 預設只服務 localhost port 631,所以記得修改 /etc/cups/cupsd.conf 的網路設定及認證服務。

完成以上設定後只要連到 http://<cups host ip>:631 就可以新增印表機及管理印表作業。

[ratings]

Fedora 11 安裝筆記

Fedora 11 已經在 6/9 release 了,最近安裝測試了一下,順便作個筆記。

音效

跟前面版本一樣全面採用 pulseaudio,同樣網路上有不少人反應音效部份有問題。如果不想花太多時間找問題,還是可以退回去用 oss 或 alsa。

oss: 只要改 /etc/modprobe.d/dist-oss.conf,把最後一行前面的 # 拿掉

alsa: 必須移除 alsa-plugins-pulseaudio 套件

以上兩個步驟都必須重新開機。oss、alsa 要正常運作必須注意一下相關 device 的 permission,我之前文章介紹用 hal 設定 device permission 在 Fedora 11 仍然適用。

rsyslog 無法接收遠端設備 log

前面版本的 -r 參數已經不存在了,必須修改 /etc/rsyslog.conf 把以下2行前面的 # 拿掉

$ModLoad imudp.so
$UDPServerRun 514

x64 flashplayer

Adobe 已經提供測試版 64bit flash player 下載,把 libflashplayer.so 複製到 /usr/lib64/mozilla/plugins 目錄即可。

service 管理

不知道是不是我操作方式有問題,我在 XFCE 選單 Administration -> Services 叫出設定畫面,Enable、Disable、設定 run level 都無法生效,只好改用 chkconfig。

套件管理

yum 在安裝或更新套件時很容易碰到 mirror site 連不上或者連上後下載很慢,這時候可以考慮安裝 yum-plugin-fastestmirror 套件,先找出可用而且速度快的 mirror 再開始下載,大量更新時可以節省不少時間。

將預設的 sendmail 換成 postfix

當然要先安裝 postfix 套件,安裝完後要更改系統 MTA 相關設定,system-switch-mail 這個套件可以協助我們完成必要的設定,安裝完後執行 system-switch-mail 即可選擇已安裝的 MTA。

Serial console

有了 serial console 伺服器不用安裝顯示卡,不僅節省電力更少一個零組件故障的風險,好處多多。首先要修改 /boot/grub/menu.lst 第一行要 comment out,後面2行是新增的,這裡設定是以 COM1 為例

#hiddenmenu
serial –unit=0 –speed=38400 –word=8 –parity=no –stop=1
terminal serial

以下是 kernel 載入設定,粗體部份是 serial console 必須加入的設定

kernel /vmlinuz-2.6.29.4-167.fc11.x86_64 ro root=<UUID> quiet console=ttyS0,38400n8

另外要設定讓 ttyS0 接受 user 登入,以前是在 /etc/inittab,現在 Fedora 11 是透過 /etc/event.d/serial 自動設定,只要 kernel 有收到 console 的參數,那個 tty 就會自動啟動一個 agetty process 管理。唯一要注意的是如果兩端是用 null modem 系統 boot 起來後看不到 login prompt 在 /etc/event.d/serial 找以下這行

exec /sbin/agetty /dev/$1 $2 vt100-nav

改成

exec /sbin/agetty -L /dev/$1 $2 vt100-nav

cups web 界面執行管理功能時出現 426 Upgrade Required

web 界面預設執行管理作業時會導到 ssl 頁面,如果不想用 ssl 只要帳號、密碼認證的話可以修改 /etc/cups/cupsd.conf,加入以下這行

DefaultEncryption IfRequested

印表問題

從 windows client 送 job 到 cups 一直出現以下的錯誤訊息

(/usr/lib/cups/filter/foomatic-rip) crashed on signal 11

已經確定是有 bug 了,希望套件可以儘快更新

[ratings]

當速成或倉頡輸入法打不出字時

我一直是用速成輸入法在打中文,但是有一部份字拆不出前後碼的話,就要先用注音輸入後再轉回速成,這種情形不但不方便也影響到輸入的速度。最近在網路上看到一篇文章終於找到治本的方法,可以設定注音輸入法在輸入字後顯示該字的速成碼,這樣子不會拆的字用注音先打個幾次就會記住,慢慢的需要注音輸入法的次數也愈來愈少了,設定方法如下(Windows XP SP3):

  1. 控制台 開啟 地區及語言選項
  2. 選擇 語言 分頁再點選 文字服務和輸入語言詳細資料 按鈕
  3. 選擇要顯示拆字碼的輸入法再按 屬性
  4. 查詢組字字根 的方選取要顯示的輸入法即可

[ratings]

open source 弱點掃瞄 (vulnerability scanner) 工具

過去提到免費弱點掃瞄工具,nessus 絕對是首選。不過 nessus 在被收購後,從第3版起只提供 binary 下載,而且需要申請啟動碼,使用上有許多限制。目前比較常用 OpenVAS 是以 nessus 2.0 原始碼為基礎的軟體開發專案,提供一個免費使用的 nessus 替代品。

目前 ubuntu、fedora 都內建 OpenVAS 套件了,以最新發行的 ubuntu 9.04 為例只要安裝以下套件

openvas-server

由於 plugin (用來掃瞄弱點的 script) 尚未納入 ubuntu 套件,必須自行安裝,否則 sever 無法啟動,大略程序如下:

  1. 安裝 openvas-server-dev、libglib2.0-dev、libssl-dev、libgtk2.0-dev 套件
  2. 下載 plugin 套件
  3. 解開 plugin 套件,在目錄下執行 ./configure、make install
  4. 調整設定檔 plugin 目錄位置

啟動 server 前請先調整 /etc/default/openvas-server 內的參數,預設值是 listen 127.0.0.1 的 9390 port。

client 部份 ubuntu bundle 的是 1.0.4 版,可以勉強連上  2.0 的 server 但是運作不正常;Windows 目前提供 1.0.3 版下載,經測試無法與 2.0 的 server 建立連線。目前看來只有自行 compile 2.0.3 版的 client 才能正常運作了。

[ratings]