honzeland

          記錄點(diǎn)滴。。。

          常用鏈接

          統(tǒng)計(jì)

          Famous Websites

          Java

          Linux

          P2P

          最新評(píng)論

          2010年1月29日 #

          Interesting books read or being read

          Oracle Performance Tuning for 10gR2, Second Edition -- http://www.amazon.com/Oracle-Performance-Tuning-10gR2-Second/dp/1555583458

          posted @ 2011-04-07 15:30 honzeland 閱讀(204) | 評(píng)論 (0)編輯 收藏

          GAE Logging

          Official document: http://code.google.com/appengine/docs/java/runtime.html#Logging  
          Log4j configuration in production env:
          http://blog.xam.de/2010/03/logging-in-google-appengine-for-java.html 
          http://www.mail-archive.com/google-appengine-java@googlegroups.com/msg06396.html

          posted @ 2010-11-11 12:52 honzeland 閱讀(270) | 評(píng)論 (0)編輯 收藏

          Read a Stress Test Report

          Load Average: 

          1. http://www.teamquest.com/resources/gunther/display/5/index.htm
          2. 
          http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages (Great)

          posted @ 2010-11-05 14:16 honzeland 閱讀(279) | 評(píng)論 (0)編輯 收藏

          GAE Mapping

          Executing Simple Joins Across Owned Relationships

          posted @ 2010-10-27 13:27 honzeland 閱讀(252) | 評(píng)論 (0)編輯 收藏

          Servlet Mappings - rules, pattern....

          http://www.rawbw.com/~davidm/tini/TiniHttpServer/docs/ServletMappings.html

          posted @ 2010-10-22 22:41 honzeland 閱讀(288) | 評(píng)論 (0)編輯 收藏

          GWT-RPC in a Nutshell - go through the internal

          GWT-RPC in a Nutshell: http://www.gdssecurity.com/l/b/2009/10/08/gwt-rpc-in-a-nutshell/

          posted @ 2010-10-22 22:40 honzeland 閱讀(226) | 評(píng)論 (0)編輯 收藏

          [zz] Tuning Your Stress Test Harness

          HTTP://WWW.THESERVERSIDE.COM/NEWS/1365219/TUNING-YOUR-STRESS-TEST-HARNESS?ASRC=SS_CLA_315053&PSRC=CLT_81

          posted @ 2010-09-11 12:27 honzeland 閱讀(245) | 評(píng)論 (0)編輯 收藏

          GWT 2 Spring 3 JPA 2 Hibernate 3.5 Tutorial – Eclipse and Maven 2 showcase

          See details at: http://www.javacodegeeks.com/2010/07/gwt-2-spring-3-jpa-2-hibernate-35.html
          Executing Simple Joins Across Owned Relationships for gae: http://gae-java-persistence.blogspot.com/2010/03/executing-simple-joins-across-owned.html

          posted @ 2010-08-20 13:01 honzeland 閱讀(419) | 評(píng)論 (0)編輯 收藏

          Java remote invocation frameworks (RPC)

          1. Remote Method Invocation (RMI)

          2. Hessian

          3. Burlap

          4. HTTP invoker

          5. EJB

          6. JAX-RPC

          7. JMX

          posted @ 2010-06-09 14:25 honzeland 閱讀(252) | 評(píng)論 (0)編輯 收藏

          Tomcat Architecture Diagram

          zz from http://marakana.com/forums/tomcat/general/106.html


          Valve and Filter:
          "Valve" is Tomcat specific notion, and they get applied at a higher level than anything in a specific webapp. Also, they work only in Tomcat.

          "Filter" is a Servlet Specification notion and should work in any compliant servlet container. They get applied at a lower level than all of Tomcat's
          Valves.

          However, consider also the division between your application and the application  server. Think whether the feature you're planning is part of your application, or is it rather a generic feature of the application server, which could have uses in other applications as well. This would be the correct criteria to decide between Valve and Filter.

          Order for filter: The order in which they are defined matters. The container will execute the filters in the order in which they are defined.

          posted @ 2010-05-10 10:39 honzeland 閱讀(1544) | 評(píng)論 (0)編輯 收藏

          Hibernate Annotations

          Use one single table "blank_fields" for both A and B. "blank_fields" has fields: 'ref_id', 'blank_field', 'type'. 'type' is used to identify which entity the record belongs to. Use 'type' + 'ref_id' to specify the collection of elements for one entity.

          @Entity
          @Table(name 
          = "table_a")
          public class A {
              
          private Set<BlankField> blankFields = new HashSet<BlankField>();
             
              @CollectionOfElements
              @Fetch(FetchMode.SUBSELECT)
              @Enumerated(EnumType.ORDINAL)
              @JoinTable(name 
          = "blank_fields", joinColumns = { @JoinColumn(name = "ref_id") })
              @Cascade(value 
          = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
              @Column(name 
          = "blank_field", nullable = false)
              @SQLInsert(sql 
          = "INSERT INTO blank_fields(ref_id, blank_field, type) VALUES(?,?,0)")
              @Where(clause 
          = "type=0")
              
          public Set<BlankField> getBlankFields() { // BlankField is an enum
                  
          return blankFields;
              }

              @SuppressWarnings(
          "unused")
              
          private void setBlankFields(Set<BlankField> blankFields) {
                  
          this.blankFields = blankFields;
              }
          // End B

          @Entity
          @Table(name 
          = "table_b")
          public class B {
              
          private Set<BlankField> blankFields = new HashSet<BlankField>();
             
              @CollectionOfElements
              @Fetch(FetchMode.SUBSELECT)
              @Enumerated(EnumType.ORDINAL)
              @JoinTable(name 
          = "blank_fields", joinColumns = { @JoinColumn(name = "ref_id") })
              @Cascade(value 
          = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
              @Column(name 
          = "blank_field", nullable = false)
              @SQLInsert(sql 
          = "INSERT INTO blank_fields(ref_id, blank_field, type) VALUES(?,?,1)"// used for insert
              @Where(clause = "type=1"// used for query, if not @CollectionOfElements, such as @OneToMany, use @WhereJoinTable instead
              public Set<BlankField> getBlankFields() {
                  
          return blankFields;
              }

              @SuppressWarnings(
          "unused")
              
          private void setBlankFields(Set<BlankField> blankFields) {
                  
          this.blankFields = blankFields;
              }
          }

          當(dāng)然還有其他的方式來實(shí)現(xiàn)上面的需求,上面采用的單表來記錄不同實(shí)體的associations(這兒是CollectionOfElements,并且返回的是Set<Enum>,不是Set<Embeddable>),然后用'type'來區(qū)分不同的實(shí)體,這樣做的好處是:數(shù)據(jù)庫(kù)冗余少,易于擴(kuò)展,對(duì)于新的實(shí)體,只需加一個(gè)type值,而不需更改數(shù)據(jù)庫(kù)表結(jié)構(gòu)。另外一種采用單表的方式是為每個(gè)實(shí)體增加新的字段,如
          "blank_fields": 'a_id', 'b_id', 'blank_field', a_id reference table_a (id), b_id reference table_b (id). 這樣在映射的時(shí)候更簡(jiǎn)單,
          對(duì)于A,映射為
          @JoinTable(name = "blank_fields", joinColumns = { @JoinColumn(name = "a_id") })
          對(duì)于B,映射為
          @JoinTable(name = "blank_fields", joinColumns = { @JoinColumn(name = "b_id") })
          這樣作的缺點(diǎn)是:帶來了數(shù)據(jù)庫(kù)冗余,對(duì)于blank_fields來講,任一條記錄,a_id和b_id中只有一個(gè)不為null。當(dāng)多個(gè)實(shí)體共用這個(gè)表時(shí),用上面的方法更合理,如果共用實(shí)體不多時(shí),這種方法更方便。

          posted @ 2010-04-20 17:20 honzeland 閱讀(455) | 評(píng)論 (0)編輯 收藏

          One Hibernate Session Multiple Transactions

          The case to use One Hibernate Session Multiple Transactions:
          each transaction would NOT affect others.
          i.e., open multiple transactions on the same session, even though one transaction rolls back, other transactions can be committed. If one action fails, others should fail too, then we should use one transaction for all actions.

          Note:
          A rollback with a single Session will lead to that Session being cleared (through "Session.clear()").
          So do lazy collections still work if the session is cleared? =>Not of any objects that you loaded up until the rollback. Only for new objects loaded afterwards.
          We should load necessary objects to session for each transactional action to avoid LazyInitializationException, even if those objects are loaded before other forward transactional actions, since forward action may be rolled back and clear the session.

          BTW, Hibernate Session.merge() is different with Session.update() by:
          Item item2 = session.merge(item);
          item2 
          == item; // false, item - DETACHED, item2 - PERSIST
          session.update(item); // no return value, make item PERSIST


          posted @ 2010-03-01 11:47 honzeland 閱讀(411) | 評(píng)論 (0)編輯 收藏

          org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only

          發(fā)生這種異常的case:
              @Transactional
              
          public void foo() {
                  
          try{
                      bar();
                  } 
          catch (RuntimeException re) {
                      
          // caught but not throw further
                      
                  }
                  
              }

              @Transactional
              
          public void bar() {
                  
              }
          如果foo在調(diào)用bar的時(shí)候,bar拋出RuntimeException,Spring在bar return時(shí)將Transactional標(biāo)記為Rollback only, 而foo捕獲了bar的RuntimeException,所以Spring將會(huì)commit foo的事務(wù),但是foo和bar使用的是同一事務(wù),因此在commit foo事務(wù)時(shí),將會(huì)拋出UnexpectedRollbackException。注意:如果foo和bar在同一class中,不會(huì)出現(xiàn)這種情況,因?yàn)椋?br />
          Since this mechanism is based on proxies, only 'external' method calls coming in through the proxy will be intercepted. This means that 'self-invocation', i.e. a method within the target object calling some other method of the target object, won't lead to an actual transaction at runtime even if the invoked method is marked with @Transactional!

          可以通過配置log4j來debug Spring事務(wù)獲取情況:
          To delve more into it I would turn up your log4j logging to debug and also look at what ExerciseModuleController is doing at line 91, e.g.: add a logger for org.springframework.transaction

          posted @ 2010-02-24 18:02 honzeland 閱讀(6986) | 評(píng)論 (0)編輯 收藏

          Discussion for Open Session In View Pattern for Hibernate

          From: http://www.mail-archive.com/stripes-users@lists.sourceforge.net/msg02908.html


          posted @ 2010-01-29 17:20 honzeland 閱讀(214) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 景德镇市| 长沙县| 晋州市| 洛隆县| 宝清县| 郎溪县| 景洪市| 米易县| 铜川市| 岢岚县| 八宿县| 浮梁县| 西藏| 麻城市| 辽宁省| 开江县| 集贤县| 武胜县| 天津市| 仲巴县| 闸北区| 奉节县| 汽车| 全南县| 仁布县| 台南县| 化德县| 乡宁县| 周宁县| 石首市| 白银市| 手游| 桃园市| 伊宁市| 那曲县| 泸溪县| 阜南县| 武邑县| 乐都县| 綦江县| 大洼县|