用最新的SSH搭環境的一些趕腳

2021-08-27 13:23:50 字數 1443 閱讀 9714

好久沒做ssh專案了,前幾天專案組讓我做乙個**,乾脆用最新的ssh搭乙個架子,採用strtus2.3+spring3.2+hibernate4.2+jquery+seajs+mysql。

在搭架子的過程中也碰到一些問題,比如hibernate session的問題,h3和h4已經發生了很多改變,比如:

1、在hibernate4中,

annotationconfiguration已經過期。

對於註解配置,並沒有新的類來替代它,而是將這部分功能放到configuration類中來實現了。

configuration cfg = new configuration().configure();

上面的語句在hibernate4中即可解析註解配置。

2、buildsessionfactory()方法過期。

建立sessionfactory的正解方法如下:

3、與spring3整合

從spring3.1開始, 已經不提供hibernate4的 hibernatedaosupport和hibernatetemplate,而是直接使用原生的hibernate4 api來獲得session.

如管要在spring3中配置sessionfactory,或者管理事務,**如下:

注意,這裡的包名為org.springframework.orm.hibernate4。

現在問題就出來了,我們知道hibernate的session常用的有兩種方式獲取,一種是opensession,一種是getcurrentsession,試了第一種(現在是使用的oracle資料庫),結果是在新增資料的時候出問題了,open出來的session在一級快取臨時變數中有資料,傳送了select語句查詢主鍵,但是沒有傳送insert語句進行提交,查了資料發現網上說

* 採用getcurrentsession()建立的session會繫結到當前執行緒中,而採用opensession()

建立的session則不會;

* 採用getcurrentsession()建立的session在commit或rollback時會自動關閉,而採用opensession()建立的session必須手動關閉;

於是手動開啟事務準備提交,結果報出了當前事務已存在的錯誤;說明當前執行緒中已經存在乙個事務納入了session的管理了,無奈之下,改為了getcurrentsession,於是成功傳送insert語句,新增了資料。所以建議在hibernate4下推薦使用getcurrentsession,特別是在有宣告式事務包圍的方法上。

接著我又換了成了mysql資料庫,發現opensession和getcurrentsession,在不手動開啟事務的時候都能提交,很奇怪的現象,同樣的**,在不同資料庫下出現了不同的結果,於是我想到了在預設情況下,不同資料庫採用的事務隔離級別的問題,這只是我的乙個猜想,看來只能在hibernate4的原始碼裡去找答案了,也不知道方向對不對,希望大家也能給我一些建議。

ssh的一些操作

1.檢視ssh狀態 ps e grep ssh出現 1027 00 00 00 sshd說明已啟動,若只有agent,說明沒有啟動,可自行手動啟動 2.啟動或關閉ssh服務 sudo etc init.d ssh start sudo etc init.d ssh stop3.檢視對方電腦ip if...

ssh一些常用的用法

ssh copy id i root ssh id rsa.pub p port number user name you host ip or hostname.cnhost 87 hostname 192.168.3.87 port 22 user root identityfile ssh i...

關於ssh的一些問題

1.ssh登入 ssh root 192.168.0.1 root 為使用者名稱 192.168.0.1 為伺服器ip 這肯定是瞎寫的,要填自己伺服器的 2.限制使用者的錯誤嘗試ssh登入 試圖登入你的伺服器進行破壞 auth required pam tally2.so deny 5 unlock...