qqjianyue代碼工

          砌java代碼
          posts - 62, comments - 9, trackbacks - 0, articles - 10
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          The prefix "tx" for element "tx:advice" is not bound

          這個錯誤的原因很簡單是:

          我們在定義申明AOP的時候。。沒有加載schema。

          具體表現如下:

          <beans>

           <tx:advice id="txAdvice" transaction-manager="transactionManager">  
               <tx:attributes>  
                   <tx:method name="get*" read-only="true"/>  
                   <tx:method name="*" propagation="REQUIRES_NEW" rollback-for="Exception"/>  
               </tx:attributes>  
           </tx:advice>

           <!-- aop代理設置-->  
           <aop:config proxy-target-class="true">   
          ....

           </aop:config>

          </beans>

          這時會拋出異常不認<TX>標簽。。起先還以為是沒有加載JAR包呢。。

          后來讀AOP文檔才發現<beans>中要加入“xmlns:aop”的命名申明,并在“xsi:schemaLocation”中指定aop配置的schema的地址

          配置文件如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="  xmlns:xsi="  xmlns:aop="  xmlns:tx="  xsi:schemaLocation="http://www.springframework.org/schema/beans
                              
          http://www.springframework.org/schema/beans/spring-beans.xsd
                              
          http://www.springframework.org/schema/tx
                              
          http://www.springframework.org/schema/tx/spring-tx.xsd
                              
          http://www.springframework.org/schema/aop
                              
          http://www.springframework.org/schema/aop/spring-aop.xsd">

          這些才是最關鍵的地方。。后面的配置不變。。。。

          posted @ 2008-08-30 00:01 Qzi 閱讀(1181) | 評論 (0)編輯 收藏

          如果在/sandh/web-inf/classes下面沒有ehcache.xml這個文件,會報這個錯誤,No configuration found.

          Configuring ehcache from ehcache-failsafe.xml found in the classpath:.....這個文件是hibernate緩存配置文

           

          <ehcache>
           <diskStore path="java.io.tmpdir"/>
           <defaultCache
              maxElementsInMemory="10000"
              eternal="false"
              timeToIdleSeconds="10000"
              timeToLiveSeconds="10000"
              overflowToDisk="true"
           />
            <cache  name="com.hour41.hibernate.vo.common.City"
              maxElementsInMemory="10000"
              eternal="false"
              timeToIdleSeconds="10000"
              timeToLiveSeconds="10000"
              overflowToDisk="true"
           />
          </ehcache>

          上面配置了默認類緩存和城市類緩存策略:

          <diskStore>表示當內存緩存中對象數量超過類設置內存緩存數量時,將緩存對象寫到硬盤,path=”java.io.tmpdir

          ”表示把數據寫到這個目錄下。Java.io.tmpdir目錄在運行時會根據相對路徑生成。
          <defaultCache>表示設定緩存的默認數據過期策略。
          <cache>表示設定用具體的命名緩存的數據過期策略。
          name表示具體的緩存命名。
          maxElementsInMemory表示cache中最大允許保存的對象數據量。
          eternal表示cache中數據是否為常量。
          timeToIdleSeconds表示緩存數據鈍化時間
          timeToLiveSeconds表示緩存數據的生命時間。
          overflowToDisk表示內存不足時,是否啟用磁盤緩存。 

           

          將上面代碼另存為ehcache.xml存放在lib/classes里面即可!

          posted @ 2008-08-28 21:20 Qzi 閱讀(3285) | 評論 (0)編輯 收藏

          1:配置文件applicationContext.xml問題
              org.springframework.orm.hibernate3.HibernateTransactionManager 與  
              org.springframework.orm.hibernate3.LocalSessionFactoryBean出現問題.
              解決方法:
              這兩個出現紅色的小x其實是與三大框架集成的時候,包沖突有關,首先刪除asm-2.2.3.jar 然后加入
              spring-hibernate3.jar,commons-pool.jar,commons-dbcp.jar包,上述的問題解決!

          2:asm包問題
              spring與hibernate的沖突.兩個框架都依賴asm.jar包spring的版本是asm-2.23.jar.hibernate依賴的是asm.jar 
              方法1:只刪除asm-2.23.jar包
              方法2:所有asm開頭的jar包,和一個cglib-2.1.3.jar都刪除,上網下載一個最新的asm-all-3.0.jar加進去
          兩種方法都試一下,有些人方法1行,方法2不行,有些人相反。

          3:使用MeEclipse的時候,可能的警告:
          java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
          CGLIB Enhancement failed
          解決方案:
          在使用Spring的AOP編程時,會用到這幾個lib:
          asm-2.2.2.jar
          asm-commons-2.2.2.jar
          asm-util-2.2.2.jar
          Hibernate使用如下lib:
          asm.jar
          asm-attrs.jar
          其中asm-2.2.2.jar與asm.jar存在類上的沖突!?。?br /> 使用其中之一或兩者都使用,可能會出現如下錯誤:
          java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
          java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
          java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。
          解決辦法是:
          1.去掉類路徑上的關于Hibernate的3個lib
          asm.jar
          asm-attrs.jar
          cglib-2.1.3.jar
          2.加入Spring中的以下4個lib
          asm-2.2.2.jar
          asm-commons-2.2.2.jar
          asm-util-2.2.2.jar
          cglib-nodep-2.1_3.jar

          3:注意以上的刪包要確保tomcat服務器里面的包也被刪了,否則有殘留的時候,測試出錯。
          所以在框架集成時經常遇到,包沖突與少包問題,大家注意一下!哈哈!

          posted @ 2008-08-28 12:12 Qzi 閱讀(2787) | 評論 (1)編輯 收藏

          “從 char 數據類型到 datetime 數據類型的轉換導致 datetime 值越界”
           錯誤的注意羅,下面是SQL Server下兩種變量的詳細介紹,時間值越界的明顯就會報這個錯誤
           
          datetime
          smalldatetime

          代表日期和一天內的時間的日期和時間數據類型。
           
            datetime

          17531199991231的日期和時間數據,精確度為百分之三秒。如下表所示,把值調整到.000、.003、或.007秒的增量。(曾經試過使用1752有錯,1753就沒有錯了,郁悶?。。?/span>

          microsoft&reg;sqlserver™拒絕所有其不能識別為1753年到9999年間的日期的值。
            smalldatetime
          190011207966的日期和時間數據精確到分鐘。29.998秒或更低的smalldatetime值向下舍入為最接近的分鐘,29.999秒或更高的smalldatetime值向上舍入為最接近的分鐘。
            --returnstimeas12:35
            selectcast(2000-05-0812:35:29.998assmalldatetime)
            go
            --returnstimeas12:36
            selectcast(2000-05-0812:35:29.999assmalldatetime)
            go
           
          注釋
          microsoftsqlserver
          用兩個4字節的整數內部存儲datetime數據類型的值。第一個4字節存儲basedate之前或之后的天數?;A日期是系統參考日期。不允許早于175311datetime值。另外一個4字節存儲以午夜后毫秒數所代表的每天的時間。
          smalldatetime
          數據類型存儲日期和每天的時間,但精確度低于datetime。sqlserversmalldatetime的值存儲為兩個2字節的整數。第一個2字節存儲190011后的天數。另外一個2字節存儲午夜后的分鐘數。日期范圍從190011207966,精確到分鐘。

          posted @ 2008-08-28 11:34 Qzi 閱讀(1693) | 評論 (0)編輯 收藏

          第一條:javascript非常脆弱,請一定要小心,不要敲錯一個單詞,也不要異想天開地理解js函數,出現一點差錯都搞死人。改善方法是:多點copy,使用firefox的firebug也是調試javascript的好方法。

          1.getElementsByTagName(tagName)可以使用很多元素對象來調用,我沒有全試過,所以不敢打包票,不過基本上就是你想要用到的標簽,都可以使用它來獲得他的子標簽array,不管幾層以內。

          2.getElementById只能用用document對象來調用,你試一下看看div能否使用這個函數找到他的子標簽,答案是否的。 頁面上的id可以直接用作變量名來引用標簽對象。

          3.getElementsByName也只能用在document對象,然后不是任意一個標簽都有name,注意有些標簽沒有name的,你異想天開地為任何標簽都加個name屬性,結果就是這個name并不能用來索引這個標簽。

          4.form元素里面的input元素可以通過.id或者.name的方式獲得其中元素, 即使隔著div和table都可以. 但是div和table是無法這樣從form中獲得的, form里面的元素也無法從table和div中使用這種方法獲得.

          注意"s"的區別,唯一性

          innerHTML屬性可以改變span里面的值, 但是innerText卻不行,不知道為什么.

          最好的調試方法,alert函數。

          以上不敢包正確,但是的確是我自己測試以后得來的,改變了自己以前很多的想法,原來設計者搞得那么卑鄙的,弄死人了。

          歡迎補充,有關[]的使用來代替函數查找,我還沒有試驗。

          posted @ 2008-08-27 18:57 Qzi 閱讀(1029) | 評論 (0)編輯 收藏

          javascript是經典的敏感性語言,小小問題都會導致整體功能出錯。

          自己調用document.form[0].submit()的時候,會出現submit is not a function錯誤(使用firefox的firebug調試,非常好用),原因是頁面的form中出現具有name=submit的元素,這樣會影響到javascript調用submit()函數,改掉那個name=submit的元素即可。

          另外submit提交struts1.2的action時候,如果后面跟有?method=***等的參數,那么注意,這個函數里面不要出現有method等關鍵字。
          例如函數:
          function changeAction(methodArg, wayArg){
           with (document.forms[0]) {
            action="<html:rewrite page='/BgdInfoReportAction.do'/>?method="+ methodArg + "&way=" + wayArg;
            submit();
           }
          }
          使用?method=***是在使用dispatchAction時候的做法原來我的參數名稱是method和way,
          結果報錯:Action[/BgdInfoReportAction] does not contain method named post
          原因是?后的method變得沒有效,那么這個submit提交使用默認的post方法提交(servlet默認分為post和get方法嘛),
          后來我將method改成methodArg和way改成wayArg,這個action就能夠正確執行。
          我重復測試改與不改的效果,仍然與上面一樣。總結原因可能是是javascript的一些關鍵字沖突,所以盡量使用特殊一點的字符串作為變量名。

          posted @ 2008-08-27 15:42 Qzi 閱讀(4085) | 評論 (1)編輯 收藏

          安裝cvsnt

          直接雙擊運行cvsnt安裝文件,安裝過程中可以選擇以經典、自定義和完全三種方式安裝,在自定義方式中可以選擇安裝路徑。安裝完成后,在控制面板里出現一個CVSNT Server的項目,圖標是一條魚~~

          配置cvsnt

          安裝完成cvsnt后,就可以從控制面板中那條魚來配置cvsnt了。首先,你要新建一個目錄用來存放cvs倉庫,我用的是G:\CVSROOT。這里需要先了解兩個概念:cvs倉庫和模塊。我是這樣理解的,cvs倉庫相當于VS里一個解決方案,它可以包含多個項目,即模塊。

          打開cvsnt的控制面板后,可以看到7個選項卡,分別是:Server Information,用于查看服務器信息及一些簡單的統計信息;Respository configuration,配置CVS倉庫,包括添加、刪除等;Server Setting,配置服務器運行的一些參數,諸如端口、加密、壓縮等選項;Capatiblity Options,有關兼容性的選項,在這里主要配置一個兼容非cvsnt客戶端的版本響應為cvs 1.11.2;Plugins,插件配置,安裝完成可以不用管的~;Advanced,安裝完成后也不用管了;About,在這里可以管理cvsnt服務的狀態,停止或啟動cvsnt和cvsnt lock服務。

          其實簡單來說,custom換默認設置安裝完成后,要設置的東西只有兩個:cvs倉庫和服務器設置。

          服務器設置:設置Run as為系統管理員帳號Administrator,或者新建一個本地用戶,專門用于cvs。使用一個新建的本地帳戶的好處是可以使用NTFS的權限控制來保證服務器的安全,例如我當前的用戶是flora。

          CVS倉庫設置:進入Respository configuration選項卡,點擊Add,出現添加CVS倉庫的對話框,Type選擇Standard即可,然后在Location里輸入之前新建的用于存放CVS倉庫的文件夾,我用的是D:\cvs,在Name里會自動轉換成一個可以用的CVS倉庫的別名,比如我用的是“/cvs”,其他的都默認,確定后cvsnt會詢問你所添加的CVS倉庫目錄沒有初始化,是否進行初始化,點“是”就行了,cvsnt會自動初始化指定的目錄,初始化完成之后,可以在里面看到一個CVSROOT的文件夾,這個文件夾存儲很多配置信息的。

          用戶設置配置完CVS倉庫后,為了使CVS能使用帳號進行訪問而不是使用windows用戶,需要添加普通使用用戶。

          打開cvs control panel(在開始菜單里面的快捷方式或者控制面板),server setting中run as 選擇具有windows管理者權限的用戶,應用。例如我當前的flora。在cvs control panel的about中重啟一下cvs。


          打開一個cmd,設置一下cvsroot環境變量,輸入:

          set cvsroot=:pserver:flora@127.0.0.1/cvs

          注意,這里的flora是當前windows用戶名,既run as中選擇的那個,/cvs是之前添加的CVS倉庫的別名,如果你的設置不同,請把它們替換成自己的值,以后不再說明。

          接著cvs login命令登錄CVS服務器,因為添加用戶時沒有設置密碼,因此可以不輸入密碼直接回車登錄:

          添加普通新用戶
          cvs passwd -a -r flora jianyue
          jianyue是你想新添加的用戶名 flora指定現在用具有admin權限的用戶來創建jianyue用戶
          否則出現錯誤信息:Only administrators can add or change another's password
          這條命令后就可以設置這個用戶的密碼。
          成功后可以使用這個用戶了


          在Myeclipse中連接cvs服務器:
          在還沒有沒有添加cvs版本控制的工程上(已添加了的,菜單會有所不同)
          在工程名上右鍵->team->share project->create a new repository location,填入必須的信息,像我的是本地的,就填:
          host:localhost
          Repository path:cvs(上面配置時候的那個倉庫別名)
          填上合適的用戶名與密碼,我這里是jianyue  密碼hello
          端口與類型,如果服務器沒有修改過的話,都用默認的就行
          這樣子,這個工程文件就會被上傳到CVSROOT目錄上,本地的文件系統打開這個目錄,也可以看見被上傳的工程。
          以后就可以方便的使用版本控制了。

          上面的方法對于忘記用戶密碼的情況也可以解決,在cmd使用系統用戶登陸cvs,就可以按照上面步驟重建那個用戶,修改其密碼,
          cvs會默認覆蓋這個用戶。

          posted @ 2008-08-22 11:21 Qzi 閱讀(8821) | 評論 (0)編輯 收藏

          出現warning log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).信息的經典處理方法:

          在eclipse下工程的src目錄下新建文件名為:log4j.properties
          內容為:

          log4j.rootLogger=WARN, Console

          log4j.appender.Console=org.apache.log4j.ConsoleAppender
          log4j.appender.Console.layout=org.apache.log4j.PatternLayout
          log4j.appender.Console.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n

          log4j.logger.com.genuitec.eclipse.sqlexplorer=DEBUG
          log4j.logger.org.apache=WARN
          log4j.logger.org.hibernate=WARN

          項目編譯的時候會自動copy到WEB-INF/class目錄下,這樣tomcat啟動的時候,就可以啟動log4j消息機制。
          這個機制的最大好處是將一般不會顯示出來的問題顯示在console上,方便發現隱秘的錯誤,特別是當你不知道哪里錯,
          但是網站的確有問題的時候。

          posted @ 2008-08-21 14:54 Qzi 閱讀(294) | 評論 (0)編輯 收藏

          在tomcat的目錄conf\Catalina\localhost下,可以增加xml文件,來指向file系統中任意一處作為網站系統的子根目錄,例如:
          atcs.xml文件:

          <!--

              Context configuration file for the Tomcat Host Manager Web App

              $Id: host-manager.xml 303743 2005-03-11 22:39:26Z remm $

          -->


          <Context path="/atcs" docBase="D:\WorkSpace\Huadu_Atcs3\WebContent"
          privileged="true" antiResourceLocking="false" antiJARLocking="false">
          </Context>

          其中docBase指向站點的根目錄,path與文件名相同(在此為atcs),這個path最好也要與docBase下的WEB-INF下的web.xml里面的 
            <context-param>
              <param-name>webAppRootKey</param-name>
              <param-value>atcs.root</param-value>
            </context-param>
          paraam-value相同。
          三者相同的情況下,才可以正確的訪問網站(訪問方式:http://localhost:8080/atcs)這樣就作為localhost的一個子站點可以運行了。

          常見錯誤:多個工程目錄下的web.xml文件的<param-value>atcs.root</param-value>相同,就算在tomcat的conf下配置不同的名,例如配置atcs2.xml指向另外一個工程目錄,但是恰巧那個工程下的web.xml里面也配置相同的webAppRootKey,那么將會出現其中一個工程不能夠訪問的問題。
          網頁出現經典的The requested resource (/atcs/) is not available錯誤!

          問題發現方法:在myEclipse下配置log4j,之后會將一些不會報出來的錯誤亦會報出來,根據信息就可以發現是相同的webAppRootKey覆蓋問題。在此我的log4j的報錯信息:
          Web app root system property already set to different value: 'atcs.root' = [D:\workspace2\Huadu_Atcs3\WebContent\] instead of [D:\WorkSpace\Huadu_Atcs3\WebContent\] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!

          log4j的配置問題參考:http://www.aygfsteel.com/jianyue/archive/2008/08/21/223500.html

          posted @ 2008-08-21 14:48 Qzi 閱讀(822) | 評論 (0)編輯 收藏

          僅列出標題
          共5頁: 上一頁 1 2 3 4 5 
          主站蜘蛛池模板: 青神县| 冕宁县| 怀安县| 烟台市| 东乡族自治县| 徐闻县| 土默特左旗| 甘南县| 凌海市| 郴州市| 邛崃市| 新竹市| 昌图县| 曲沃县| 龙口市| 郴州市| 宁国市| 舟山市| 沛县| 潼关县| 聂拉木县| 越西县| 新蔡县| 洞头县| 澜沧| 松潘县| 伊金霍洛旗| 乌拉特前旗| 阆中市| 海门市| 多伦县| 禄劝| 龙口市| 西安市| 井陉县| 东阿县| 井研县| 安国市| 鞍山市| 枞阳县| 连江县|