Category Archives: Java

Spring framework transaction control (Programmatic)

在一些比較早期的專案可能 application server、framework、java runtime 的版本都比較舊或不允許做太大幅度的變動,這時候以程式來控制 transaction 變成唯一的選擇,本文主要參考這個 網址

首先在 applicationContext.xml 設定 transaction 相關物件

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

<bean id=”transactionTemplate” class=”org.springframework.transaction.support.TransactionTemplate”>
<property name=”transactionManager” ref=”transactionManagerJDBC”></property>
</bean>

<bean id=”jdbcTemplate” class=”org.springframework.jdbc.core.JdbcTemplate”>
<property name=”dataSource” ref=”dataSource”></property>
</bean>

接著將以上物件 inject 到需要 transaction contorl 的 java class,這部份就不再細述,transaction code example 如下

transactionTemplate.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
try {

// do you works here
} catch (Exception e) {
status.setRollbackOnly();
}
}
});

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

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 整合筆記

首先 下載 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...

POI 處理 Excel 檔案

用以下的 API 處理 xls 檔有 65536 row 的限制

org.apache.poi.hssf.*

要解除以上限制必須改用以下 package 的 api 及 xlsx 格式的檔案

org.apache.poi.xssf.*

以 POI 3.7 release 為例,還必須將下列的 jar 加入 project

poi-ooxml-3.7-20101029.jar

poi-ooxml-schemas-3.7-20101029.jar

dom4j-1.6.1.jar

geronimo-stax-api_1.0_spec-1.0.jar

xmlbeans-2.3.0.jar

 

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