云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

               摘要: Tapestry的頁面  閱讀全文

          posted @ 2009-05-31 20:31 云自無心水自閑 閱讀(3008) | 評論 (0)編輯 收藏

               摘要: Tapestry的基本配置和目錄結構  閱讀全文

          posted @ 2009-05-30 13:55 云自無心水自閑 閱讀(3105) | 評論 (0)編輯 收藏

          Ben Gidley進行了一個關于Tapestry5.1.0.5的性能測試。原文見:http://blog.gidley.co.uk/2009/05/tapestry-load-testing-round-up.html
          最后,他得出的結論是:
          1、Tapestry的速度是比較快的。即使在一定的壓力下Tapestry的反應時間也相當短。Tapestry并不總是最快的解決方案,但它對于我(譯注:Gidley)已經足夠快了。
          2、Tapestry沒有內存泄漏。我以前曾經聽說過Tapestry會占用大量的內存,實際上,正好相反。它使用的內存比struts/jsp還要少。內存使用曲線相當的平坦。
          3、Tapestry在表單應用中比struts要快。Tapestry在應用變得非常復雜的時候有一定的優勢。這可能利益于其模塊池技術。
          4、Tapestry不輕易崩潰,即使崩潰,也會恢復。Tapestry在極大壓力的情況下確實會相應變慢,但是它會暫停或者遇到瓶頸(譯注:我懷疑是作者這里有筆誤,從語氣和上下文來看,感覺應該不是暫停和沒有瓶頸),這的確是一個好事情。另外在壓力減輕之后,Tapestry能夠自動恢復。
          5、更多的CPU并一定會提升性能。在一系列的測試中,性能與CPU的數量并不是線性增長。2個CPU確實比一個CPU的性能翻倍了,但是4個CPU并不比2個CPU的性能翻倍。因此,建議在多個雙核CPU的虛擬機上運行,而不是少數的4核CPU上運行。
          6、64位比32位要快。這一點很讓我驚奇。不管在Solaris還是Linux上,運行在64位JVM中要比在32位JVM要快。
          7、Linux要比Open Solaris X86要快。這一點同樣讓我驚奇。我本來以為性能應該是相似的。
          最終的結論是:Tapestry即使是對于一個大并發量的Web應用來說也已經足夠快了。如果你的應用有性能問題的話,那么問題應該出在你自己本身的代碼上。

          上述是原文的翻譯。下面是一些評論:
          Howard(應該是Tapestry的作者):Taptestry5和Struts相比,我認為差別應該是在反射的使用上(包括在java.bean.Introspector中大量的synchronization)。因此在Struts將查詢參數的名稱映射成JavaBean屬性的時候,會比較耗時。而Tapestry5是不使用反射的,Tapestry在查詢參數和JavaBean的屬性之間使用一種“預編程”向量組件,也許這就是兩者(Tapestry和Struts)的差別。當然,這只是猜想,如果要證實的話,是需要花費很多時間的。我認為OGNL的教訓不是說反射很慢,而是在于一個關鍵代碼上的序列存取對于性能的影響是相當大的。
          最后一個小提示:我覺得在Tapestry5應用中如果把BeanModel從BeanModelSource中只提取一次,然后給Grid,BeanEditForm等等提供一個可以存取的方法,將會獲得相當的性能提升。這樣就不是需要每次都重建BeanModel,將減少操作的消耗。
          jeverest:我也進行了Tapestry的性能測試,并且同意Tapestry5的性能比較以前版本的要快。

          posted @ 2009-05-16 19:38 云自無心水自閑 閱讀(2208) | 評論 (1)編輯 收藏

          Tapestry5.1經過數個alpha,Beta版的非正式發布,今天終于在主頁看到最終正式版5.1.0.5的發布。

          這次的版本算得上是比較迅速了,從官方主頁中可以看到,第一版5.1.0.1是2月24日發布了,短短3個月不到的時間,發了4個版本,動作不可謂不迅速。

          5.1中具有以下幾個新特性
          1、Tapestry現在開始采用BlackBird作為JavaScript的調試工具
          2、一個Ajax的事件請求現在可以返回一個MultiZoneUpdate實例來更新瀏覽器中的多個區
          3、客戶端數字的檢驗實現了國際化
          4、相對于5.0.18有顯著的性能提升,主要是頁面的加載時間和頁面的渲染時間大大縮短
          5、Tapestry的IoC服務現在既可以是Advised也可以是Decorated
          6、Tapestry的服務現在可以注入到Spring的Bean中
          7、對于支持Gzip的客戶端,Tapestry現在可以壓縮返回包
          8、有序的和Mapped的配置信息現在可以被重新賦值
          9、屬性表達式得到加強,現在可以調用有參數的方法,或者創建一個列表
          10、IoC的貢獻既可以是類(自動生成實例)也可以是具體的實例
          11、現在提供了一個簡單的可以重寫內建服務的方法

          這里面最讓我感興趣的還是性能的提升,不知道在展示大數據量的時候性能的提升到底有多少,有機會一定要測試一下。

          posted @ 2009-05-07 21:08 云自無心水自閑 閱讀(1723) | 評論 (0)編輯 收藏

          MySql中設置了Replication后,平常的使用都一直沒有問題。
          今天,我在Sql Brower中用Sql命令插入了幾條數據卻沒有被復制。
          原因是這樣的:我在Sql Browser中沒有選擇我需要數據更新的數據庫,而且使用Mysql這個數據庫作為當前數據庫。
          而在Sql中指定了我的數據庫名稱,這樣,我的數據如我所愿地進行了更新。
          但是,通過這種方式的操作好像無法被復制。
          我思考了一下,覺得應該是Log記錄的問題,MySql設置了數據庫復制后,有一個Log會記錄所有數據庫的變更,另一個數據庫會根據這個Log來進行同樣的數據操作。這樣就實行了數據的復制。
          我感覺如果你沒有使用use <數據庫名>這個命令,而是使用其他的數據庫作為當前數據庫,那么Log的記錄就缺失了,因此復制也將不會進行。

          posted @ 2009-05-02 22:06 云自無心水自閑 閱讀(1529) | 評論 (0)編輯 收藏

          1. 安裝路徑中的目錄盡量不要有帶空格的, 比如:最好不要安裝在programs file下,好像會導致找不到conf下的配置文件
          2. 不知道為什么,我無法使用development.conf來啟動Resin, 只有resin.conf是可用的。

          posted @ 2009-05-01 12:43 云自無心水自閑 閱讀(327) | 評論 (0)編輯 收藏

          1. TagLib的運用(Spring Security)
          在web.xml中添加:
              <servlet>
                  <servlet-name>JSPSupportServlet</servlet-name>
                  <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
                  <load-on-startup>1</load-on-startup>
               </servlet>

          在頁面的最上面添加<#assign security=JspTaglibs["http://www.springframework.org/security/tags"] />
          使用的時候:
          <@security.authorize ifAnyGranted="ROLE_USER,ROLE_ADMIN">
              Hello
          </@security.authorize>
          注意中間用的是句號,而不再是冒號,我一開始在這里沒注意,花了不少時間解決這個問題

          2. Context Path的取得
          在Google中搜了一下,有人提問題,但是沒有得到解決,后來查資料才知道應該是這樣寫的:
          ${request.contextPath}

          3. 字符串的比較
          字符串不能直接比較大小,我原來兩個日期字符串的比較就需要先轉換成日期型
          <#if dateString1?date("yyyy-MM-dd HH:mm:ss") < dateString2?date("yyyy-MM-dd HH:mm:ss")>
            日期小
          </#if>

          4. <#if><#else>
          在if比較時小于號可以直接使用,但是大于號不行,要寫成
          <#if a &gt; b>
          </#if>

          5. 在jfinal中使用map
          在jfinal中如果像通常情況下使用map, <#list map?keys as key> ${key} </#list>
          會發現不僅是所有鍵值,所有的java方法名也被打印出來,比如:hashcode, getClass, put, get, clone, equals, containsKey, values等等。
          正確的方法是:
          <#list map.keySet() as key>
          ${key}
          </#list>

          if the key of the map is not String, such as Integer or other types, 
          we can access the value of the map by map.get( 1 ) instead of map[1]

          posted @ 2009-04-28 12:19 云自無心水自閑 閱讀(3421) | 評論 (1)編輯 收藏

          最近把Tapestry和JSF都研究了一下,最后還是決定選擇Tapestry。
          最主要的原因還是從性能上的考慮。
          Tapestry的5.1版的最主要改動就是想提升性能,而JSF似乎還沒有這方面的行動。
          而且從Tapestry5.1的版本發布情況來看,動作相當的迅速。預計Final版馬上就要出來了。
          據Lewis的說法,Tapestry5.0在頁面內容比較少的時候,速度幾乎和純JSP頁面一樣快。只是在展示大量數據的會有一定的性能瓶頸。
          所以,他推出5.1來解決這個問題。

          而JSF的實現和組件庫呈現一種百花齊放的狀態,難免會有一些良莠不齊。
          當然大家需要選擇其中比較好的,但是選型本身就是一件非常頭疼的事情。
          我選擇的是MyFaces+RichFaces,但是我查看了RichFaces的在線Demo后,對其展示速度不是很滿意。
          不知道是演示網站的問題還是RichFaces本身的問題。
          也歡迎大家進行討論。

          不過Tapestry相對JSF而言的一個缺點就是文檔不夠豐富。畢竟JSF是標準啊。

          posted @ 2009-04-21 23:09 云自無心水自閑 閱讀(2386) | 評論 (3)編輯 收藏


          1. 啟動速度比我的MyEclipse7.0要快不少。
          2. 部署還是有問題
              a. 速度慢,
              b. 有一個spring的配置文件沒有自動更新
              c. 啟動和停止glassfish都非常慢
          3. 沒有內建支持Jetty

          posted @ 2009-04-17 10:57 云自無心水自閑 閱讀(452) | 評論 (0)編輯 收藏

            最近一段時間研究了一下Tapestry, 確實是一個非常優秀的web框架。到目前為止,我覺得與別的框架比較下來,Tapestry最獨到的地方在于Taglib的設計。
            根據我的觀察,好像只有Tapestry實現了將Taglib嵌入到html控件這樣的功能。或許這個說法不準確,不過最是想表達這樣一個意思。使用了Tapestry標簽的jsp頁面是可以在DreamWeaver之類的頁面編輯工具中完整地顯示出來的。
            不你struts或者jsf那樣,使用s:或者h: 即:<s:text>...
            而Tapestry是:<input t:type="">

          當然,其事件驅動的思想也是與大多數的Web框架不同的,不過JSF在這一點上和它是非常類似的。關鍵是jsf是JEE的標準,而且得到了不少開源組織的 擁護,產生了myfaces之類的實現,而且有了大量諸如:fichfaces,icefaces,restfaces等等的components package. 在這一點上是Tapesty無法比擬的。

          posted @ 2009-04-02 07:36 云自無心水自閑 閱讀(348) | 評論 (0)編輯 收藏

          僅列出標題
          共29頁: First 上一頁 10 11 12 13 14 15 16 17 18 下一頁 Last 
          主站蜘蛛池模板: 绥化市| 福海县| 江山市| 页游| 和田市| 开封县| 丽江市| 咸宁市| 成安县| 宜春市| 景东| 龙江县| 永嘉县| 夹江县| 灵台县| 杂多县| 历史| 乐至县| 宜阳县| 仁寿县| 江山市| 宜春市| 繁峙县| 凤山市| 石屏县| 庐江县| 禄劝| 册亨县| 应城市| 东港市| 宣化县| 伽师县| 乐山市| 海伦市| 新乡县| 乳源| 平陆县| 青冈县| 勃利县| 莱州市| 小金县|