Author Archives: vincent

beans – Key xxxxx was not found on instance of java.util.LinkedHashMap

最近在一個 web 專案的 log file 持續出現以上的訊息,細節可以參考這個 網址,因為這個原因導致實際想看到的 log entry 很難找,因為都被這些不想要的訊息淹沒了。最後在這個 網址 找到解答,只要在 log4j 的設定檔加入以下這行即可。

log4j.logger.freemarker=INFO

 

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

DWR + JQuery plugin datatables 整合

首先要定義一個 datatables 的元件如下:

<table id=”myTable”>
<thead></thead>
<tbody></tbody>
</table>

DWR 比較尷尬的是一般 Ajax 元件都是要你提供一個 URL 他自己會去抓 json 格式資料回來,DWR 沒辦法提供你這樣的 URL,他是直接回傳 javascript 物件給你,幸好 datatables 也可以拿 javascript 物件資料來用。

首先 initialize datatable

$(document).ready(function() {
$(‘#myTable’).dataTable( {
aoColumns: [
{sTitle: “用戶”},
{sTitle: “電話”}
]
} );
} );

再來把 callback 收到的資料塞進 datatable 即可

myDWRInterface.query( {
callback: function(result) {
var dt=$(‘#myTable’).dataTable();
dt.fnClearTable();
dt.fnAddData(result,true);
}
});

 

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

DWR 整合筆記

首先 下載 jar 檔,放到 web application 的 lib 目錄。接著修改以下設定檔。
web.xml

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
dwr.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE dwr PUBLIC “-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN” “http://getahead.org/dwr/dwr20.dtd”>

<dwr>

<allow>

<create creator=”new” javascript=”myDWRclass”>
<param name=”class” value=”com.amjet.myDWRclass”/>
</create>

</allow>

</dwr>

myDWRclass.java

要有一個 method update 接收 javascript 傳來的 form 輸入資料,對 java 而言是收到一個 key/value map,method 回傳值會放到 callback function 的 argument。
Javascript 傳 form 輸入資料給 java 並接收回傳值

myDWRclass.update(dwr.util.getValues(“myform”), {
callback: function(error_code) {
if ( error_code >= 0 ) {
alert(“儲存成功!”);
} else {
alert(“儲存失敗!”);
}
}
});

 

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Spring framework transaction control

這邊只記設定的重點以 JDBC 為例,Hibernate 的設定也很類似, 主要是 tx:annotation-driven。DAO 加上 annotation 指定要做 transaction 管理,注意 rollbackFor 的設定,一旦 method catch 到 exception,method 內的異動都會 rollback。

applicationContext.xml 設定

<tx:annotation-driven transaction-manager=”myManager”/>

<bean id=”myManager” class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=”dataSource” ref=”myDS”/>
</bean>

<bean id=”myDS” class=”org.apache.commons.dbcp.BasicDataSource” destroy-method=”close”>
<property name=”driverClassName” value=”${myds.driver}”/>
<property name=”url” value=”${myds.url}”/>
<property name=”username” value=”${myds.username}”/>
<property name=”password” value=”${myds.password}”/>
</bean>

myDao.java (DAO interface 範例)
@Transactional(rollbackFor=Exception.class)
public interface myDao {

 

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

設定 Tomcat 視窗顯示的抬頭

有時候我們會在一台 server 上跑幾個 tomcat instance,例如一個是 Production,一個是 Develop,但是視窗抬頭一律都是 Tomcat 要找 log 有時不知道要去那個視窗找才對。

這個需求基本上要修改 catalina.bat,以 tomcat 7.0.26 為例,batch 檔的 line 268~269 行如下

if “%TITLE%” == “” set TITLE=Tomcat
set _EXECJAVA=start “%TITLE%” %_RUNJAVA%

所以只要指定一個 ‘TITLE’ 變數就可以改變執行視窗的抬頭。再以 tomcat 5.5.35 為例,batch 檔的 line 199~200 行如下

if not “%OS%” == “Windows_NT” goto noTitle
set _EXECJAVA=start “Tomcat” %_RUNJAVA%

只要將紅色字體的預設抬頭換掉即可。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...