2007年12月12日 星期三

Reverse engineering on DB2

目標 : 使用非root權限但是有個別schema權限的account 將db dumup到別的db
  • 解法1 : PowerDesigner 12
  • 解法2 : DB2提供的玩具 EXPORT TO指令
  • 解法3 : hibernate-reverse-engineering
  • 解法4 : DB2 -> sql server - > DB2
  • 解法5 : toad for db2

2007年11月27日 星期二

weblogic 9.2 with Seam 2.0.ga

  1. Source : jboss-seam-2.0.0.GA\examples\jpa\resources-weblogic92

  2. Edit : modify web.xml from version="2.5" to version="2.4"
    weblogic 9.2不支援2.5

  3. Data Sources : examples-dataSource-demoPool , weblogic use pointbase
    (1) run PointBase Console.exe
    (2) driver : com.pointbase.jdbc.jdbcUniversalDriver
    url : jdbc:pointbase:server://localhost/demo
    user/pw : examples/examples

2007年8月23日 星期四

Seam 2.0 without JSF , RHDS release

Seam2.0之後,將把"JSF限定"拿掉,目前計畫整合ZK(zkseam.demo)和Wicket.

ZK是非常優秀的Ajax Framework,可以帶給用戶非常棒的AJAX體驗,但是架構上比起JSF還是不足,這要等待日後seam對其整合的如何.

Wicket的想法很棒,徹底把元件從網頁中拿掉,讓網頁設計師輕鬆許多,省了許多溝通上的麻煩,但是把網頁的TAG放到後端重組成自己的TAG,花費了許多額外的效率,這一點還沒上線過比較大專案,所以還不確定影響到什麼地步,改天找個案子來試試看.

期待很久的Red Hat Developer Studio終於發佈了,整合了JBossIDE和ExadelIDE並且加入Seam,可以說是JBoss最強的武器吧XD,想挑戰Rails的開發速度嗎?Try it!Seam-gen will make it come true!

Configure Richfaces3.1 with Seam2.0

英文寫的不好,看不懂請包涵XD.
Required : richfaces-ui-3.1.0-rcX-bin and jboss-seam-2.0.0.BETA1
  1. lib
    (1)Delete ajax4jsf-1.1.1.jar and richfaces.jar from jboss-seam-2.0.0.BETA1\lib.
    (2)Put richfaces-api-3.1.0-rcX,richfaces-impl-3.1.0-rcX,richfaces-ui-3.1.0-rcX into jboss-seam-2.0.0.BETA1\lib.
  2. modify jboss-seam-2.0.0.BETA1\build.xml
    (1)Delete all ajax4jsf*.jar from build.xml.
    (2)Find description="extra jars for the EAR" in build.xml
    ,delete include name="el-*.jar" and insert include name="richfaces-api*.jar"
  3. web.xml
    Ajax4jsf filter not needed, Seam Filter installs it for us.
    You can reference "booking" example.
  4. view/pages.xhtml
    Let's modify booking\view\home.xhtml.
    Add xmlns:rich="http://richfaces.ajax4jsf.org/rich" in html tag.
    Try rich:panel on booking\view\home.xhtml.
    Finally, build it ,you will see beauty richfaces.

2007年7月24日 星期二

最近JSF元件的發展

  • 眾所期待的myfaces core終於支援JSF1.2,不過Tomahawk目前尚未支援JSF1.2.
  • icefaces 1.6.0(final) release,正式支援第三方的元件Tomahawk,看來richfaces很有可能被取代掉.
  • WebGalileo Faces也加入open source的陣營,比icefaces更多元件,尚未支援JSF1.2,對Opera的支援有點差

目前客製化JSF的元件還是相當困難,如果可以做一套符合標準的TOOL來設計元件該有多好

2007年7月23日 星期一

Seam make JSF like Rails

很久沒更新BLOG了,最近忙著處理兵役的瑣事,還有找公司收留我XD,
來聊聊最近我開始玩的Seam,如果厭倦了瑣碎的XML設定方式,
Seam使用了許多優秀的annotations會讓妳感動到痛哭流涕,
並且簡化jBPM的使用方式,還有Seam-gen讓妳開發像Rails一樣快速,
presentation tier 使用icefaces,Richfaces,Myfaces和Seam Tags,最近Seam2.0 beta加入GWT,
persistence tier預設使用EJB3(許多人對EJB有很深的怨念XD),
請放心可以轉換成Hibernate,Seam是目前我看到最優秀的Framework,雖然還有許多BUG,但出身名家,不用擔心停產XD.目前玩的Seam2.0 beta有許多BUG尚未解決,期待Production版早點release讓我玩

2007年5月10日 星期四

Connect DB by ODBC on Rails

  1. Install
    rails 1.2 gem install -v=1.4 odbc-rails
    rails 1.1 gem install -v=1.3 odbc-rails

  2. Enabling Loading of the Adapter
    -> root\lib\ruby\gems\1.8\gems\activerecord-1.14.4\lib\active_record
         RAILS_CONNECTION_ADAPTERS = %w( mysql postgresql ... openbase odbc)

  3. Set up your Ap
    your ap -> config/environment.rb
                         require File.join(File.dirname(__FILE__), 'boot')
                         require 'odbc_adapter'
    -> config/database.yml
                         development:
                         adapter: odbc
                         dsn: 使用者資料來源名稱
                         username:
                         password:
                         host: localhost
                         encoding: utf8

2007年5月2日 星期三

[ICEfaces]支援myafecsTomahawk元件

1.myfaces lib
myfaces-core 1.1.5 & tomahawk v1.1.5

2.icefaces lib
ICEfaces-1.6.0-DR4

3.RI implementation會跟myfaces起衝突,把jsf-api.jar和jsf-impl.jar拿出

4.web.xml設定

(1)加入servlet
   servlet
           servlet-name Main Dispatch Servlet servlet-name
          servlet-class com.icesoft.faces.webapp.http.servlet.MainServlet servlet-class
          load-on-startup 1 load-on-startup
   servlet

   servlet-mapping
           servlet-name Main Dispatch Servlet servlet-name
           url-pattern *.iface url-pattern
   servlet-mapping

(2)將FacesServletExtensionsFilter所mapping的去除,
否則會造成myfaces和icefaces之間無法cast的錯誤

(3)加入context-param
context-param
   param-name
          com.icesoft.faces.standardRequestScope
   param-name
   param-value
          true
   param-value
context-param

(4)加入listener
listener
    listener-class
           com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Listener
    listener-class
listener

5.faces-config.xml設定
若有使用facelets,將view-handler改成com.icesoft.faces.facelets.D2DFaceletViewHandler
取代com.sun.facelets.FaceletViewHandler

參考資料:
Status of ICEfaces Support for MyFaces Tomahawk Components

2007年4月24日 星期二

[Richfaces] modalPanel can not render or not submit

(1)lib
版本使用ajax4jsf-1.1.1和richfaces-3.0.1

(2)使用h:form包在內部
rich:modalPanel id="mp"
            f:facet name="header"            f:facet
            f:facet name="controls"          f:facet
            h:form
            ...
            h:form
rich:modalPanel



尚未解決的問題:
借由datatable修改下筆資料時,modelPanel沒有繪製新的資料,而是保留之前的

2007年3月29日 星期四

Frails - Rails on JSF !!!

Frails官方 | 中文站

這一天終於等到了,爽!!

一直試著使用Rails的精神來撰寫 JSF,但總是寫的很累....

程式碼多到很複雜,還要寫一堆定義檔,一直在找尋一個可以媲美Rails開發速度的方案.

不論是使用好的IDE還是facelets的技術,還有各種不同的組件Richfaces.Myfaces,

終究還是無法跟Rails抗衡.

不過~~~~~Frails的出現即將對Web Framework帶來一大震撼!!

2007年3月24日 星期六

[Richfaces] Configure Skin

Richfaces內訂七種skin:
DEFAULT,emeraldTown,wine,japanCherry,ruby,classic,deepMarine.
可以即時變換Richfaces元件的外觀.

透過這兩個簡單的步驟,即可抽換skin
1.Configure your web.xml
context-param
param-name org.ajax4jsf.SKIN /param-name
param-value #{skinBean.skin} /param-value
/context-param

2.使用backing bean從view端接收使用者所選擇的參數,
注意skin的屬性名稱只包含這七種:
DEFAULT,emeraldTown,wine,japanCherry,ruby,classic,deepMarine

以下是實例:
1.SkinBean.java(包含skin屬性以及set和get)

主要是透過此方法取得skin屬性名稱
private String getSkinParam(){
FacesContext fc = FacesContext.getCurrentInstance();
String param = (String) fc.getExternalContext().getRequestParameterMap().get("s");
if (param!=null && param.trim().length()>0) {
return param;
} else {
return null;
}
}

2.skin.xhtml

h:form
h:outputLink blueSky f:param value="blueSky" name="s" /h:outputLink
h:outputLink classic f:param value="classic" name="s" /h:outputLink
/h:form

3.LIVE_DEMO


以下是我目前碰到的狀況:
1.stack overflow
起因:似乎是form過多
解法:在那個頁面不讓使用者選擇skin,而是從別的頁面選擇skin

2.null exception
起因:在request scope的頁面選擇skin,造成原本的bean從component tree已經消失
解法:把scope設定成session(尚未測試)

3.選完skin之後,頁面回到上一頁
起因:如果是以h:outputLink的方式來傳遞參數,會遇到導向的問題
解法:重新導向頁面

2007年3月23日 星期五

Update Rails1.1.6 into Rails1.2.3 的鳥事

由於架設在國外的主機RAILS更新版本,造成原本運作的系統掛點,真的是OOXX.....

多謝賴董幫我跟阿豆阿詢問,不然我也找不出什麼問題==

hostmonster目前版本:ruby 1.8.5, rails 1.2.3

而我去年開發是用rails 1.1.6,
以下是目前找到需要修改的部份,還沒搞完.......囧

1.首先必須升級 RubyGems,這可由 gem update --system 來達成 gem update rails.

2.將新版的boot.rb以及environment.rb覆蓋掉舊的.

3.修改form元件的格式....一樣醜 ==....
<% form_tag :action => "myAction" do%>
my
<% end %>



Enhance performance on Tomahawk with facelets

Reference Performance

最近注意到JSF的SESSION吃滿重的,雖然說可以設定其他的scope,

但有許多行為必須靠session來達成,只好試著把session的負擔減輕,

不過至少不會比Wicket肥==+
1.Add there tag in tomahawk.taglib.xml.
tag>
tag-name>document /tag-name>
component>
component-type>org.apache.myfaces.Document /component-type>
/component>
/tag>

tag>
tag-name>documentHead /tag-name>
component>
component-type>org.apache.myfaces.DocumentHead /component-type>
/component>
/tag>

tag>
tag-name>documentBody /tag-name>
component>
component-type>org.apache.myfaces.DocumentBody /component-type>
/component>
/tag>

2.Add this in web.xml.
context-param>
param-name>javax.faces.STATE_SAVING_METHOD /param-name>
param-value>server /param-value>
/context-param>

context-param>
param-name>org.apache.myfaces.ADD_RESOURCE_CLASS /param-name>
param-value>org.apache.myfaces.component.html.util.StreamingAddResource /param-value>
/context-param>

context-param>
param-name>org.apache.myfaces.COMPRESS_STATE_IN_SESSION /param-name>
param-value>false /param-value>
/context-param>

context-param>
param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION /param-name>
param-value>false /param-value>
/context-param>

context-param>
param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION /param-name>
param-value>20 /param-value>
/context-param>

3.Change html,head and body on web page.
t:document -> html
t:documentHead -> head
t:documentBody -> body

2007年3月13日 星期二

JSF IDE

以下這三者皆可視覺化設計JSF,根據個人的經驗提出以下見解

1.NETBEAN
優點:
開發速度很快,而且文件滿詳細的.
元件可以即時從design移動位置.
自訂許多很方便的元件,文件也說明的很清楚.

缺點:
我的小老婆有點吃力.
拉出來的CODE滿難懂,或許是希望開發著都從design端著手,像dreamweaverㄧ樣,少看code.
如果案子有問題還是要修改,必須改code,頭就非常大了.
需要花時間了解其自訂的元件如何使用.
支援AJAX的元件還不多.


2.Java Studio Creator
優點:
開發速度很快

缺點:
我的小老婆跑不動,所以直接出局XD


3.Exadel Studio Pro
優點:
支援的元件很多Ajax4jsf,Myfaces,ADFaces,facelets.
其公司就是Richfaces的開發者,研發出支援ajax的元件.

缺點:
我的小老婆有時候會當,將eclipse所用的記憶體調高到512M以上,即可解決.
元件無法從design移動,必須修改code來移動.
怎會沒有納入ICEfaces的元件,怕被搶生意?
不是所有元件都可以視覺化預覽..囧

結語:
個人推薦的是Exadel,最近已經整合到JBoss中,正名成Red Hat Developer Studio,並且不再收錢了!!
看來這次大老們都硬起來了,希望能爲JSF注入新的活力.
將Seam整合進去之後,RHDS能把Seam的code generator發揮到什麼境界?令筆者相當期待.
不過還在研發中,有興趣的人可以先玩Exadel Studio Pro

2007年3月5日 星期一

LOGOUT IN JSF

一般我們在登出時會只接把SESSION清除
FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
session.invalidate();

但是在JSF其session會紀錄額外的資訊,
如果移除掉會造成JSF的component tree無法render,
對此有兩種解法:

1.移除其相關的attribute就好
session.removeAttribute

2.使用filter來管理權限問題

2007年2月16日 星期五

facelets

錯誤訊息:Invalid byte 1 of 1-byte UTF-8 sequence
起因:無法顯示中文
解法:使用編輯器將編碼改成UTF-8 or big5

錯誤訊息:well form
起因:必須符合XML格式
解法:TAG必須含有結尾Ex:<> < / p >

錯誤訊息:Duplicate component ID '_id21:annoData:_id23' found in view
起因:元件的ID重覆
解法一:
依照錯誤訊息的Component Tree找出重覆的ID元件,
將該元件的ID重新命名成別的ID
解法二:
依照本身的案子,只要把outputText改成直接輸出而不使用outputText元件

錯誤訊息:Target Unreachable, 'anno' returned null
起因:myfaces和jsf的元件衝突
解法:刪除jsf-api.jar和jsf-impl.jar

錯誤訊息:Child count should be a multiple of the columns attribute
起因:t:column內太多元件
解法:刪除多餘的元件

錯誤訊息:點選之後出現空白頁
起因:以下兩道語法icefaces不支援,myfaces可以
meta http-equiv="refresh" content="2;url=./query/dorm_annoAction.do.jsp"
jsp:forward page="./query/dorm_annoAction.do.jsp"
解法:
若使用facelets+icefaces不使用外部來redirect

錯誤訊息:form送不出去
起因:panelGrid內不能render使用jsfc包含的元件commandButton
解法:不使用jsfc採用原本的語法

2007年1月13日 星期六

[Myfaces] Tomahawk

優點:
Ajax4jsf支援
文件好一點點

缺點:
元件對AJAX支援還不多
尚未支援JSF1.2

BUG:
1.inputDate
error1:若驗證沒過,inputDate輸入新的時間server抓不到,而是抓到ㄧ開始輸入的
解:拿其他元件代替(ex.inputCalendar)

error2:二月份時,元件會多加ㄧ變三月
解:
c:if test="${sessionScope.anno_end.month == 2}"
jsp:setProperty name="anno_end" property="month"
value="${sessionScope.anno_end.month-1}"

2.inputCalendar
error:使用outputText會少一天
解:
t:inputCalendar displayValueOnly="true" renderAsPopup="true"
readonly="true" value="#{date}"
取代
h:outputText value="#{date}"

3.panelTabbedPane
缺:與其他複雜元件共用很容易出錯
解:不要和複雜元件混用

4.inputHtml
缺:對IE支援差
解:改用TinyMCE(有支援中文化) or Dojo Editor

2007年1月12日 星期五

[Myfaces] Trinidad

優點:
Ajax4jsf支援
元件相當成熟
支援JSF1.2

多數都是以alert跳出視窗提示錯誤

時間的元件有用到FOCUS

可以改變外觀

特殊元件:
media.
showManyAccordion.(影藏或顯示更詳細的資訊)
client Date Restriction Validator(在CLIENT驗證時間的範圍)
Dialog Framework Demo(跳出視窗的互動)
addRow(dataModel增加一空白欄位)
totalRow(計算dataModel的total總值)
attributeChange_Implicit(全選/全部不選)
addRemoveReorderChildrenChange_Explicit(可以增加刪除元件)

Explicit Change registration(可以增加刪除元件)

progressIndicator(動態顯示進度)


缺點:
不能和MYFACES其他元件共用
不支援OPERA
效率差

[Myfaces] Tobago

優點:
驗證可以會將錯誤的部份框起來
有支援ALERT
可以變換外觀themes
時間的元件有用到FOCUS
 
tc:popup
tx:in suggestMethod類似autocomplete
tc:validateSubmittedValueLength
tx:time 使用上下捲動的選單

tc:sheet和tc:toolBar可以改變dataScroller的外觀


缺點:
只能有一render,與其他ㄉ元件共用性可能不好
MYFACES其他ㄉ確定不能共用
Ajax4jsf不確定(似乎不行)

Problem:Tomcat logs record not nomal

ASN:使用start.bat啟動

若用tomcat.exe啟動必需加參數,否則LOGS會不正常

2007年1月11日 星期四

Tomcat 5.5 Windows service HOW-TO

ref

1.installer
Remove the service named 'Tomcat5':tomcat5 //DS//Tomcat5

2.zip
service.bat remove