X-Spirit
Always Beyond the Time
|
|
BlogJava |
首頁 |
發(fā)新隨筆 |
發(fā)新文章 |
聯(lián)系 |
聚合![]() |
隨筆:91 文章:1 評論:65 引用:0 |
然后,在源包節(jié)點(diǎn)下創(chuàng)建Spring配置文件applicationContext.xml,選擇如圖所示的幾個(gè)命名空間: 選擇完成,然后在Beans節(jié)點(diǎn)之間添加如下內(nèi)容:
3. 配置JPA持久化支持 在服務(wù)選項(xiàng)卡中,選擇MySQL數(shù)據(jù)庫驅(qū)動(dòng),然后右鍵單擊,選擇連接設(shè)置,配置你要使用的數(shù)據(jù)庫: 數(shù)據(jù)庫配置完畢,然后回到項(xiàng)目選項(xiàng)卡,右鍵單擊剛創(chuàng)建的項(xiàng)目,選擇新建-->其它-->持久性-->持久性單元 在新建持久性單元對話框中選擇持久性庫為Hibernate,即選擇Hibernate為JPA持久單元的實(shí)現(xiàn),數(shù)據(jù)庫連接選擇我們剛配置好的MySQL連接。 單擊完成。此時(shí),Hibernate的JPA庫已經(jīng)被添加到項(xiàng)目的lib目錄下了。包含了基本的Hibernate jar包和Hibernate JPA支持jar包。 注:使用JPA的一個(gè)好處就是我們不需要在一個(gè)統(tǒng)一的配置文件里羅列所有的實(shí)體類,而是可以讓實(shí)體管理器自動(dòng)掃描所有被@Entity注解了的實(shí)體類。要實(shí)現(xiàn)這種功能,如果項(xiàng)目的JPA實(shí)現(xiàn)遷移到TopLink Essential,需要加入下面的配置: 找到項(xiàng)目中的“配置文件”節(jié)點(diǎn),打開persistence.xml文件,調(diào)整到XML視圖中,在<provider> </provider>節(jié)點(diǎn)后添加: <exclude-unlisted-classes>false</exclude-unlisted-classes> 一行。如果希望使用Hibernate實(shí)現(xiàn),請一定不要加入這一行,否則,您必須將您創(chuàng)建的所有實(shí)體類逐一添加到persistence.xml中。 如果要使用Spring提供的JpaTemplate(即實(shí)現(xiàn)JpaDaoSupport方式),則回到spring的applicationContext.xml文件,在<beans>節(jié)點(diǎn)里面添加:
至此,持久化支持配置完畢。 創(chuàng)建實(shí)體類和相應(yīng)的JPA控制類右鍵單擊項(xiàng)目,選擇新建-->其它-->持久性-->通過數(shù)據(jù)庫生成實(shí)體類,選擇數(shù)據(jù)庫表: 點(diǎn)擊下一步,輸入合適的包名 下一步,映射選項(xiàng)如下圖所示: 選擇新建-->其它-->持久性-->基于實(shí)體類的JPA控制器類,下一步: 添加要生成控制器類的實(shí)體類,下一步: 選擇合適的包,然后完成。 后面的配置無非就是將JPA的控制器類寫入Spring的配置文件,然后在AOM的LiteBean中注入這些控制器類,實(shí)現(xiàn)數(shù)據(jù)庫操作以及相應(yīng)的業(yè)務(wù)邏輯。 注:解決Spring與Hibernate JPA的沖突: 如上圖所示:選擇工具--> 庫 --> 庫位置-->選擇當(dāng)前編輯的項(xiàng)目,選中Spring Framework 2.5,然后去掉cglib2.2那個(gè)jar包。這個(gè)包與Hibernate JPA中的cglib 2.1.3.jar有沖突
文章來源:http://x-spirit.spaces.live.com/Blog/cns!CC0B04AE126337C0!776.entry
今天發(fā)現(xiàn)服務(wù)器上的Oracle11g突然登錄不上去了,提示ORA-28002錯(cuò)誤,說是口令過期。
不當(dāng)DBA還真不知道Oracle有這神秘功能。 上網(wǎng)上一查,有類似遭遇的朋友在論壇上求助,人家讓他找DBA。汗。。。 好在有的DBA樂于分享,終于找到了解決方案: 1. 用DBA賬戶登錄SQL PLUS。我用的是sysman。 2. 系統(tǒng)會(huì)提示口令失效,但是會(huì)馬上讓你重置新密碼。 3. 重置之后,進(jìn)入SQL PLUS控制臺。 4. 查看口令失效用戶的profile文件 SQL>SELECT username,profile FROM dba_users;
EM(Web界面的控制臺):服務(wù)器>用戶,查看口令失效的用戶對應(yīng)的概要文件,這里假設(shè)為DEFAULT,下同。 5. 查看對應(yīng)的概要文件的口令有效期設(shè)置 SQL>SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
EM(Web界面的控制臺):服務(wù) 器>概要文件>選擇剛剛查到的概要文件DEFAULT>查看,查看口令下面的有效期值。 6.將口令有效期默認(rèn)值180天 修改成“無限制”(此項(xiàng)要慎重!除非你真得不想要這個(gè)密碼失效的機(jī)制?。?/span> SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
EM:服務(wù)器>概要文件>選擇剛剛查到的概要文件DEFAULT>編輯>口令,在有效期輸入 或選擇你需要的值,保存。 該參數(shù)修改實(shí)時(shí)生效。 出于數(shù)據(jù)庫安全性考慮,不建議將PASSWORD_LIFE_TIME值設(shè)置 成UNLIMITED,即建議客戶能夠定期修改數(shù)據(jù)庫用戶口令。 在修改PASSWORD_LIFE_TIME值之前已經(jīng)失效的用戶,還是需 要重新修改一次密碼才能使用。 SQL>ALTER USER test INDENTIFIED BYpassword
也可以從SQL Developer 里面來修改用戶的密碼,用sysman賬戶登錄以后,找到數(shù)據(jù)庫中的其他用戶節(jié)點(diǎn),展開,找到你要修改密碼的用戶。然后編輯用戶,對用戶密碼進(jìn)行重置,如下圖: ![]()
@import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
內(nèi)部服務(wù)參數(shù)配置:
JAVA_OPTS="-server -XX:+UseParNewGC -Xms1024m -Xmx2048m -XX:MaxNewSize=128m -XX:NewSize=128m -XX:PermSize=96m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:CMSInitiatingOccupancyFraction=1 -XX:+CMSIncrementalMode -XX:MaxTenuringThreshold=0 -XX:SurvivorRatio=20000 -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:CMSIncrementalDutyCycleMin=10 -XX:CMSIncrementalDutyCycle=30 -XX:CMSMarkStackSize=8M -XX:CMSMarkStackSizeMax=32M"前端應(yīng)用參數(shù)配置: JAVA_OPTS="-server -Xmx4096m -Xms4096m -Xmn480m -Xss256k -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=8 -XX:CMSFullGCsBeforeCompaction=0
-XX:+UseCMSCompactAtFullCollection -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:GCTimeRatio=19 -Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0" 參數(shù)說明: -Xmx1280m:設(shè)置JVM最大可用內(nèi)存為1280m。最大可設(shè)為3550m。具體應(yīng)用可適當(dāng)調(diào)整。 -Xms1280m:設(shè)置JVM初始內(nèi)存為1280m。此值可以設(shè)置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內(nèi)存。 -Xmn480m:設(shè)置年輕代大小為480m。整個(gè)堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m,所以增大年輕代后,將會(huì)減小年老代大小。此值對系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的3/8。 -Xss256k:設(shè)置每個(gè)線程的堆棧大小。JDK5.0以后每個(gè)線程堆棧大小為1M,以前每個(gè)線程堆棧大小為256K。更具應(yīng)用的線程所需內(nèi)存大小進(jìn)行調(diào)整。在相同物理內(nèi)存下,減小這個(gè)值能生成更多的線程。但是操作系統(tǒng)對一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的,不能無限生成,經(jīng)驗(yàn)值在3000~5000左右。 -XX:PermSize=64m:指定 jvm 中 Perm Generation 的最小值。 這個(gè)參數(shù)需要看你的實(shí)際情況??梢酝ㄟ^jmap 命令看看到底需要多少。 -XX:MaxPermSize=128m:指定 Perm Generation 的最大值 -XX:+UseConcMarkSweepGC:設(shè)置并發(fā)收集器 -XX:ParallelGCThreads=8:配置并行收集器的線程數(shù),即:同時(shí)多少個(gè)線程一起進(jìn)行垃圾回收。此值最好配置與處理器數(shù)目相等。 -XX:CMSFullGCsBeforeCompaction=0:由于并發(fā)收集器不對內(nèi)存空間進(jìn)行壓縮、整理,所以運(yùn)行一段時(shí)間以后會(huì)產(chǎn)生“碎片”,使得運(yùn)行效率降低。此值設(shè)置運(yùn)行多少次GC以后對內(nèi)存空間進(jìn)行壓縮、整理。 -XX:+UseCMSCompactAtFullCollection:打開對年老代的壓縮??赡軙?huì)影響性能,但是可以消除碎片。 -XX:SurvivorRatio=8:每個(gè)survivor space 和 eden之間的比例。 -XX:MaxTenuringThreshold=7:設(shè)置垃圾最大年齡。如果設(shè)置為0的話,則年輕代對象不經(jīng)過Survivor區(qū),直接進(jìn)入年老代。對于年老代比較多的應(yīng)用,可以提高效率。如果將此值設(shè)置為一個(gè)較大值,則年輕代對象會(huì)在Survivor區(qū)進(jìn)行多次復(fù)制,這樣可以增加對象再年輕代的存活時(shí)間,增加在年輕代即被回收的概率。 -XX:GCTimeRatio=19:設(shè)置垃圾回收時(shí)間占程序運(yùn)行時(shí)間的百分比,公式為1/(1+n)。 -Xnoclassgc:禁用類垃圾回收,性能會(huì)有一定提高。 -XX:+DisableExplicitGC:當(dāng)此參數(shù)打開時(shí),在程序中調(diào)用System.gc()將會(huì)不起作用。默認(rèn)是off。 -XX:+UseParNewGC:設(shè)置年輕代為并行收集??膳cCMS收集同時(shí)使用。 -XX:-CMSParallelRemarkEnabled:在使用 UseParNewGC 的情況下 , 盡量減少 mark 的時(shí)間。 -XX:CMSInitiatingOccupancyFraction=70:指示在 old generation 在使用了 70% 的比例后 , 啟動(dòng) concurrent collector。 -XX:SoftRefLRUPolicyMSPerMB=0:每兆堆空閑空間中SoftReference的存活時(shí)間。 @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); |