System.getProperty()參數大全
posted @ 2008-02-18 17:43 binge 閱讀(701) | 評論 (0) | 編輯 收藏
拾貝殼走過的路
隨筆 - 39, 文章 - 1, 評論 - 14, 引用 - 0
|
System.getProperty()參數大全
System.getProperty()參數大全
posted @ 2008-02-18 17:43 binge 閱讀(701) | 評論 (0) | 編輯 收藏 axis userguide(3)服務類型 在axis中有4中服務類型 RPC服務 相關的PurchaseOrder類型定義如下: <schema targetNamespace="http://commerce.com/PO"> 對于一個document服務來說,他將對應到這樣的方法 換句話說,整個PurchaseOrder元素將被處理為一個單一的對象,包含3個屬性。 posted @ 2008-02-17 20:31 binge 閱讀(625) | 評論 (0) | 編輯 收藏 axis userguide(2)發布service <!-- define the service, using the log handler we just defined --> <parameter name="className" value="samples.userguide.example4.Service"/> <service name="AdminService" provider="java:MSG"> posted @ 2008-02-17 12:17 binge 閱讀(606) | 評論 (0) | 編輯 收藏 osworkflow幾個主要組件和概念原文見: posted @ 2008-02-17 10:36 binge 閱讀(778) | 評論 (0) | 編輯 收藏 Javascript 的dtree說dtree是使用最廣泛的目錄樹javascript應該也不為過.這得意于他簡單的使用方式和良好的結構. 可能這里是他最早的發源地之一http://www.destroydrop.com/javascripts/tree/ 上面有他的示例和api文檔. dtree使用簡單,使用起來就是引入一個dtree.js,dtree.css和一些小圖片文件。.在需要顯示樹的地方,插入類似下面的代碼 可以參照這里做些配置,觀看效果.可選的選項有folderLinks, useIcons, useLines, useSelection, useStatusText, closeSameLevel http://www.destroydrop.com/javascripts/tree/example/ 你可以放置radio或者checkbox在相應的節點上,或者在節點上加上鏈接. posted @ 2008-02-17 10:35 binge 閱讀(1533) | 評論 (0) | 編輯 收藏 用opencms java API獲取資源信息原文見 posted @ 2008-02-17 10:34 binge 閱讀(737) | 評論 (0) | 編輯 收藏 opencms分頁opencms列表顯示 <% pageContext.setAttribute("pageIndex", iPageIndex+""); 參考資料: http://www.javaedu.com/bbs/viewthread?thread=128 http://wangyi878750.blog.sohu.com/41725191.html http://l--w.blog.sohu.com/47996664.html http://wangyi878750.blog.sohu.com/41378072.html
posted @ 2008-02-17 10:31 binge 閱讀(1640) | 評論 (0) | 編輯 收藏 Ruby之Blocks&Iterator
Ruby之Blocks,Iterator
-------讀《Programming Ruby 2nd》 posted @ 2007-08-09 10:22 binge 閱讀(363) | 評論 (0) | 編輯 收藏 Ruby簡介Ruby是”一種用于迅速和簡便的面向對象編程的解釋性腳本語言”;這意味著什么?
迅速和簡便:
面向對象編程
以及:
如果你對上面的那些概念還不熟悉,繼續讀,別擔心.Ruby的箴言是”迅速和簡便”. posted @ 2007-08-02 10:16 binge 閱讀(446) | 評論 (0) | 編輯 收藏 ruby日記ruby初體驗 ror 制作簡單網頁 posted @ 2007-07-31 16:40 binge 閱讀(597) | 評論 (0) | 編輯 收藏 javascript操作word控件<script language="javascript"> word.CommandBars("File").Controls(6).Enabled= false; word.visible = true; posted @ 2007-07-25 10:54 binge 閱讀(3165) | 評論 (0) | 編輯 收藏 DB2原文: posted @ 2007-07-09 16:20 binge 閱讀(342) | 評論 (0) | 編輯 收藏 AXIS User Guide(1)
摘要: AXIS User Guide(1) 閱讀全文
posted @ 2007-01-03 20:54 binge 閱讀(1174) | 評論 (0) | 編輯 收藏 Sliding into WebDAV
摘要: Sliding into WebDAV 閱讀全文
posted @ 2007-01-03 20:49 binge 閱讀(2423) | 評論 (0) | 編輯 收藏 HibernateTemplate方法
摘要: HibernateTemplate方法索引 閱讀全文
posted @ 2006-12-26 15:47 binge 閱讀(4397) | 評論 (0) | 編輯 收藏 小心對js函數命名,避免和它的內置函數重名最近又遇到個對js取名不帥導致錯誤的問題,特開此貼,以示警戒: window得resizeto和resizeby方法對模式窗口無效。 posted @ 2006-12-10 13:25 binge 閱讀(720) | 評論 (0) | 編輯 收藏 webdav使用指南 最近研究了一下webdav,關于webdav的詳細信息可以在 google上搜索或者參看官方網站 筆者簡單的嘗試了它下面的slide和mod_dav. DAVLockDB /usr/local/apache/var/DAVLock" posted @ 2006-12-10 12:40 binge 閱讀(6009) | 評論 (0) | 編輯 收藏 mvnforum權限系統分析?? mvnforum是一個開源的論壇軟件.網址如下:
數據流程:
posted @ 2006-09-19 10:07 binge 閱讀(1548) | 評論 (0) | 編輯 收藏 Log4j/common log和各種服務器集成的問題
? 目前的很多商業和非商業的服務器中間件都默認集成了common-log甚至是log4j.因此當我門把我們的應用發布在上面的時候,都會遇到關于log方面的問題.
? 1.webshpere下面集成log4j. ? "WebSphere的類裝入器方式有兩種方式:PARENT_FIRST和PARENT_LAST。默認值是PARENT_FIRST,這種方式在載入當前classpath的類之前先載入其上一級classloader能夠裝入的類。這是標準的JVM classloader的默認策略。如果采用PARENT_LAST,則過程正好相反,即先載入當前classpath的類,再載入其上一級classloader能夠裝入的類,這樣可以用當前classpath中更新的類覆蓋其上一級classloader的相同類。受類裝入器方式影響的classloader包括application classloader、WAR classloader以及共享類庫的classloader。" ?因為websphere在共享類庫的classloader中有一套common logging,但是確沒有合適配置文件.如果我們把配置正確的log4j.properties文件放在共享類庫下,我們會發現log4j可以運行.但還有另外一個很通用的方式--改變webshpere的類庫加載順序.我們讓他先加載我們web應用所需的類庫.即我們把web應用的加栽方式改為PARENT_LAST. ? 哎,盡管我小心的提防,今天還是中招了,在我的配置里,log4j的配置文件只能讀取一次,不能一個應用一個配置文件.為了讓它加載自己的配置,可以自己寫(或者用spring的)servlet/listener去手動加載這個配置文件. ?2.jboss下面的集成log4j ? 大家可能都曾在為jboss下面配置log4j郁悶過.jboss比webshpere走的還遠.無論你的項目是否使用了log4j,jboss在自己啟動的時候就已經運行他了.也就是說在jboss加載自己共享類庫的時候,已經讀取了自己log4j.xml文件配置.這個文件在conf中可以找到.如果你需要為你的應用單獨配置一個catagory,你需要直接在這里配置. ???在webloader裝載應用的時候,如果應用中有log4j的包,似乎總出現appender已被占用的問題.筆者把log4j的包連帶應用中的log4j配置文件一并移去,世界清凈了. 關于為了讓應用自帶的log4j配置文件生效,有人建議修改 ?<attribute name="Java2ClassLoadingCompliance">false</attribute> 和 ?<attribute name="UseJBossWebLoader">false</attribute> 這兩個屬性. 3.sunone下面集成log4j ??? 距離上次用SunOne服務器已經好長時間了,似乎sunOne的log有些類似jboss,也是一個服務器的log集中管理.由于使用的不是很多,暫且在這里站個位子. 隨手貼點關于log的信息: http://wiki.apache.org/jakarta-commons/Logging/FrequentlyAskedQuestions http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/0408_baigang/part3.html ? posted @ 2006-09-05 17:23 binge 閱讀(1490) | 評論 (1) | 編輯 收藏 OpenLDAP快速上手OpenLDAP 快速上手 ?? Ben 的項目里面要用到 OpenLDAP, 我的項目里面也要用到 LDAP, 所以這 2 天集中看了一下 LDAP 相關的內容。做了個筆記,也算是為人類知識的積累做點或有或無的貢獻。 ?? OpenLDAP 的官方站點是 http://www.openldap.org 。 ?????? 上面有個 QuickStart, 我將大致按照這個來講解。
一、
安裝
二、 配置 OpenLDAP 有 2 個用戶最關注的配置文件。
一個是
slapd.conf
,
在他里面定義了最基本的
DN
以及管理員的賬號和密碼。
另一個是
LDIF
的文件。在它里面可以配置所有的用戶和組織。
1、?
我們先來了解
LDAP
的相關概念。
Ldap
是怎樣的一個結構呢
?用官方的話說:“
In LDAP, directory entries are arranged in a hierarchical tree-like structure. Traditionally, this structure reflected the geographic and/or organizational boundaries. Entries representing countries appear at the top of the tree. Below them are entries representing states and national organizations. Below them might be entries representing organizational units, people, printers, documents, or just about anything else you can think of..
”他是一個樹狀的結構。每一個節點被稱為一個
Entry
。這些
Entry
有著有趣的含義。
下面是他的
2
個實例。一個反映了
geographic
,一個反映了
organizational
。
每個
Entry
都有一個自己得一個標示
,我們把他叫
DN(Distinguished Name)
,這個
dn
包含了一個
RDN
(
Relative Distinguished Name
)。在上面的第二個圖例
中,Barbara Jensen的RDN是
uid=babs,他的dn是
uid=babs,ou=People,dc=example, dc=com。
每個節點都需要一個類別
,
這個類別信息用objectClass來表示。ObjectClass就是該節點的schema,他定義了該節點該有和不該有的屬性。默認的objectClass都在schema/core.schema中有定義。如果在你的配置過程中出現了關于找不到objectClass的問題,您不妨參看一下這里面有沒有你用到的objectClass
. 在schema文件夾下還有其他一些schema文件,你也可以定義自己的schema.想要加載其他的schema,你可以在slapd.conf文件中用include加入.如:include??./schema/core.schema.
為了方便識別,其實我們在DN里面用的都是objectClass的簡寫形式。如:ou代表organizationUnit,c代表country,st代表state,dc代表??等。
2、?
來看看
slapd.conf
這個文件
database bdb
suffix "dc=<MY-DOMAIN>,dc=<COM>"
rootdn "cn=Manager,dc=<MY-DOMAIN>,dc=<COM>"
rootpw secret
directory /usr/local/var/openldap-data
定義了數據庫,最基本的后綴,管理員的
dn
和密碼,以及數據存放路徑。
編輯好這個文件,我們就可以啟動了。
如果你把
ldap
安裝為
windows
服務,你可以像我一樣啟動:
net start OpenLDAP-slapd
?
3、?
我們主要操作的就是這個
LDIF
文件
注意,因為我們在
slapd.conf
中定義了一個
base dn
和一個管理員
dn
,所以我們需要首先把這
2
個
dn
加進來。
dn: dc=<MY-DOMAIN>,dc=<COM>
objectclass: dcObject
objectclass: organization
o: <MY ORGANIZATION>
dc: <MY-DOMAIN>
?
dn: cn=Manager,dc=<MY-DOMAIN>,dc=<COM>
objectclass: organizationalRole
cn: Manager
保存為
ldif
后綴的文件。然后我們用命令把這些信息加到
ldap
中去:
ldapadd -x -D "cn=Manager,dc=<MY-DOMAIN>,dc=<COM>" -W -f example.ldif
讓我們來查看以下我們的設置是否出現問題:
ldapsearch -x -b 'dc=example,dc=com' '(objectclass=*)'
上面的是
linux/unix
下的命令,
windows
下我們需要做點更改:
ldapsearch -x -b dc=example,dc=com (objectclass=*)
對,就是去掉引號。
為了察看方便,筆者建議使用
GUI
工具來查看,比如筆者使用的
Softerra LDAP Browser 2.6
。
?
三、
和
java
集成
Openldap.org 上有沒有講?有講?下面介紹的 JLDAP 就是干這個的。 我們需要看一下“ Java LDAP Overview ”里面的內容。內容不是很多,但很實用。 要在 java 中訪問 ldap ,我們需要一套 api, 你可以在下面的網站上獲得: http://developer.novell.com/wiki/index.php/LDAP_Classes_for_Java 在下在的文件里面有許多的例子,在 novell 的網站上也有很多的例子。我就不講了。 Try yourself 。 posted @ 2006-08-26 08:37 binge 閱讀(9161) | 評論 (7) | 編輯 收藏 JUDE還是很好用的
?? 沒有華麗的Rose,也沒有Togather,用JUDE的感覺也不錯.剛剛把PicoContainer反向了.可惜,好東西都陸續要收費了.只能用用Community /Free 版.
? JUDE的一個下載地址: ?? http://jude.change-vision.com/jude-web/product/community.html posted @ 2006-07-23 15:27 binge 閱讀(898) | 評論 (1) | 編輯 收藏 PicoContainer源碼導讀
摘要: 一、簡介?? 感謝“簡易java框架”分享的學習心得。循著他的足跡,我把picocontainer讀了一遍。源代碼的版本是1.2-RC-2。?? pico的官方站點:http://www.picocontainer.org/?? 由于它是一個專門的ioc容器,所以使用起來沒有spring那么麻煩。關于他的文檔,在官方站點上有一篇《5分鐘搞定pico》的文章。國人似乎也有很多的翻譯版本。講解得很詳細... 閱讀全文
posted @ 2006-07-23 14:30 binge 閱讀(3019) | 評論 (0) | 編輯 收藏 一個簡單的ThreadPool分析
一個簡單的ThreadPool
? 原文來自http://www.informit.com/articles/printerfriendly.asp?p=30483&r1=1&rl=1 ? 項目是多線程的,所以引入了線程池這個東西。池子是個老美寫的。在項目中表現的還不錯。所以把它摘出來,介紹給以后或許需要用到它的同行們。 ? 關于為什么要采用ThreadPool,原文已經提到了:創建一個線程是需要開銷的;如果線程數量過大的話,cpu就會浪費很大的精力做線程切換。 ? ThreadPool的實現過程就是對WorkerThread的同步和通信的管理過程。 ? 我們來看代碼。 ? 首先,在ThreadPool構造的時候,創建10個WorkerThread(size=10)并讓他們運行。每個WorkerThread線程都有個ThreadPool的引用,用于查詢ThreadPool的狀態和獲得同步鎖.WorkerThread運行以后,循環調用ThreadPool的方法進行查詢,如果沒有發現任務,ThreadPool告訴正在查詢的線程進入休眠狀態,WorkerThread釋放對查詢方法的鎖定.這樣在還沒有任務的時候,所有的10個WorkerThread都會進入休眠狀態,進入等待ThreadPool對象的等待鎖定池,只有ThreadPool對象發出notify方法(或notifyAll)后WorkerThread線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。 代碼片斷: while ( !assignments.iterator().hasNext() ) ??? wait(); 如果你有jprofile或者其他的觀察線程的工具,你可以看到有10個線程都在休眠狀態. ? 接著,我們向ThreadPool中加入任務,這些任務都實現了Runnable的run方法.(至于為什么把任務都做成Runnable,譯者至今也有些疑問?預定俗成?TimerTask也是實現自Runnable,弄得初學者經常把真正運行的線程搞混).ThreadPool每assign一個任務,就會發出一條消息,通知它的等待鎖定池中的線程.各個線程以搶占的方式獲得對象鎖,然后很順利的獲得一條任務.并把此任務從ThreadPool里面刪除.沒有搶到的繼續等待. Runnable r = (Runnable)assignments.iterator().next(); ?? assignments.remove(r); WorkerThread從ThreadPool那里獲得了任務,繼續向下執行。 target = owner.getAssignment(); ?? if (target!=null) { ??? target.run();????? ??? owner.done.workerEnd(); ?? } 記住,這里調用的是target.run();而不是調用的線程的start()方法。也就是說在這里表現出的WorkerThread和task之間的關系僅僅是簡單的方法調用的關系,并沒有額外產生新線程。(這就是我上面納悶為什么大家都實現Runnable來做task的原因) ?大家可能注意到,WorkerThread并沒有對異常作處理。而我們知道發生在線程上的異常會導致線程死亡。解決的辦法有2中,一種是通過threadpool的管理來重新激起一個線程,一種是把異常在線程之內消滅。在項目中,我采用的是第二中,因此這個片斷改稱這樣: if (target!=null) { ? try{ ??? target.run();????? ?? } ? catch(Throwable t){ ?....... ?? } ??? owner.done.workerEnd(); } 在WorkerThread完成一個task以后,繼續循環作同樣的流程. 在這個ThreadPool的實現里面,Jeff Heaton用了一個Done類來觀察WorkerThread的執行情況.和ThreadPoool的等待鎖定池不同,Done的等待鎖定池里面放的是初始化ThreadPool的線程(可能是你的主線程),我們叫他母線程. ? 在給出的測試例子中.母線程在調用complete()方法后進入休眠(在監視中等待),一開始是waitBegin()讓他休眠,在assign加入task以后,waitDone()方法讓他休眠.在WorkerThread完成一個task以后,通知waitDone()起來重新檢查activeThreads的數值.若不為0,繼續睡覺.若為0,那么母線程走完,死亡(這個時候該做的task已經做完了).母線程走完,ThreadPool還存在嗎?答案是存在,因為WorkerThread還沒有消亡,他們在等待下一批任務,他們有ThreadPool的引用,保證ThreadPool依然存在.大家或許已經明白Done這個類的作用了. ? 細心的讀者或許會發現,發生在Done實例上的notify()并不是像ThreadPool上的notify()那樣每次都能完成一項工作.比如除了第一個被assign的task,其他的task在assign進去的時候,發出的notify()對于waitDone()來說是句"狼來了". ?最后在ThreadPool需要被清理得時候,使每一個WorkerThread中斷(這個時候或許所有的WorkerThread都在休眠)并銷毀.記住這里也是一個異步的過程.等到每一個WorkerThread都已經銷毀,finalize()的方法體走完.ThreadPool被銷毀. ?for (int i=0;i<threads.length;i++) { ?? threads[i].interrupt(); ?? done.workerBegin(); ?? threads[i].destroy(); ? } ? done.waitDone(); 為什么有句done.workerBegin();?不明白. 參考文章: http://www.zdnet.com.cn/developer/common/printfriend/printfriendly.htm?AT=39276905-3800066897t-20000560c posted @ 2006-07-16 20:07 binge 閱讀(7188) | 評論 (1) | 編輯 收藏 關于作者
??? 呂華兵,男,24歲。
??? 2000-2004年,在中國民航大學讀書。學習期間,筆者以技術部長身份參與了校易航工作室暨易航網站的創建和發展工作,參與和獨立完成了多個項目的設計和開發。 ?? 2004年5月到2006年5月,在北京環亞時代(港新合資)天津軟件中心從事Java的開發工作。參與了CMCC的OA的實施工作,主力開發了MOCHA AM的前端顯示和MOCHA ITAM的報表系統。 ? 2006年5月至今,在美國易達軟件有限公司工作。設計并開發了Information Publisher的多線程后端程序。 ?? ? 筆者長期從事j2se,j2ee的開發工作,對各種設計模式亦有豐富的使用經驗。 ? 筆者從來重視規范的軟件流程,對RUP有很深的理解。 ? 對于javascript,dhtml,ajax,筆者有著豐富的經驗。 ? 筆者也是“拿來主義”的擁躉,不遺余力的翻譯、學習、使用和宣傳各種開源項目。目前使用過的開源項目有:spring、picocontainer、hibernate、ibatis、struts、webwork等框架系列,DOM系列,commons系列,Quartz,log4j,ant,oscache,proxool以及各種報表工具等等。 ?筆者從來重視知識的提取和積累,這也是筆者開此blog的主要原因,同時,也希望通過此blog結交更多的朋友。 posted @ 2006-07-16 10:15 binge 閱讀(416) | 評論 (0) | 編輯 收藏 關于GWT的第一手經驗譯者安:你敢大膽采用最新的技術嗎?你顧慮哪些方面?下面的采訪將給我們提供一個參考。 posted @ 2006-07-08 13:47 binge 閱讀(1172) | 評論 (0) | 編輯 收藏 java.util.Date和java.sql.Date
java.sql.Date,java.sql.Time和java.sql.Timestamp三個都是java.util.Date的子類(包裝類)。
但是為什么java.sql.Date類型的值插入到數據庫中Date字段中會發生數據截取呢? java.sql.Date是為了配合SQL DATE而設置的數據類型?!耙幏痘钡膉ava.sql.Date只包含年月日信息,時分秒毫秒都會清零。格式類似:YYYY-MM-DD 當我們調用ResultSet的getDate()方法來獲得返回值時,java程序會參照"規范"的java.sql.Date來格式化數據庫中的數值。因此,如果 數據庫中存在的非規范化部分的信息將會被劫取。在sun提供的ResultSet.java中這樣對getDate進行注釋的: Retrieves the value of the designated column in the current row of this <code>ResultSet</code> object as a “java.sql.Date” object in the Java programming language. 同理。如果我們把一個java.sql.Date值通過PrepareStatement的setDate方法存入數據庫時,java程序會對傳入的java.sql.Date規范化 ,非規范化的部分將會被劫取。 ?然而,我們java.sql.Date一般由java.util.Date轉換過來,如:java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime()). ?顯然,這樣轉換過來的java.sql.Date往往不是一個規范的java.sql.Date. ?在http://www.thunderguy.com/semicolon/2003/08/14/java-sql-date-is-not-a-real-date/ 文章中提到,要保存java.util.Date的精確值, ?我們需要利用java.sql.Timestamp. ?感謝這篇文章的鋪墊:http://community.csdn.net/Expert/topic/4354/4354971.xml?temp=.5256616 posted @ 2006-07-06 16:51 binge 閱讀(4287) | 評論 (0) | 編輯 收藏 log4j配置概要
官方網址:
http://logging.apache.org/log4j/docs/index.html 一個中文翻譯的文檔: http://www.jaxwiki.org/zh/project/logging.apache.org/log4j/docs/manual.html 我摘出黃色字體表明幾條列在下面,也是筆者認為log4j最主要特點的濃縮: 1.階層式的命名: 如果一個logger 的名字后面跟著一個點號(dot),它就是點號(dot)后面的那個logger的前輩( ancestor),是這個晚輩(descendant) 的前綴。如果在它自己和這個晚輩之間沒有其它的前輩,它和這個晚輩之間就是父子關系。 2.級別繼承 對于一個給定的logger C,它繼承的級別等于logger階層里,從C開始往 3.執行規則 在一個級別為q(被指定的或繼承的)的logger里,一個級別為p的日志請求,只有在p >= q 時才能夠被執行。 Logger C的log輸出信息將被輸出到C的所有appenders和它的前輩的 appenders。這就是"appender additivity"的意思。但是,如果logger C的前輩,比如說P,P的additivity flag被設置為 log4j.appender.A1.layout.ConversionPattern=%d %-5p [%t] %-c (%13F:%L) %3x - %m%n 在配置文件中,log4j可以訪問到系統環境變量。具體的變量參考相關資料。 posted @ 2006-07-04 10:07 binge 閱讀(533) | 評論 (0) | 編輯 收藏 Mysql數據庫使用技巧 我承認我用mysql有很長時間了,不過似乎我仍然很白。好吧,還是寫寫吧。 posted @ 2006-07-03 23:16 binge 閱讀(1445) | 評論 (2) | 編輯 收藏 |
|