部落客廣告聯播

2010年2月7日 星期日

2010年1月11日 星期一

JSF/Facelet中使用JSTL

在JSF內使用Facelet並要使用JSTL,要注意:

JSTL的URI是 http://java.sun.com/jstl/core,
不能寫成http://java.sun.com/jsp/jstl/core

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
"><html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich" 
xmlns:c="http://java.sun.com/jstl/core">
.....(略)

2010年1月3日 星期日

Apache HttpClient 4.x版

新的HttpClient 4.x版(API)在使用上與舊有的3.x版似乎有很大的差異,例如HTTP Post表單資料要設定form parameter時的用法:








//HttpClient 3.x
//......
HttpPost post = new HttpPost( URL );
post.getParams().setParameter("input1", "val1");
HttpResponse response=httpClient.execute(post);
//.....


//HttpClient 4.x
//......
HttpPost post = new HttpPost( URL );
List formparams = new ArrayList();
formparams.add(new BasicNameValuePair( "input1", "val1" ));
UrlEncodedFormEntity postEntity =
new UrlEncodedFormEntity(formparams, "UTF-8");
post.setEntity(postEntity);
HttpResponse response=httpClient.execute(post);
//.....


4.x似乎在資料結構與使用上繁雜許多,除此之外,還有許多不同之處,詳見
http://hc.apache.org/httpcomponents-client/tutorial/html/
然而在4.x版本如上使用3.x的寫法,跑得起來嗎?答案是可以,但是非常不幸的某些加進去的parameter會不見(到底是被其他parameter覆蓋掉還是內部運作時被誤刪掉不得而知), 所以建議使用4.x版還是參照著4.x的文件內的寫法來使用才好.....

2009年12月11日 星期五

WebApp從tomcat遷移到jboss的data source問題

最近將WebApp從tomcat包成war檔移到jboss上,但卻履出現deploy failed失敗訊息,
後來發現是data source問題,若web.xml裡面有<resource-ref>參考到資料來源的話,
就要多一個jboss-web.xml設定jndi連結,詳細請參考:
JBoss deployment failure - missing resource-ref element in web.xml
How to configure the Jira DataSource on JBoss

2009年11月18日 星期三

JPA 使用annotation設定self join結構的Entity bean

請參考:
http://detailfocused.blogspot.com/2009/05/jpa-self-join-table.html

JPA/hibernate 使用MySQL讓資料為UTF-8 encoding

使用JPA/hibernate時若要讓預設資料庫的encoding為utf-8,並預設engine為innodb,則設定my.cnf在[mysqld]區段加上:
default-character-set=utf8
default-collation=utf8_general_ci
default-storage-engine=innodb
另外,Datasource JDBC url要加上
?characterEncoding=UTF-8&useUnicode=true&connectionCollation=utf8_general_ci&characterSetResults=utf8

2009年10月15日 星期四

Liferay Portal繁體中文翻譯外掛

Liferay Portal是一套功能相當齊全的open source portal server,
但國內似乎不是很多人用,
然而其內附的介面中文翻譯說真的是辭不達意容易令人造成誤解(或不解),
我猜應該是外國人用翻譯軟體做的。
今小弟重新整理了zh_TW的中文翻譯,並做成了外掛,放在這裡,
歡迎有需要的人下載使用。

安裝方法 -
將此 WAR 檔案放到 ${liferay_home_dir}/deploy 後,
Liferay portal會自動進行安裝,
待安裝完後,請刪除Tomcat的Work內的所有檔案,重啟Tomcat。

關於如何使用Plug-in SDK 來修改語言 properties可參考:
http://wikis.sun.com/display/websynergy/
Customizing+Language.properties+using+hooks+plugin

2009年10月6日 星期二

OpenSSO安裝問題

將OpenSSO WAR檔上到了tomcat,開啟Web介面執行第一次設定時,
使用簡易設定(使用內建OpenDS)會發生NullPointException,
tomcat console會出現「@BASE_DIR@\install.log找不到檔案路徑」訊息,
經百般找尋解決方法,發現到windows 控制台設定地區選項先改為英語-美國,
確認後重啟tomcat,開啟Opensso Web介面,再次執行配置就OK了,
接著再次將地區選項設回來
,即可正常使用。

問題在於內建的OpenDS在叫用java的KeyTool工具產生金鑰時,
若我們當前使用者設定的地區非為英文語系者,則Keytool產生的提示訊息非為英文語系,
則此時便會無法正常產生金鑰,便會導致此失敗~~


詳請見:
http://markmail.org/message/5ne5lcjzoezxarlz#query:Error%20while%20attempting%20to%20generate%20a%20self-signed%20certificate%20ads-certificate%20in%20the%20trust%20store%20file%20config%2Fads-truststore%3A%20KeyStoreException%28Multi-prompt%20didn%27t%20match+page:1+mid:sjwepz5abub4nbmp+state:results

2009年9月18日 星期五

啟用tomcat內建之HTTPS

1. 到 %JAVA_HOME%\bin目錄, 執行:
keytool -genkey -alias tomcat -keyalg RSA
輸入keystore密碼: **********
您的名字與姓氏是什麼?
[Unknown]: Lili.Wang
您的組織單位名稱是什麼?
[Unknown]: myCompany
您的組織名稱是什麼?
[Unknown]: myCompany
您所在的城市或區域名稱是什麼?
[Unknown]: Taipei
您所在的州或省份名稱是什麼?
[Unknown]: Taiwan
該單位的兩字母國家代碼是什麼
[Unknown]: TW
CN=Lili.Wang, OU=myCompany, O=myCompany, L=Taipei, ST=Taiwan, C=TW正確嗎?
[否]: y

輸入的主密碼
(如果和 keystore 密碼相同,按回車): {{直接按enter}}

2. 編輯 tomcat 的conf\server.xml找到下面區段,取消註解,並加上紅字部分,紅字雙引號內的值與第一步的密碼要相同
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" keystorePass="**********"
clientAuth="false" sslProtocol="TLS" />

3. 重啟Tomcat

4. 開啟瀏覽器 https://localhost:8443 ,測試是否成功

(P.S. 要注意的是如果用admin1身份執行tomcat,則就要以admin1登入執行
keytool -genkey指令)

2009年9月17日 星期四

Tomcat 開啟 Access Log

Access Log會紀錄哪個時間哪個IP連入tomcat哪個網址,
tomcat是使用VALV的機制達成(類似filter),預設並無開啟,
若要開啟則須 修改conf\server.xml,找到內有一段
directory="logs" prefix="localhost_access_log." suffix=".log"
pattern="common" resolveHosts="false"/>
把前後包夾的註解符號拿掉後,存檔,重啟tomcat,便會在log目錄裡面看到
localhost_access_log.開頭的紀錄檔了。

2009年8月19日 星期三

tomcat server.xml設定全域的DataSource / mailSession資源

所謂全域就是指同一tomcat中的所有context

1. 在server.xml的<globalnamingresources>中加入新的<resource>元素。
2. 在context.xml的<context>中加入 <resourcelink name="mail/MailSession" global="mail/MailSession" type="javax.sql.DataSource"></resourcelink>

2009年8月4日 星期二

JAVA Cache System

Java Cache System 是Apache Jakarta下的一個子專案,
下為一篇介紹Java Cache System的文章:

Knowing Cache and Java Cache System(英文)