最近在一個 web 專案的 log file 持續出現以上的訊息,細節可以參考這個 網址,因為這個原因導致實際想看到的 log entry 很難找,因為都被這些不想要的訊息淹沒了。最後在這個 網址 找到解答,只要在 log4j 的設定檔加入以下這行即可。
log4j.logger.freemarker=INFO
首先要定義一個 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);
}
});
首先 下載 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(“儲存失敗!”);
}
}
});
這邊只記設定的重點以 JDBC 為例,Hibernate 的設定也很類似, 主要是 tx:annotation-driven。DAO 加上 annotation 指定要做 transaction 管理,注意 rollbackFor 的設定,一旦 method catch 到 exception,method 內的異動都會 rollback。
applicationContext.xml 設定
<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>
有時候我們會在一台 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%
只要將紅色字體的預設抬頭換掉即可。