久久乐国产综合亚洲精品,亚洲性在线看高清h片,亚洲一区综合在线播放http://m.tkk7.com/heweiya/category/6065.html直覺我的J2EE應用生涯,打造我心中的一把利劍。zh-cnWed, 20 Jun 2007 05:31:39 GMTWed, 20 Jun 2007 05:31:39 GMT60找到一個好用的UML建模工具-argoumlhttp://m.tkk7.com/heweiya/archive/2007/06/20/125328.html@家軍@家軍Wed, 20 Jun 2007 05:29:00 GMThttp://m.tkk7.com/heweiya/archive/2007/06/20/125328.htmlhttp://m.tkk7.com/heweiya/comments/125328.htmlhttp://m.tkk7.com/heweiya/archive/2007/06/20/125328.html#Feedback0http://m.tkk7.com/heweiya/comments/commentRss/125328.htmlhttp://m.tkk7.com/heweiya/services/trackbacks/125328.html      argouml下載地址
     我一眼就看上他的原因是:生成的用例和包圖可能直接生成JAVA代碼,而且準備無誤,這正是我要找的。
     我想:以后使用一些框架的話,可能由PD生成一些實體,然后Hibernate生成pojo等,加入到argouml,然后根據(jù)一個框架的特性生成一些包 和類.就等于詳細設計了吧.應該來說是比詳細設計還實用的東西.總比哪些WORD文檔好吧.還有讓人看不懂的概要設計.
    我想從技術出發(fā),這個是一條比較適用的路子.下班了.我明天將會匯報一下我使用的情況和一些范例.
    反過來又想像.這好象是一個組合的腳手架.好象ROR的零星操作步驟.應該學習.ROR畢竟是一個新生事物,JAVAEYE的推廣也需要一個時間.如果像我這樣的打工,混口飯吃的人還是專心的研究J2EE好一點.否則明天就沒有飯吃了.

    呵呵.我的文章可被JAVAEYE收回到水貼里了,可能自己的能力不如人吧,好好學習,天天向上,如果看客有什么好的工具和軟件生產思路,可以共同交流。


@家軍 2007-06-20 13:29 發(fā)表評論
]]>
三個JAVA文件完成你的MVC應用http://m.tkk7.com/heweiya/archive/2006/09/29/72760.html@家軍@家軍Fri, 29 Sep 2006 03:43:00 GMThttp://m.tkk7.com/heweiya/archive/2006/09/29/72760.htmlhttp://m.tkk7.com/heweiya/comments/72760.htmlhttp://m.tkk7.com/heweiya/archive/2006/09/29/72760.html#Feedback3http://m.tkk7.com/heweiya/comments/commentRss/72760.htmlhttp://m.tkk7.com/heweiya/services/trackbacks/72760.html/**======================================...  閱讀全文

@家軍 2006-09-29 11:43 發(fā)表評論
]]>
用二維數(shù)組管理好你零亂的狀態(tài)、分類和其它常用選項http://m.tkk7.com/heweiya/archive/2006/09/05/67785.html@家軍@家軍Tue, 05 Sep 2006 05:31:00 GMThttp://m.tkk7.com/heweiya/archive/2006/09/05/67785.htmlhttp://m.tkk7.com/heweiya/comments/67785.htmlhttp://m.tkk7.com/heweiya/archive/2006/09/05/67785.html#Feedback0http://m.tkk7.com/heweiya/comments/commentRss/67785.htmlhttp://m.tkk7.com/heweiya/services/trackbacks/67785.html 本次主要是把一些靜態(tài)的分類、狀態(tài)或者其它常用選項使用二維數(shù)組管理起來。如果你是一個使用JSTL或者STRUTS做前臺表現(xiàn)的話,你就更應該好好關注了.......  閱讀全文

@家軍 2006-09-05 13:31 發(fā)表評論
]]>
struts表單 vs JSTL表現(xiàn)之多條件查詢示例http://m.tkk7.com/heweiya/archive/2006/07/21/59383.html@家軍@家軍Fri, 21 Jul 2006 03:20:00 GMThttp://m.tkk7.com/heweiya/archive/2006/07/21/59383.htmlhttp://m.tkk7.com/heweiya/comments/59383.htmlhttp://m.tkk7.com/heweiya/archive/2006/07/21/59383.html#Feedback0http://m.tkk7.com/heweiya/comments/commentRss/59383.htmlhttp://m.tkk7.com/heweiya/services/trackbacks/59383.html??? 如果你是高手,你就知道這個標題有誤,是的,struts表單與JSTL表現(xiàn)沒有可比性,但是如果我們要在實現(xiàn)一個多條件的查詢頁面時,這個比較就比較有效了。
??? 我不妨比較一下利用struts表單的查詢實現(xiàn) 和 利用JSTL做為表現(xiàn)而實現(xiàn)的查詢功能有什么不同,讓讀者尋其方便。
??? 示例說明:
??? 用戶表-USER
??? username? 用戶名稱
??? loginid?? 登錄ID
??? sex?????? 性別
??? 一、利用struts表單的查詢實現(xiàn)
??????? 實現(xiàn)步驟:
??????? 創(chuàng)建多條件的序列化對象(java)->在struts.config當中申明actionform->Action當中實現(xiàn)->輸出結果
???????
????/**?The?value?of?the?simple?userName?property.?*/
????
private?java.lang.String?userName;
????
/**?The?value?of?the?simple?loginId?property.?*/
????
private?java.lang.String?loginId;
????
/**?The?value?of?the?simple?sex?property.?*/
????
private?java.lang.String?sex;
????
/**
?????*?Return?the?value?of?the?USER_NAME?column.
?????*?
@return?java.lang.String
?????
*/
????
public?java.lang.String?getUserName()
????{
????????
return?this.userName;
????}

????
/**
?????*?Set?the?value?of?the?USER_NAME?column.
?????*?
@param?userName
?????
*/
????
public?void?setUserName(java.lang.String?userName)
????{
????????
this.userName?=?userName;
????
/**
?????*?Return?the?value?of?the?LOGIN_ID?column.
?????*?
@return?java.lang.String
?????
*/
????
public?java.lang.String?getLoginId()
????{
????????
return?this.loginId;
????}

????
/**
?????*?Set?the?value?of?the?LOGIN_ID?column.
?????*?
@param?loginId
?????
*/
????
public?void?setLoginId(java.lang.String?loginId)
????{
????????
this.loginId?=?loginId;
????}
????
/**
?????*?Return?the?value?of?the?sex?column.
?????*?
@return?java.lang.String
?????
*/
????
public?java.lang.String?getSex()
????{
????????
return?this.sex;
????}

????
/**
?????*?Set?the?value?of?the?sex?column.
?????*?
@param?loginId
?????
*/
????
public?void?setSex(java.lang.String?sex)
????{
????????
this.sex?=?sex;
????}
<!-- struts_fonfig -->
???????
<form-bean?name="UserActionForm"?type="org.apache.struts.validator.DynaValidatorForm">
<form-property?name="userCondition"?type="com.antbee.searchCondition.UserFindCondition"?/>????????
????????
</form-bean>
Action當中
DynaValidatorForm?UserForm?=?(DynaValidatorForm)?form;
????????UserFindCondition?Condition?
=?(UserFindCondition)?UserActionForm
????????????????.get(
"userCondition");//?取得查詢條件
List?user?=?userManager.find(Condition,
????????????????(iCurPageNo?
-?1)?*?pageCon.PAGE_SIZE,?pageCon.PAGE_SIZE);//呵呵,加入了hibernate的分頁
具體實現(xiàn):
????public?List?find(UserFindCondition?Condition,?int?begin,
????????????
int?count)?{
????????StringBuffer?sql?
=?new?StringBuffer("from?User?as?a?where?1=1");??????????????
? ? ? ?
if?(Condition?!=?null)?{
????????????makeSql(sql,?shipmentFindCondition);
????????}
????????String?fsql?
=?sql.toString();
????????Query?query?
=?this.getSession().createQuery(fsql);
????????
if?(Condition?!=?null)?{
????????????setParameter(query,?Condition);
????????}
????????query.setFirstResult(begin);
????????query.setMaxResults(count);
????????List?tt?
=?query.list();
????????
return?tt;
????}

--
??? /**
??? ?* 根據(jù)條件生成一個sql語句
??? ?*
??? ?* @author 和
??? ?* @param sql
??? ?*??????????? 初始的sql語句(一般為select a from A as a where 1=1)
??? ?* @param condition
??? ?*??????????? 查詢的條件
??? ?* @return
??? ?* @version 1.0
??? ?*/
private
?void?makeSql(StringBuffer?sql, UserFindCondition?condition)?{
????????
if?(condition.getUsername()?!=?null
????????????????
&&?!condition.getUsername().toString().equals(""))?{
????????????sql
????????????????????.append(
"?and a.username like?:username");
????????}

????????
if?(condition.getLoginid()?!=?null
????????????????
&&?!condition.getLoginid(().equals(""))?{
????????????sql
????????????????????.append(
"?and a.loginid( =?:loginid(");
????????}

????????
if?(condition.getSex()?!=?null
????????????????
&&?!condition.getSex().equals(""))?{
????????????sql.append(
"?and a.sex =?:sex");
????????}


????}

????
/**
?????*?根據(jù)條件設置query的值
?????*?
?????*?
@author?和
?????*?
@param?query
?????*????????????一個hibernate的Query對象
?????*?
@param?condition
?????*????????????查詢的條件
?????*?
@return
?????*?
@version?1.0
?????
*/
????
private?void?setParameter(Query?query, UserFindCondition?condition)?{

????????
if?(condition.getUsername()?!=?null
????????????????
&&?!condition.getUsername().equals(""))?{
????????????query.setString(
"username",?"%"?+?condition.getUsername()
????????????????????
+?"%");
????????}

????????
if?(condition.getLoginid()?!=?null
????????????????
&&?!condition.getLoginid().equals(""))?{
????????????query.setString(
"loginid",?condition.getLoginid());
????????}

????????
if?(condition.getSex()?!=?null
????????????????
&&?!condition.getSex().equals(""))?{
????????????query.setString(
"sex",?condition.getSex());
????????}?????

????}

呵呵,笑死人了,這個方法很通用,我才在我的第二個項目當中才用到,真是可惜,當然了,使用Actionform有一個毛病就是對date類型要轉換成STRING類型來處理,這是actionform的一個死穴。還有對Actionform不能夠重置,只能夠回來從前。不知道這群設計者怎么想的,真是由于這一點,所以我們有必要使用最原始的方法來解決問題了。使用頁面當中的input,我們來拼request如何?
?? 二、利用JSTL做為表現(xiàn)而實現(xiàn)的查詢功能
???? 步驟:在JSP頁面布置很多的input,當然,你可以加入value了。(省略了...)
?????????? 創(chuàng)建查詢條件的序列化對象(同樣user.java)
?????????? 在action當中拼個condition了,做為查詢條件,后面的處理類同第一種方式。
?????UserSearchCondition?userSearchCondition?=?null;
?????userSearchCondition?
=?makeUserSearchCondition(request);

private UserSearchCondition?makeUserSearchCondition(HttpServletRequest?request)?throws?Exception{
???????
UserSearchCondition userSearchCondition?=?new?OrderSearchCondition();
????????String username
=?request.getParameter("Username");
????????String loginid
=?request.getParameter("Loginid");
????????String sex
=?request.getParameter("Sex");??
???????

????????????????
????????
if(username!=?null?&&?!username.trim().equals("")){
???????????
usernameSearchCondition.setUsername(username);
????????}
????????
????????
if(loginid? !=?null?&&?!loginid.trim().equals("")){
??????????? userSearchCondition.set
Loginid (loginid );
????????}
????????
????????
if(sex !=?null?&&?!sex.trim().equals("")){????????
??????????? userSearchCondition.setSex(
sex);
????????}??????

????????
????????
return userSearchCondition;
????}

???? 以后的方法,我就不用再做舉例了吧,可以參考如上第一種方法的實現(xiàn).
???? 第二種方法的好處就是:在頁面上比較好控制,比如重置,又比如日期性數(shù)據(jù)等。
???? (所有過程當中的代碼沒有經過測試,只是說明這種方法而已)


@家軍 2006-07-21 11:20 發(fā)表評論
]]>
hibernate的延遲加載通用方法http://m.tkk7.com/heweiya/archive/2006/07/21/59366.html@家軍@家軍Fri, 21 Jul 2006 02:09:00 GMThttp://m.tkk7.com/heweiya/archive/2006/07/21/59366.htmlhttp://m.tkk7.com/heweiya/comments/59366.htmlhttp://m.tkk7.com/heweiya/archive/2006/07/21/59366.html#Feedback1http://m.tkk7.com/heweiya/comments/commentRss/59366.htmlhttp://m.tkk7.com/heweiya/services/trackbacks/59366.html呵呵,在忙一個項目,潛水很久,現(xiàn)在冒個泡:
(本文適用在struts+spring+hibernate3上做開發(fā)的蟲蟲們)
類名:HibernateUtil

package?com.antbee.j2eemodel.util;

import?java.lang.reflect.InvocationTargetException;
import?java.lang.reflect.Method;
import?java.util.Collection;
import?java.util.Iterator;

import?org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public?class?HibernateUtil?extends?HibernateDaoSupport?{

/**
*?初始化POJO類
*?
@author?@家軍
*?
@param?object?POJO對象
*?
@param?methodName?方法名稱
*?
@return
*?
@version?1.0
*/
public?void?initialize(Object?object,?String?methodName)?throws?SecurityException,?NoSuchMethodException,?IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

String[]?methodArray?
=?methodName.split("\\.");
Method?method?
=?null;
Object?initializeObject?
=?object;

if(methodArray.length?==?1){
this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
method?
=?object.getClass().getMethod(methodArray[0],?new?Class[]?{});
initializeObject?
=?method.invoke(initializeObject,?new?Object[]?{});
this.getHibernateTemplate().initialize(initializeObject);
}
else{
for(int?i=0;i<methodArray.length;i++){
method?
=?initializeObject.getClass().getMethod(methodArray[i],?new?Class[]?{});
initializeObject?
=?method.invoke(initializeObject,?new?Object[]?{});
}
this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
this.getHibernateTemplate().initialize(initializeObject);
}
}

/**
*?初始化POJO類
*?
@author?@家軍
*?
@param?object?POJO對象
*?
@param?methodName?方法名稱數(shù)組
*?
@return
*?
@version?1.0
*/
public?void?initialize(Object?object,?String?methodName[])
throws?SecurityException,?NoSuchMethodException,
IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

for?(int?i?=?0;?i?<?methodName.length;?i++)?{
String[]?methodArray?
=?methodName[i].split("\\.");
Method?method?
=?null;
Object?initializeObject?
=?object;

if(methodArray.length?==?1){
this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
method?
=?object.getClass().getMethod(methodArray[0],?new?Class[]?{});
initializeObject?
=?method.invoke(initializeObject,?new?Object[]?{});
this.getHibernateTemplate().initialize(initializeObject);
}
else{
for(int?j=0;j<methodArray.length;j++){
method?
=?initializeObject.getClass().getMethod(methodArray[j],?new?Class[]?{});
initializeObject?
=?method.invoke(initializeObject,?new?Object[]?{});
}
this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
this.getHibernateTemplate().initialize(initializeObject);
}
}

}

/**
*?初始化POJO類
*?
@author?@家軍
*?
@param?object?POJO對象
*?
@return
*?
@version?1.0
*/
public?void?initialize(Object?object)?throws?SecurityException,?NoSuchMethodException,?IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{
this.getHibernateTemplate().lock(object,?org.hibernate.LockMode.NONE);
this.getHibernateTemplate().initialize(object);
}

/**
*?初始化POJO類
*?
@author?@家軍
*?
@param?collection?POJO對象集合
*?
@param?methodName?方法名稱數(shù)組
*?
@return
*?
@version?1.0
*/
public?void?initialize(Collection?collection,?String?methodName[])
throws?SecurityException,?NoSuchMethodException,
IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

for(Iterator?i=collection.iterator();i.hasNext()Wink{
Object?object?
=?i.next();
this.initialize(object,methodName);
}
}

/**
*?初始化POJO類
*?
@author?@家軍
*?
@param?collection?POJO對象集合
*?
@param?methodName?方法名稱
*?
@return
*?
@version?1.0
*/
public?void?initialize(Collection?collection,?String?methodName)
throws?SecurityException,?NoSuchMethodException,
IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

for(Iterator?i=collection.iterator();i.hasNext()Wink{
Object?object?
=?i.next();
this.initialize(object,methodName);
}
}
}?

這個方法的好外是:可以不在hbm.xml的文件當中,指定為lazy=true這個模式,可以直接使用。使用方法如下:
如果你使用SPRING,則需要把hibernateUtil注入其中:
?<bean?id="hibernateUtilTarget"?class="com.antbee.j2eemodel.util.HibernateUtil">
<property?name="sessionFactory">
<ref?local="mssqlSessionFactory"?/>
</property>
</bean>

<bean?id="hibernateUtil"?parent="BaseTransactionProxy"?class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property?name="target">
<ref?local="hibernateUtilTarget"?/>
</property>
</bean>
<!--配置基礎事務-->
<bean?id="BaseTransactionProxy"?class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"?abstract="true">
<property?name="transactionManager">
<ref?bean="mssqltransactionManager"?/>
</property>
<property?name="proxyTargetClass">
<value>true</value>
</property>
<property?name="transactionAttributes">
<props>
<prop?key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>?

使用示例:
如果你使用STRUTS,則需要這樣:
List?what_ur_view?=?XXXManager.find(.);//取得你要展示的對象
//如果這個對象當中有延遲加載的對象(SET)時,則需要如下加載就行
this.hibernateUtil.initialize(what_ur_view,?"getTbShipmentSale");
//其中getTbShipmentSale是其對象(SET也可以操作)?

在頁面顯示的時候,你就可以使用JSTL如下表述:
<c:out?value="${what_ur_view.tbShipmentSale.goodsReceivePersonPhone}"?/>//呵呵,是不是很爽呀。?

同樣的方法,我們也可以對一個SET在頁面進行顯示,方法如下:
<c:forEach?items="${what_ur_view.tbShipmentProductMappingSet}"?var="ProductMapping"?varStatus="status">
<c:out?value="${ProductMapping.productNum}"?/>
<c:out?value="${ProductMapping.tbOutOfWarehouse.outOfWarehouseNum}"?/>
</c:forEach>
//呵呵,支持多級嵌套,?

在ACTION當中則需要加入
hibernateUtil.initialize(what_ur_view.getTbShipmentProductMappingSet(),
new?String[]?{?"getTbProduct",?"getTbOutOfWarehouse",
"getTbProductConfigure"?});?
呵,如果你要是在HIBERNATE當中使用,這個就太簡單了吧。

怎么樣?呵呵呵,
從此,我對STRUTS的標簽深惡痛絕,而對JSTL情有獨鐘了。

@家軍 2006-07-21 10:09 發(fā)表評論
]]>
TOMCAT內存溢出之解決方法http://m.tkk7.com/heweiya/archive/2006/03/10/34659.html@家軍@家軍Fri, 10 Mar 2006 06:15:00 GMThttp://m.tkk7.com/heweiya/archive/2006/03/10/34659.htmlhttp://m.tkk7.com/heweiya/comments/34659.htmlhttp://m.tkk7.com/heweiya/archive/2006/03/10/34659.html#Feedback0http://m.tkk7.com/heweiya/comments/commentRss/34659.htmlhttp://m.tkk7.com/heweiya/services/trackbacks/34659.html問題表現(xiàn):

當用戶執(zhí)行一個大數(shù)據(jù)的應用時(凈字節(jié)碼量約為5M)時,系統(tǒng)會提示出錯:

前臺錯誤為:HTTP Status 500-Dispatch[EAITool] to method listCurTree retrun an exception

(以下省略)

………………………………………………………

………………………………………………………

后臺錯誤為:java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start(Native Method)
        at org.apache.catalina.loader.WebappLoader.notifyContext(WebappLoader.ja
va:847)

(以下省略)

………………………………………………………

………………………………………………………

問題分析:

   由于TOMCAT內存溢出而引發(fā)的問題,主要原因是JVM的虛擬內存默認為128M,當超過這個值時就把先前占用的內存釋放,而導致好象TCP/IP丟包的假象,出現(xiàn)HTTP500的錯誤?! ?/span>
     
解決方法主要是加大TOMCAT可利用內存,并在程序當中加大內存使用。

解決方法:

方法:加大TOMCAT可利用內存:
  在TOMCAT的目錄下,也就是在TOMCAT41/bin/catalina.bat文件最前面加入
  set JAVA_OPTS=-Xms800m -Xmx800m
  表現(xiàn)效果是當你啟動TOMCAT時,系統(tǒng)內存會增加近800M使用

操作方法:
  1)、先關掉WINDOWS服務當中的TOMCAT4服務。
  2)、再找到TOMCAT/BIN目錄下startup.bat,雙擊打開它,你會發(fā)現(xiàn)現(xiàn)WINDOWS內存占用會增加近800M
  3)、執(zhí)行程序,因為是TOMCAT重新編譯程序,所以第一次會比較慢。

結論:

經過測試,我們得出如下數(shù)據(jù):

系統(tǒng)傳輸約2000條數(shù)據(jù)時,大約近12M的凈數(shù)據(jù)(不壓縮時),系統(tǒng)輔助運行的內存大約占用150M左右的空間,也就是近200M的內存占用,而我們擴大了近800MJAVA內存使用,這對于業(yè)務本身來說是足夠了。所以你們不用擔心大數(shù)據(jù)量的傳遞問題。

基于JAVA虛擬機的原理,JAVA自動有垃圾回收機制,也就是在你對一些內存長時間不使用時(近2分鐘,取決于使用頻度和優(yōu)先級等),就會自動垃圾回收,從而釋放不用的內存占用。



@家軍 2006-03-10 14:15 發(fā)表評論
]]>
MYSQL BUG #5020及解決方法http://m.tkk7.com/heweiya/archive/2006/01/18/28483.html@家軍@家軍Wed, 18 Jan 2006 06:48:00 GMThttp://m.tkk7.com/heweiya/archive/2006/01/18/28483.htmlhttp://m.tkk7.com/heweiya/comments/28483.htmlhttp://m.tkk7.com/heweiya/archive/2006/01/18/28483.html#Feedback0http://m.tkk7.com/heweiya/comments/commentRss/28483.htmlhttp://m.tkk7.com/heweiya/services/trackbacks/28483.html 描述:
   MYSQL網站BUG公示
錯誤MESSAGE:
    
Connection was closed due to the following exception:

** BEGIN NESTED EXCEPTION ** 

java.sql.SQLException
MESSAGE: Communication link failure: java.net.SocketException, underlying cause: Software caused connection abort: recv failed

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: Software caused connection abort: recv failed

STACKTRACE:

java.net.SocketException: Software caused connection abort: recv failed
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.
read(SocketInputStream.java:129)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:
183)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:
222)
    at java.io.BufferedInputStream.
read(BufferedInputStream.java:277)
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:
1385)
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:
1532)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:
1923)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:
1163)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:
1272)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:
2236)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:
1555)
    at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:
89)
    at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:
880)
    at net.sf.hibernate.loader.Loader.doQuery(Loader.java:
273)
    at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:
138)
    at net.sf.hibernate.loader.Loader.doList(Loader.java:
1063)
    at net.sf.hibernate.loader.Loader.list(Loader.java:
1054)
    at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:
854)
    at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:
1554)
    at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:
1531)
    at net.sf.hibernate.impl.SessionImpl.
delete(SessionImpl.java:1678)
    at net.sf.hibernate.impl.SessionImpl.
delete(SessionImpl.java:1664)
出錯原因:
   我們的系統(tǒng)一天24小時運行,但在夜晚的時候是沒有人連接的,因此Socket連接就超時了。早上嘗試做任何事情(比如:登錄)都將以失敗告終,除非我們關閉連接或者重新建立連接。3.0.11后才會發(fā)生這種情況。
   現(xiàn)在我們使用的MYSQL版本號為4.016,問題一樣。
專家建議:
   [Mark Matthews],翻譯如下:
   注意:我不贊成Autoreconnect功能,在以后的發(fā)行版本中,它最終會被移除。在這種特殊情況下, 它不起作用的原因是:在3.0.11以后,autoreconnect的方法變得更加安全了并且和阿utoCommit狀態(tài)有關聯(lián),這樣的話就能使當前‘in-flight’事務失?。ㄈ绻阍谑『?,再次試圖連接事務,就會重新被連接)。請查看相關解釋文檔,文檔的修復故障中包括如何正確實用這個屬性。無論在哪種情況下,   如果TCP/IP在沒有連接的情況下并且還不會冒著數(shù)據(jù)庫被癱瘓的危險,是沒有百分之百的方式使得JDBC驅動器被自動重連接的,這也是為何要移除Autoreconnect功能的原因。不管網絡發(fā)生什么情況,    JDBC 都不會說明這個連接是否處于連接狀態(tài)。JDBC driver 客戶端負責處理網絡故障,只有應用程序本身(實際上是應用程序的開發(fā)者)知道如何正確應對事務失敗的情況。在服務器上過期的‘Waittimeout’基本上是服務器給與的強制性網絡故障。你通過把‘Waittimeout’設置的高點兒就可以改正它,盡管如此,作為一個開發(fā)者,你的代碼應該包含相關的異常處理并采取適當?shù)幕謴痛胧?,不要都把它們傳到調用堆中。
   連接錯誤總是有一個SQL狀態(tài)‘08’。如果你發(fā)現(xiàn)它的話,你可以再連接一次并重試事務(如果是適當?shù)脑挘?/span>
   不管什么原因,如果這樣不起作用的話,配置你的連接池來測試是否處于連接狀態(tài)并且那些長時間閑置連接(所有的連接池都能這樣做,但是它們的配置取決于池子)。
作者說明:在MYSQL4.1以后的版本當中,沒有“wait_timeout”變量,由
interactiveClient代替
參考資料:http://dev.mysql.com/doc/connector/j/en/cj-configuration-properties.html
     [
Kirk Wylie]:翻譯如下:
   
如果有一個事務在運行的話,就能得到一個特別簡單的例子:
    
---如果連接在autoCommit模式下,autoReconnect是安全的。
    
---如果連接不在autoCommit模式下,但是沒有打開的事務,autoReconnect是安全的。(因為連接可能在池在里面)
    ---如果連接不在autoCommit模式下,有打開的事務,這樣就會拋出異常。
   
這樣會解決你不在autoRecom\nnect模式下的憂慮并且會保留應用程序的功能性。
   盡管如此,在它改變的時候,在改變日志中沒有任何記錄說明發(fā)生了改變,這點令我很煩。由于這種改變很可能破壞我的應用程序,這種變化因該添加到CHANGE文件中。

  如下是我個人的做法:
  (STRUTS+SPRING+HIBERNATE)
  1、把mysql的變量
interactiveClient由 默認的28800(8個小時)延長。并告知用戶多長時間后,重新啟動TOMCAT服務器。不過,MYSQL5.0.12版本以前的所有版本,只要你設置成 了默認語言為GBK,所有對interactive_timeout(wait_timeout)的時候如何設置,重新連接或者重新啟動MYSQL后,都 是28800,現(xiàn)在我使用的5.0.18后,使用GBK,沒有問題。
  2、在HIBERNATE當中加入:
   
..
<property name="hibernate.connection.url">jdbc:mysql://192.168.100.111/eai?autoReconnect=true</property>
<property name="enableDeprecatedAutoreconnect">true</property>
<!--  如下的語句是使用第三方的DBCP來建立連接池 -->
<property name="dbcp.maxActive">100</property>
<property name="dbcp.whenExhaustedAction">1</property>
<!--  看到了沒有,這個maxWait一定要大于MYSQL默認的28800(秒) -->
<property name="dbcp.maxWait">30000</property>
<property name="dbcp.maxIdle">10</property>

<property name="dbcp.ps.maxActive">100</property>
<property name="dbcp.ps.whenExhaustedAction">1</property>
<property name="dbcp.ps.maxWait">30000</property>
<property name="dbcp.ps.maxIdle">10</property>
..
    
 如上兩種方法均可,推薦大家使用第二種方法,來遮擋一下MYSQL的BUG。
如果有不對之處,請大家提出自己的見解。



@家軍 2006-01-18 14:48 發(fā)表評論
]]>
史上最簡單的struts+spring+hibernate配置實例[修訂版]http://m.tkk7.com/heweiya/archive/2005/12/19/24595.html@家軍@家軍Mon, 19 Dec 2005 03:27:00 GMThttp://m.tkk7.com/heweiya/archive/2005/12/19/24595.htmlhttp://m.tkk7.com/heweiya/comments/24595.htmlhttp://m.tkk7.com/heweiya/archive/2005/12/19/24595.html#Feedback1http://m.tkk7.com/heweiya/comments/commentRss/24595.htmlhttp://m.tkk7.com/heweiya/services/trackbacks/24595.html本文不關心必須的JAR包,這個東東在網上能夠找到很多,本文只關心如何配置,才能夠讓STRUTS SPRING HIBERNATE和MYSQL相關連。
開發(fā)環(huán)境:wsad5.1
Spring-Version: 1.1.4
Struts Framework 1.1
Hibernate-Version: 2.1.7

<web.xml>
---------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp">
<display-name>MVC_BPEL_MODELWeb</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/Hibernate_Context.xml</param-value>
</context-param>
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>

</web-app>
-----------------------------------
<action-servlet.xml>
----------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean name="/User" class="com.yaya.action.UserAction" singleton="false">
<property name="userManager">
<ref bean="userManager" />
</property>
</bean>


</beans>
-------------------------------------------------------------------
<hibernate_context.xml>
--------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<!-- <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property>
<property name="prefix"><value>/WEB-INF/jsp/</value></property>
<property name="suffix"><value>.jsp</value></property>
</bean> -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>

<property name="url">
<value>jdbc:mysql://localhost/pdm</value>
</property>

<property name="username">
<value>root</value>
</property>

<property name="password">
<value></value>
</property>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">

<property name="dataSource">
<ref local="dataSource" />
</property>

<property name="mappingResources">
<list>
<value>hbm_tb/TSysuser.hbm.xml</value>
</list>
</property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">

<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>


<!-- Spring的數(shù)據(jù)訪問異常轉換器(Data Access Exception Translator)定義 -->
<bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>

<bean id="userDao" class="com.yaya.service.dao.hibernate.UserHibernateDao">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

<bean id="userManagerTarget" class="com.yaya.service.spring.UserManagerImpl">
<property name="userDao">
<ref local="userDao" />
</property>
</bean>


<bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>

<property name="target">
<ref local="userManagerTarget" />
</property>

<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>


</beans>-------------------------------------------------------------------
<struts-config.xml>
-------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

<!-- 數(shù)據(jù)源 -->
<data-sources></data-sources>

<!-- 表單 Bean -->
<form-beans>
<form-bean name="UserActionForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="user" type="com.yaya.hb.TSysuser" />
</form-bean>
</form-beans>

<!-- 全局異常 -->
<global-exceptions></global-exceptions>

<!-- 全局轉發(fā) -->
<global-forwards></global-forwards>

<!-- 操作映射 -->
<action-mappings>
<action path="/User" type="org.springframework.web.struts.DelegatingActionProxy"
name="UserActionForm" scope="request" parameter="method" validate="false">
<forward name="list" path="/userlist.jsp" />
<forward name="edit" path="/userform.jsp" />
</action>

</action-mappings>

<!-- 消息資源 -->
<message-resources parameter="mvc_bpel_modelweb.resources.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/action-servlet.xml" />
</plug-in>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/>
</plug-in>

</struts-config>
------------------------------------------------------------------
UserHibernateDao.java
------------------------------------------------------------------
/*
* 創(chuàng)建日期 2005-4-7
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package com.yaya.service.dao.hibernate;

import java.util.List;

import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import net.sf.hibernate.HibernateException;

import com.yaya.hb.TSysuser;
import com.yaya.service.dao.IUserDao;
import java.util.List;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

/**
* @author Administrator
*
* 更改所生成類型注釋的模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
public class UserHibernateDao extends HibernateDaoSupport implements IUserDao {

private Log log = LogFactory.getLog(UserHibernateDao.class);

/* (非 Javadoc)

* @see com.jandar.dao.IUserDAO#getUsers()

*/

public List getUsers() {

return getHibernateTemplate().find("from TSysuser");

}

/* (非 Javadoc)

* @see com.jandar.dao.IUserDAO#getUser(java.lang.Long)

*/

public TSysuser getUser(String username) {

// TODO 自動生成方法存根
if (this.getHibernateTemplate() == null)
{
System.out.println("error at there");
return null;

}
TSysuser user = (TSysuser) getHibernateTemplate().get(TSysuser.class,username);
//TSysuser user = (TSysuser) getHibernateTemplate().find("from TSysuser users where users.username = 'admin'",username);
if (user == null) {
throw new ObjectRetrievalFailureException(TSysuser.class, username);
}
return user;


//String msg = getHibernateTemplate().get(TSysuser.class,username).toString();

//TSysuser user = (TSysuser) getHibernateTemplate().find("from TSysuser where username = ?",username);
//System.out.println(user.getUserdesc());
//System.out.println(user.getHeadship());

//return user;
}

/* (非 Javadoc)

* @see com.jandar.dao.IUserDAO#saveUser(com.jandar.model.User)

*/

public void saveUser(TSysuser user) {

log.debug("xxxxxxx");

System.out.println("yyyy");

getHibernateTemplate().saveOrUpdate(user);

if (log.isDebugEnabled()) {

log.debug("username set to " + user.getUsername());

}

}

/* (非 Javadoc)

* @see com.jandar.dao.IUserDAO#removeUser(java.lang.Long)

*/

public void removeUser(String username) {

Object user = getHibernateTemplate().load(TSysuser.class, username);

getHibernateTemplate().delete(user);

if (log.isDebugEnabled()) {

log.debug("del user " + username);

}

}

}
-------------------------------------------------------------------
useraction.java
--------------------------------------------------------------------
/*
* 創(chuàng)建日期 2005-4-11
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package com.yaya.action;

import java.util.Date;

import org.apache.struts.actions.DispatchAction;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.util.MessageResources;

import com.opensymphony.user.User;
import com.yaya.axis.SpringBeanProvider;
import com.yaya.hb.TSysuser;
import com.yaya.service.spring.UserManagerImpl;
/**
* @author Administrator
*
* 更改所生成類型注釋的模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
public class UserAction extends DispatchAction {

private static Log log = LogFactory.getLog(UserAction.class);
private UserManagerImpl mgr = null;
public void setUserManager(UserManagerImpl userManager) {
this.mgr = userManager;
}

public ActionForward delete(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("entering 'delete' method...");
}
mgr.removeUser(request.getParameter("user.username"));
ActionMessages messages = new ActionMessages();
messages.add(
ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("user.deleted"));
saveMessages(request, messages);
return list(mapping, form, request, response);
}

public ActionForward edit(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("entering 'edit' method...");
}

DynaActionForm UserActionForm = (DynaActionForm) form;
String username = request.getParameter("username");

// null userId indicates an add
if (username != null) {
try
{
TSysuser user = mgr.getUser(username);
if (user == null) {
ActionMessages errors = new ActionMessages();
errors.add(
ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("user.missing"));
saveErrors(request, (ActionErrors) errors);
return mapping.findForward("list");
}
UserActionForm.set("user",user);
//request.setAttribute("user",user);
}
catch(Exception e)
{
e.printStackTrace();
}

}
return mapping.findForward("edit");
}

public ActionForward list(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("entering 'list' method...");
}
request.setAttribute("users", mgr.getUsers());
return mapping.findForward("list");
}

public ActionForward save(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("entering 'save' method...");
}

if (isCancelled(request)) {
return list(mapping, form, request, response);
}

// run validation rules on this form
ActionMessages errors = form.validate(mapping, request);

if (!errors.isEmpty()) {
saveErrors(request, (ActionErrors) errors);

return mapping.findForward("edit");
}
DynaActionForm UserActionForm = (DynaActionForm) form;
TSysuser user = (TSysuser) UserActionForm.get("user");

mgr.saveUser(user);

ActionMessages messages = new ActionMessages();
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("user.saved", user.getUsername()));
//saveMessages((HttpServletRequest) request.getSession(), messages);

return mapping.findForward("list");
}

public ActionForward unspecified(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
return list(mapping, form, request, response);
}

}

-------------------------------------------------------------------
UserActionForm.java
-------------------------------------------------------------------
/*
* 創(chuàng)建日期 2005-3-29
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package com.yaya.actionform;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

/**
* @author Administrator
*
* 更改所生成類型注釋的模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
public class UserActionForm extends ActionForm {
/** identifier field */
private String username;

/** identifier field */
private String userdesc;

/** identifier field */
private String passwords;

/** identifier field */
private String deptno;

/** identifier field */
private String headship;

/** identifier field */
private String sex;

/** identifier field */
private String tel;

/** identifier field */
private String email;

/** identifier field */
private String url;

/** identifier field */
private String pcall;

/** identifier field */

/** identifier field */
private String userphoto;

/** identifier field */
private Integer facerefutime;

/** identifier field */
private String facelanguage;

/** identifier field */
private String lastmodif;

/** identifier field */
private Date lastmdate;

/** identifier field */
private String creadtor;

/** identifier field */
private Date creatdate;

public String getUsername() {
return this.username;
}

public void setUsername(String username) {
this.username = username;
}



public String getPasswords() {
return this.passwords;
}

public void setPasswords(String passwords) {
this.passwords = passwords;
}

public String getDeptno() {
return this.deptno;
}

public void setDeptno(String deptno) {
this.deptno = deptno;
}

public String getHeadship() {
return this.headship;
}

public void setHeadship(String headship) {
this.headship = headship;
}

public String getSex() {
return this.sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public String getTel() {
return this.tel;
}

public void setTel(String tel) {
this.tel = tel;
}

public String getEmail() {
return this.email;
}

public void setEmail(String email) {
this.email = email;
}

public String getUrl() {
return this.url;
}

public void setUrl(String url) {
this.url = url;
}

public String getPcall() {
return this.pcall;
}

public void setPcall(String pcall) {
this.pcall = pcall;
}


public String getUserphoto() {
return this.userphoto;
}

public void setUserphoto(String userphoto) {
this.userphoto = userphoto;
}

public Integer getFacerefutime() {
return this.facerefutime;
}

public void setFacerefutime(Integer facerefutime) {
this.facerefutime = facerefutime;
}

public String getFacelanguage() {
return this.facelanguage;
}

public void setFacelanguage(String facelanguage) {
this.facelanguage = facelanguage;
}

public String getLastmodif() {
return this.lastmodif;
}

public void setLastmodif(String lastmodif) {
this.lastmodif = lastmodif;
}

public Date getLastmdate() {
return this.lastmdate;
}

public void setLastmdate(Date lastmdate) {
this.lastmdate = lastmdate;
}

public String getCreadtor() {
return this.creadtor;
}

public void setCreadtor(String creadtor) {
this.creadtor = creadtor;
}

public Date getCreatdate() {
return this.creatdate;
}

public void setCreatdate(Date creatdate) {
this.creatdate = creatdate;
}

/**
* @return
*/
public String getUserdesc() {
return userdesc;
}

/**
* @param string
*/
public void setUserdesc(String string) {
userdesc = string;
}


}
------------------------------------------------------------------
TSysuser.java
------------------------------------------------------------------
package com.yaya.hb;

import java.io.InputStream;
import java.io.Serializable;
import java.util.Date;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

/** @author Hibernate CodeGenerator */
public class TSysuser implements Serializable {

/** identifier field */
private String username;

/** identifier field */
private String userdesc;

/** identifier field */
private String passwords;

/** identifier field */
private String deptno;

/** identifier field */
private String headship;

/** identifier field */
private String sex;

/** identifier field */
private String tel;

/** identifier field */
private String email;

/** identifier field */
private String url;

/** identifier field */
private String pcall;

/** identifier field */

/** identifier field */
private String userphoto;

/** identifier field */
private Integer facerefutime;

/** identifier field */
private String facelanguage;

/** identifier field */
private String lastmodif;

/** identifier field */
private Date lastmdate;

/** identifier field */
private String creadtor;

/** identifier field */
private Date creatdate;

/** full constructor */
public TSysuser(String username, String userdesc, String passwords, String deptno, String headship, String sex, String tel, String email, String url, String pcall, InputStream userimage, String userphoto, Integer facerefutime, String facelanguage, String lastmodif, Date lastmdate, String creadtor, Date creatdate) {
this.username = username;
this.userdesc = userdesc;
this.passwords = passwords;
this.deptno = deptno;
this.headship = headship;
this.sex = sex;
this.tel = tel;
this.email = email;
this.url = url;
this.pcall = pcall;
this.userphoto = userphoto;
this.facerefutime = facerefutime;
this.facelanguage = facelanguage;
this.lastmodif = lastmodif;
this.lastmdate = lastmdate;
this.creadtor = creadtor;
this.creatdate = creatdate;
}

/** default constructor */
public TSysuser() {
}

public String getUsername() {
return this.username;
}

public void setUsername(String username) {
this.username = username;
}

public String getUserdesc() {
return this.userdesc;
}

public void setUserdesc(String userdesc) {
this.userdesc = userdesc;
}

public String getPasswords() {
return this.passwords;
}

public void setPasswords(String passwords) {
this.passwords = passwords;
}

public String getDeptno() {
return this.deptno;
}

public void setDeptno(String deptno) {
this.deptno = deptno;
}

public String getHeadship() {
return this.headship;
}

public void setHeadship(String headship) {
this.headship = headship;
}

public String getSex() {
return this.sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public String getTel() {
return this.tel;
}

public void setTel(String tel) {
this.tel = tel;
}

public String getEmail() {
return this.email;
}

public void setEmail(String email) {
this.email = email;
}

public String getUrl() {
return this.url;
}

public void setUrl(String url) {
this.url = url;
}

public String getPcall() {
return this.pcall;
}

public void setPcall(String pcall) {
this.pcall = pcall;
}


public String getUserphoto() {
return this.userphoto;
}

public void setUserphoto(String userphoto) {
this.userphoto = userphoto;
}

public Integer getFacerefutime() {
return this.facerefutime;
}

public void setFacerefutime(Integer facerefutime) {
this.facerefutime = facerefutime;
}

public String getFacelanguage() {
return this.facelanguage;
}

public void setFacelanguage(String facelanguage) {
this.facelanguage = facelanguage;
}

public String getLastmodif() {
return this.lastmodif;
}

public void setLastmodif(String lastmodif) {
this.lastmodif = lastmodif;
}

public Date getLastmdate() {
return this.lastmdate;
}

public void setLastmdate(Date lastmdate) {
this.lastmdate = lastmdate;
}

public String getCreadtor() {
return this.creadtor;
}

public void setCreadtor(String creadtor) {
this.creadtor = creadtor;
}

public Date getCreatdate() {
return this.creatdate;
}

public void setCreatdate(Date creatdate) {
this.creatdate = creatdate;
}

public String toString() {
return new ToStringBuilder(this)
.append("username", getUsername())
.append("userdesc", getUserdesc())
.append("passwords", getPasswords())
.append("deptno", getDeptno())
.append("headship", getHeadship())
.append("sex", getSex())
.append("tel", getTel())
.append("email", getEmail())
.append("url", getUrl())
.append("pcall", getPcall())
.append("userphoto", getUserphoto())
.append("facerefutime", getFacerefutime())
.append("facelanguage", getFacelanguage())
.append("lastmodif", getLastmodif())
.append("lastmdate", getLastmdate())
.append("creadtor", getCreadtor())
.append("creatdate", getCreatdate())
.toString();
}

public boolean equals(Object other) {
if ( !(other instanceof TSysuser) ) return false;
TSysuser castOther = (TSysuser) other;
return new EqualsBuilder()
.append(this.getUsername(), castOther.getUsername())
.append(this.getUserdesc(), castOther.getUserdesc())
.append(this.getPasswords(), castOther.getPasswords())
.append(this.getDeptno(), castOther.getDeptno())
.append(this.getHeadship(), castOther.getHeadship())
.append(this.getSex(), castOther.getSex())
.append(this.getTel(), castOther.getTel())
.append(this.getEmail(), castOther.getEmail())
.append(this.getUrl(), castOther.getUrl())
.append(this.getPcall(), castOther.getPcall())
.append(this.getUserphoto(), castOther.getUserphoto())
.append(this.getFacerefutime(), castOther.getFacerefutime())
.append(this.getFacelanguage(), castOther.getFacelanguage())
.append(this.getLastmodif(), castOther.getLastmodif())
.append(this.getLastmdate(), castOther.getLastmdate())
.append(this.getCreadtor(), castOther.getCreadtor())
.append(this.getCreatdate(), castOther.getCreatdate())
.isEquals();
}

public int hashCode() {
return new HashCodeBuilder()
.append(getUsername())
.append(getUserdesc())
.append(getPasswords())
.append(getDeptno())
.append(getHeadship())
.append(getSex())
.append(getTel())
.append(getEmail())
.append(getUrl())
.append(getPcall())
.append(getUserphoto())
.append(getFacerefutime())
.append(getFacelanguage())
.append(getLastmodif())
.append(getLastmdate())
.append(getCreadtor())
.append(getCreatdate())
.toHashCode();
}

}
---------------------------------------------------------------------
IUserManager.java
---------------------------------------------------------------------
package com.yaya.service;

import java.util.List;

import com.yaya.hb.TSysuser;
import com.yaya.service.dao.IUserDao;


public interface IUserManager {
public void setUserDAO(IUserDao userDao);
public TSysuser getUser(String username);
public List getUsers();
public void saveUser(TSysuser user);
public void removeUser(String username);
}
--------------------------------------------------------------------
IDAO.java
--------------------------------------------------------------------
/*
* 創(chuàng)建日期 2005-4-7
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package com.yaya.service.dao;
/**
* @author Administrator
*
* 更改所生成類型注釋的模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
public interface IDAO {

}
--------------------------------------------------------------
IUserDao.java
--------------------------------------------------------------
/*
* 創(chuàng)建日期 2005-4-11
*
* 更改所生成文件模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
package com.yaya.service.dao;

import java.util.List;

import com.yaya.hb.TSysuser;

/**
* @author Administrator
*
* 更改所生成類型注釋的模板為
* 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
*/
public interface IUserDao extends IDAO {

public List getUsers();
public TSysuser getUser(String username);
public void saveUser(TSysuser user);
public void removeUser(String username);
}
----------------------------------------------------------
UserManagerImpl.java
----------------------------------------------------------
package com.yaya.service.spring;

import com.yaya.hb.TSysuser;
import com.yaya.service.IUserManager;
import com.yaya.service.dao.IUserDao;

import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class UserManagerImpl implements IUserManager {
private static Log log = LogFactory.getLog(UserManagerImpl.class);

public IUserDao dao;

public void setUserDao(IUserDao userDao) {
this.dao = userDao;
this.setUserDAO(userDao);
}

public TSysuser getUser(String username) {
return dao.getUser(username);
}

public List getUsers() {
return dao.getUsers();
}

public void saveUser(TSysuser user) {
dao.saveUser(user);
}

public void removeUser(String username) {
// TODO 自動生成方法存根
dao.removeUser(username);
}


public void setUserDAO(IUserDao dao) {
// TODO 自動生成方法存根
this.dao = dao;
}
}
-----------------------------------------------------------------
TSysuser.hbm.xml
-----------------------------------------------------------------
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin

http://boss.bekk.no/boss/middlegen/
http://hibernate.sourceforge.net/
-->

<class name="com.yaya.hb.TSysuser" table="t_sysuser">

<id name="username" type="java.lang.String" column="USERNAME">
<generator class="identity" />
</id>

<property name="userdesc" type="java.lang.String" column="USERDESC" length="30" />
<property name="passwords" type="java.lang.String" column="PASSWORDS" length="30" />
<property name="deptno" type="java.lang.String" column="DEPTNO" length="30" />
<property name="headship" type="java.lang.String" column="HEADSHIP" length="30" />
<property name="sex" type="java.lang.String" column="SEX" length="4" />
<property name="tel" type="java.lang.String" column="TEL" length="18" />
<property name="email" type="java.lang.String" column="EMAIL" length="30" />
<property name="url" type="java.lang.String" column="URL" length="30" />
<property name="pcall" type="java.lang.String" column="PCALL" length="20" />
<property name="userphoto" type="java.lang.String" column="USERPHOTO" length="255" />
<property name="facerefutime" type="java.lang.Integer" column="FACEREFUTIME" length="6" />
<property name="facelanguage" type="java.lang.String" column="FACELANGUAGE" length="1" />
<property name="lastmodif" type="java.lang.String" column="LASTMODIF" length="30" />
<property name="lastmdate" type="java.sql.Timestamp" column="LASTMDATE" length="19" />
<property name="creadtor" type="java.lang.String" column="CREADTOR" length="30" />
<property name="creatdate" type="java.sql.Timestamp" column="CREATDATE" length="19" />

<!-- associations -->

</class>
</hibernate-mapping>
-------------------------------------------------------------------
創(chuàng)建數(shù)據(jù)庫腳本 用于MYSQL
-------------------------------------------------------------------
CREATE TABLE `t_sysuser` (
`USERNAME` varchar(30) NOT NULL default '',
`USERDESC` varchar(30) default NULL,
`PASSWORDS` varchar(30) default NULL,
`DEPTNO` varchar(30) default NULL,
`HEADSHIP` varchar(30) default NULL,
`SEX` varchar(4) default NULL,
`TEL` varchar(1Cool default NULL,
`EMAIL` varchar(30) default NULL,
`URL` varchar(30) default NULL,
`PCALL` varchar(20) default NULL,
`USERPHOTO` varchar(255) default NULL,
`FACEREFUTIME` decimal(6,0) default NULL,
`FACELANGUAGE` char(1) default NULL,
`LASTMODIF` varchar(30) default NULL,
`LASTMDATE` datetime default NULL,
`CREADTOR` varchar(30) default NULL,
`CREATDATE` datetime default NULL,
PRIMARY KEY (`USERNAME`)
) TYPE=MyISAM;
-----------------------------------------------------------
提示:COPY幾個資源文件
validation.xml 和 validator-rules.xml
前臺使用的幾個JSP文件如下:
-----------------------------------------------------------
index.jsp
-----------------------------------------------------------
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin

http://boss.bekk.no/boss/middlegen/
http://hibernate.sourceforge.net/
-->

<class name="com.yaya.hb.TSysuser" table="t_sysuser">

<id name="username" type="java.lang.String" column="USERNAME">
<generator class="identity" />
</id>

<property name="userdesc" type="java.lang.String" column="USERDESC" length="30" />
<property name="passwords" type="java.lang.String" column="PASSWORDS" length="30" />
<property name="deptno" type="java.lang.String" column="DEPTNO" length="30" />
<property name="headship" type="java.lang.String" column="HEADSHIP" length="30" />
<property name="sex" type="java.lang.String" column="SEX" length="4" />
<property name="tel" type="java.lang.String" column="TEL" length="18" />
<property name="email" type="java.lang.String" column="EMAIL" length="30" />
<property name="url" type="java.lang.String" column="URL" length="30" />
<property name="pcall" type="java.lang.String" column="PCALL" length="20" />
<property name="userphoto" type="java.lang.String" column="USERPHOTO" length="255" />
<property name="facerefutime" type="java.lang.Integer" column="FACEREFUTIME" length="6" />
<property name="facelanguage" type="java.lang.String" column="FACELANGUAGE" length="1" />
<property name="lastmodif" type="java.lang.String" column="LASTMODIF" length="30" />
<property name="lastmdate" type="java.sql.Timestamp" column="LASTMDATE" length="19" />
<property name="creadtor" type="java.lang.String" column="CREADTOR" length="30" />
<property name="creatdate" type="java.sql.Timestamp" column="CREATDATE" length="19" />

<!-- associations -->

</class>
</hibernate-mapping>
------------------------------------------------------------------
userlist.jsp
------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html:html locale="true">
<head>
<title><bean:message key="pdmweb.title"/></title>
</head>
<body>
<table class="list">
<thead>
<tr bgcolor="#8080ff">
<td bgcolor="#8080ff"><bean:message key="listuser.username" /></td>
<td bgcolor="#8080ff"><bean:message key="listuser.userdesc" /></td>
<td bgcolor="#8080ff"><bean:message key="listuser.sex" /></td>
</tr>
</thead>
<tbody>
<logic:iterate id="user" name="users">
<tr>
<td bgcolor="#ff8040"><A href="User.do?method=edit&username=<bean:write name="user" property="username"/>" ><bean:write name="user" property="username" />
</a>
</td>
<td bgcolor="#ff8040"><bean:write name="user" property="userdesc" /></td>
<td bgcolor="#ff8040"><logic:equal name="user" property="sex" value="0">
<bean:message key="listuser.sex0" />
</logic:equal> <logic:equal name="user" property="sex" value="1">
<bean:message key="listuser.sex1" />
</logic:equal></td>
</tr>
</logic:iterate>
</tbody>
</table>
</body>
</html:html>
-------------------------------------------------------------------
userform.jsp
------------------------------------------------------------------
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
<head>
<html:base />
<title>userform.jsp</title>
</head>
<body>

<html:form action="User.do?method=save" method="post" focus="user.userdesc" >
<html:text property="user.username" />
<br>
<html:text property="user.userdesc" /><br>
<html:text property="user.deptno" /><br>


<html:submit property="tijiao" />
</html:form>
</body>
</html:html>
--------------------------------------------------------------
如果有什么疑問可以致電郵至 heweiya@yahoo.com.cn,互相交流,互相學習。

@家軍 2005-12-19 11:27 發(fā)表評論
]]>
配置Springframework與hibernate連接多數(shù)據(jù)庫的事務http://m.tkk7.com/heweiya/archive/2005/12/19/24594.html@家軍@家軍Mon, 19 Dec 2005 03:26:00 GMThttp://m.tkk7.com/heweiya/archive/2005/12/19/24594.htmlhttp://m.tkk7.com/heweiya/comments/24594.htmlhttp://m.tkk7.com/heweiya/archive/2005/12/19/24594.html#Feedback0http://m.tkk7.com/heweiya/comments/commentRss/24594.htmlhttp://m.tkk7.com/heweiya/services/trackbacks/24594.html本文只注重配置,分別有如下幾個文件
<出處:和巍雅的BLOG
web.xml 部署配置文件
struts-config.xml struts的配置文件
action-servlet.xml Spring依賴注入struts
Nhibernate_Context.xml Spring依賴注入struts
hibernate.cfg.xml mssql的Hibernate配置
hibernate_mysql.cfg.xml mysql的Hibernate配置 
開始:
web.xml
------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp">
<display-name>EAIJ2EEPRJWeb</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/Nhibernate_Context.xml</param-value>
</context-param>
<filter>
<filter-name>SetCharacterEncodingFilter</filter-name>
<display-name>SetCharacterEncodingFilter</display-name>
<filter-class>com.throuhout.j2eemodel.util.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<display-name>SpringContextServlet</display-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>wsdl</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsd</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>

</web-app>
---------------------------------------------------------------------
struts_config.xml
---------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

<!-- 數(shù)據(jù)源 -->
<data-sources></data-sources>

<!-- 表單 Bean -->
<form-beans>
<form-bean name="UserActionForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="user" type="com.throuhout.j2eemodel.hibernate.TSysuser" />
</form-bean>
<form-bean name="UserMenuActionForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="menu" type="com.throuhout.j2eemodel.hibernate.TSysmufudef">
</form-property>
</form-bean>
</form-beans>

<!-- 全局異常 -->
<global-exceptions></global-exceptions>


<!-- 全局轉發(fā) -->
<global-forwards>
<forward name="success" path="/main/success.jsp"></forward>
<forward name="failure" path="/main/fail.jsp"></forward>
</global-forwards>

<!-- 操作映射 -->
<action-mappings>
<action path="/User" type="org.springframework.web.struts.DelegatingActionProxy" name="UserActionForm" scope="request" parameter="method" validate="false">
<forward name="sucess" path="/main/project_index.htm" />
<forward name="false" path="/failure.html"></forward>
<forward name="list" path="/main/userlist.jsp">
</forward>
<forward name="edit" path="/main/userform.jsp">
</forward>
</action>
<action path="/UserMenu" type="org.springframework.web.struts.DelegatingActionProxy" name="UserMenuActionForm" scope="request" parameter="method" validate="false">
<forward name="menu" path="/main/menu.jsp"></forward>
<forward name="usermenu" path="/main/usermenu.jsp">
</forward>
</action>
</action-mappings>

<!-- 消息資源 -->
<message-resources parameter="eaij2eeprjweb.resources.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/action-servlet.xml" />
</plug-in>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml" />
</plug-in>

</struts-config>
-------------------------------------------------------------------
action-servlet.xml
--------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<!-- Spring依賴注入到Struts當中 -->
<beans>
<bean name="/User" class="com.throuhout.j2eemodel.struts.action.UserAction" singleton="false">
<property name="userManager">
<ref bean="userManager" />
</property>
</bean>
<bean name="/UserMenu" class="com.throuhout.j2eemodel.struts.action.UserMenuAction" singleton="false">
<property name="userManager">
<ref bean="userManager" />
</property>
</bean>

</beans>
-------------------------------------------------------------------
Nhibernate_Context.xml
--------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<!-- Spring依賴注入到Struts當中 -->
<!-- Hibernate SessionFactory -->
<beans>
<bean id="mssqlSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">

<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">net.sf.hibernate.dialect.SybaseDialect</prop>

<!--<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
<prop key="hibernate.cache.provider_class">net.sf.hibernate.cache.OSCacheProvider</prop>-->
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">25</prop>
</props>
</property>
</bean>

<bean id="mysqlSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate_mysql.cfg.xml</value>
</property>

<property name="hibernateProperties">
<props>
<!--<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
<prop key="hibernate.cache.provider_class">net.sf.hibernate.cache.OSCacheProvider</prop>-->
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">25</prop>
</props>
</property>
</bean>

<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->

<bean id="mysqltransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="mysqlSessionFactory" />
</property>
</bean>

<bean id="mssqltransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="mssqlSessionFactory" />
</property>
</bean>

<!--
<bean id="aDao" class="com.plat.dao.user.impl.aDaoImpl">
<property name="sessionFactory">
<ref local="oracleSessionFactory" />
</property>
</bean>
-->
<bean id="userDao" class="com.throuhout.j2eemodel.spring.service.dao.hibernate.UserHibernateDao">
<property name="sessionFactory">
<ref local="mysqlSessionFactory" />
</property>
</bean>


<!-- Service -->
<bean id="userManagerTarget" class="com.throuhout.j2eemodel.spring.service.UserManagerImpl">
<property name="userDao">
<ref local="userDao" />
</property>
</bean>

<bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="mysqltransactionManager" />
</property>

<property name="target">
<ref local="userManagerTarget" />
</property>

<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
</beans>
---------------------------------------------------------------------
hibernate.cfg.xml
---------------------------------------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"hibernate-configuration-2.0.dtd">

<hibernate-configuration>

<session-factory>
<property name="show_sql">true</property>
<property name="use_outer_join">false</property>

<property name="hibernate.dialect">net.sf.hibernate.dialect.SybaseDialect</property>

<property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>

<property name="hibernate.connection.url">jdbc:jtds:sqlserver://192.168.100.111:1433/testdb</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">yaya</property>
<!--
<property name="hibernate.connection.url">jdbc:jtds:sqlserver://192.168.100.148:1433/throughoutdb</property>
<property name="hibernate.connection.username">siaote</property>
<property name="hibernate.connection.password">siaote</property>
-->
<property name="hibernate.connection.pool.size">20</property>
<property name="session_factory_name">mssqlSessionFactory</property>

<!-- Mapping files -->
<mapping resource="hbm_tb/T_COST_TYPE.hbm.xml" />


</session-factory>
</hibernate-configuration>
-------------------------------------------------------------------
hibernate_mysql.cfg.xml
-------------------------------------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"hibernate-configuration-2.0.dtd">

<hibernate-configuration>

<session-factory>
<property name="show_sql">true</property>
<property name="use_outer_join">false</property>

<property name="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</property>

<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>

<property name="hibernate.connection.url">jdbc:mysql://localhost/pdm</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>

<property name="hibernate.connection.pool.size">20</property>
<property name="session_factory_name">mysqlSessionFactory</property>

<!-- Mapping files -->
<mapping resource="hbm_tb/TSysuser.hbm.xml" />
<mapping resource="hbm_tb/TSysmufudef.hbm.xml" />


</session-factory>
</hibernate-configuration>

----------------------------------------------------------------
本人的開發(fā)環(huán)境:
開發(fā)工具:WSAD 5.1
中間件服務器:tomcat 4.24
數(shù)據(jù)庫:mysql\mssql 完全通過。
你可以和 heweiya@yahoo.com.cn 聯(lián)系

@家軍 2005-12-19 11:26 發(fā)表評論
]]>
DTREE如何認一個目錄節(jié)點打開一個URLhttp://m.tkk7.com/heweiya/archive/2005/12/19/24586.html@家軍@家軍Mon, 19 Dec 2005 03:17:00 GMThttp://m.tkk7.com/heweiya/archive/2005/12/19/24586.htmlhttp://m.tkk7.com/heweiya/comments/24586.htmlhttp://m.tkk7.com/heweiya/archive/2005/12/19/24586.html#Feedback0http://m.tkk7.com/heweiya/comments/commentRss/24586.htmlhttp://m.tkk7.com/heweiya/services/trackbacks/24586.html 方法及其簡單,見dtree.js的標準函數(shù)function(pNode),第107行:

java代碼: 

// Creates the tree structure
dTree.prototype.addNode = function(pNode) {
        var str 
= '';
        var n
=0;
        
if (this.config.inOrder) n = pNode._ai;
        
for (n; n<this.aNodes.length; n++) {
                
if (this.aNodes[n].pid == pNode.id) {
                        var cn 
= this.aNodes[n];
                        cn._p 
= pNode;
                        cn._ai 
= n;
                        
this.setCS(cn);
                        
if (!cn.target && this.config.target) cn.target = this.config.target;
                        
if (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);
[color
=red]//注意下面的語句:[/color]
                        if (!this.config.folderLinks && cn._hc) cn.url = null;
[color
=darkred]//如果想讓一個目錄節(jié)點也能夠打開一個URL則把上面的這句話關掉。
//if (!this.config.folderLinks && cn._hc) cn.url = null;[/color]
                        if (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {
                                        cn._is 
= true;
                                        
this.selectedNode = n;
                                        
this.selectedFound = true;
                        }
                        str 
+= this.node(cn, n);
                        
if (cn._ls) break;
                }
        }
        
return str;
};



@家軍 2005-12-19 11:17 發(fā)表評論
]]>
主站蜘蛛池模板: 久9久9精品免费观看| 日韩精品免费一线在线观看 | 四虎影视久久久免费| a级毛片在线免费观看| 日韩在线永久免费播放| 国产亚洲一区二区精品| 黄网站色视频免费在线观看的a站最新 | 亚洲狠狠狠一区二区三区| 久草福利资源网站免费| 亚洲色偷偷狠狠综合网| free哆拍拍免费永久视频| 亚洲永久无码3D动漫一区| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 无码国产亚洲日韩国精品视频一区二区三区| 免费观看的a级毛片的网站| 亚洲国产日韩在线| 无码一区二区三区AV免费| 色偷偷女男人的天堂亚洲网| 成人免费男女视频网站慢动作| 亚洲成人一区二区| 9久久免费国产精品特黄| 久久国产亚洲观看| 色猫咪免费人成网站在线观看 | 久久久久久久久无码精品亚洲日韩| 久久毛片免费看一区二区三区| 国产免费一区二区三区| 亚洲综合伊人制服丝袜美腿| 暖暖日本免费在线视频 | 日本高清免费不卡在线| 亚洲AV永久无码天堂影院| 四虎影视永久免费观看| 一级特黄特色的免费大片视频| 中国在线观看免费国语版| 亚洲第一第二第三第四第五第六| 可以免费观看的毛片| 亚洲国产精品yw在线观看| 日本a级片免费看| 免费一级不卡毛片| 亚洲一区在线视频| 亚洲天堂中文字幕在线| 最近中文字幕免费2019|