StevenBot-Saltsam

          眼睛能裝下世界,為何卻裝不下眼淚? 一只風箏一輩子只為一根線冒險。 那不是一場游戲,為何總有一根線牽著心懷,隱隱作疼? 那不是一段邂逅,為何飄在橋上的影子,總纏進夢鄉? 那不是一個夢境,為何你的溫柔私語,總是不經意的響起?

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          datas link

          OSChinal Sources codes Library

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          2011年11月16日 #

          Spring 學習

               摘要: 1.spring屬性的注入配置1.      屬性的注入配置Bean文件的配置,即為bean的各屬性賦值 <bean id="sone" class="edu.yzu.entity.Student" init-method="initialMethod" parent="sbean" ...  閱讀全文

          posted @ 2011-11-16 01:16 Steven_bot 閱讀(544) | 評論 (0)編輯 收藏

          2011年10月25日 #

          Platform來獲取一些系統的路徑和參數

          在Eclipse的插件開發中,可以通過Platform來獲取一些系統的路徑和參數。 
          假定Eclipse的安裝路徑為:D:/Java/eclipse 
          創建的Workspace路徑為:D:/Java/eclipse/workspace 

          Platform.getNL():zh_CN 
          Platform.getWS():win32 
          Platform.getOS():win32 
          Platform.getOSArch():x86 
          Platform.getStateStamp():155 
          Platform.getUserLocation().getURL():file:/D:/Profiles/windowsloginname/user/ 
          Platform.getInstallLocation().getURL():file:/d:/Java/eclipse/ 
          Platform.getConfigurationLocation().getURL():file:/d:/Java/eclipse/configuration/ 
          Platform.getInstanceLocation().getURL():file:/D:/Java/eclipse/workspace/ 
          Platform.getLocation():D:/Java/eclipse/workspace 
          Platform.getLocation().toOSString():D:/Java/eclipse/workspace 
          Platform.getLogFileLocation():D:/Java/eclipse/workspace/.metadata/.log 
          Platform.getLogFileLocation().toOSString():D:/Java/eclipse/workspace/.metadata/.log 
          Platform.getPluginStateLocation(Platform.getPlugin("NamedPlugin")):D:/Java/eclipse/workspace/.metadata/.plugins/NamedPlugin 
          Platform.getPlugin("NamedPlugin").getStateLocation():D:/Java/eclipse/workspace/.metadata/.plugins/NamedPlugin 
          Platform.getPlugin("NamedPlugin").getDescriptor():NamedPlugin_1.0.0 
          Platform.getPlugin("NamedPlugin").getDescriptor().getLabel():Plug-in Name 
          Platform.getPlugin("NamedPlugin").getDescriptor().getProviderName():ProviderName 
          Platform.getPlugin("NamedPlugin").getDescriptor().getUniqueIdentifier():NamedPlugin 
          Platform.getPlugin("NamedPlugin").getDescriptor().getInstallURL():platform:/plugin/NamedPlugin_1.0.0/ 
          Platform.getPlugin("NamedPlugin").getDescriptor().getInstallURL().getPath():/plugin/NamedPlugin_1.0.0/

          posted @ 2011-10-25 10:49 Steven_bot 閱讀(1525) | 評論 (0)編輯 收藏

          2011年10月8日 #

          Tomcat的參數配置及一般問題的解決

               摘要: 如何解決端口沖突導致tomcat無法啟動的問題Tomcat在啟動時主要使用下面的3個端口<Server port="8005" shutdown="SHUTDOWN" debug="0"><Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8...  閱讀全文

          posted @ 2011-10-08 09:34 Steven_bot 閱讀(1874) | 評論 (0)編輯 收藏

          tomcat啟動jvm內存設置(轉載)

          Linux:
          在/usr/local/apache-tomcat-5.5.23/bin目錄下的catalina.sh
          添加:JAVA_OPTS=''-Xms512m -Xmx1024m''
          要加“m”說明是MB,否則就是KB了,在啟動tomcat時會報內存不足。
          -Xms:初始值
          -Xmx:最大值
          -Xmn:最小值
          Windows
          在catalina.bat最前面加入
          set JAVA_OPTS=-Xms128m -Xmx350m 
          如果用startup.bat啟動tomcat,OK設置生效.夠成功的分配200M內存.
          但是如果不是執行startup.bat啟動tomcat而是利用windows的系統服務啟動tomcat服務,上面的設置就不生效了,
          就是說set JAVA_OPTS=-Xms128m -Xmx350m 沒起作用.上面分配200M內存就OOM了..
          windows服務執行的是bin\tomcat.exe.他讀取注冊表中的值,而不是catalina.bat的設置.
          解決辦法:
          修改注冊表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
          原值為
          -Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
          -Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
          -Xrs
          加入 -Xms300m -Xmx350m  
          重起tomcat服務,設置生效

          文章出處:飛諾網(www.firnow.com):http://dev.firnow.com/course/3_program/java/javajs/2008215/99782.html

          posted @ 2011-10-08 09:31 Steven_bot 閱讀(757) | 評論 (0)編輯 收藏

          合理配置tomcat內存-java.lang.OutOfMemoryError: PermGen space及其解決方法

          轉載自: http://it.chinawin.net/softwaredev/article-c4e1.html
          不論是在開發還是在已經發布的項目中,我們經常會碰到的一個問題:
              java.lang.OutOfMemoryError: PermGen spacePermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,OutOfMemoryError: PermGen space從表面上看就是內存溢出,解決方法是加大內存。說說為什么會內存溢出:PermGen space用于存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域,它和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APPLICATION會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web服務器對JSP進行pre compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)那么就會產生此錯誤信息了。建議:將相同的第三方jar文件移置到tomcat/lib目錄下,這樣可以達到減少 jar 文檔重復占用內存的目的。
          改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 其中-Xms<size> 為JVM初始化堆的大小
                  -Xmx<size> 為JVM堆的最大值
                  -XX:MaxNewSize 為調大新對象區,以減少垃圾回收器回收次數但是有的時候可能這樣的設置還會不行(比如,當Server應用程序加載較多類時,即jvm加載類時,永久域中 的對象急劇增加,從而使jvm不斷調整永久域大小,為了避免調整),你可以使用更多的參數配置,如: java -Xms512m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m
          其中,使用   -XX:MaxPermSize標志來增加永久域的大小,-XX:PermSize標志設置初始值
          如 果虛擬機啟動時設置使用的內存比較小而在這種情況下有許多對象進行初始化,虛擬機就必須重復地增加內存來滿足使用。由于這種原因,我們一般把-Xms和 -Xmx設為一樣大,而堆的最大值受限于系統使用的物理內存。一般使用數據量較大的應用程序會使用持久對象,內存使用有可能迅速地增長。當應用程序需要的 內存超出堆的最大值時虛擬機就會提示內存溢出,并且導致應用服務崩潰。因此一般建議堆的最大值設置為可用內存的最大值的80%。
          在tomcat中redeploy時出現outofmemory的錯誤.
          可以有以下幾個方面的原因:
          1,使用了proxool,因為proxool內部包含了一個老版本的cglib.
          2, log4j,最好不用,只用common-logging
          3, 老版本的cglib,快點更新到最新版。
          4,更新到最新的hibernate3.2

          --------------------------------------------------------------------------------------------------------------------------------

                  主要包括避免死循環,應該及時釋放種資源:內存, 數據庫的各種連接,防止一次載入太多的數據。導致java.lang.OutOfMemoryError的根本原因是程序不健壯。因此,從根本上解決Java內存溢出的唯一方法就是修改程序,及時地釋放沒用的對象,釋放內存空間。 遇到該錯誤的時候要仔細檢查程序,嘿嘿,遇多一次這種問題之后,以后寫程序就會小心多了。

                      3)對resin容器,同樣可以在啟動時對jvm設置內存限度。在bin文件夾下創建一個startup.bat文件,內容如下:
                           @echo off
                            call "httpd.exe"  "-Xms128M" "-Xmx256M"
                            :end 
                            其中"-Xms128M"為最小內存,"-Xmx256M"為最大內存。

             2.    優化程序,釋放垃圾。

                     一次是用hibernate查詢數據時,一次查詢過多的數據,例如30000條,此時程序出錯,該死的java.lang.OutMemoryError,后來調整了該部分的代碼,每次只取出指定量的數據,成功的解決該問題。

                      還有一次是當測試人員loadRunner做壓力測試時,并發200個用戶時,運行不到幾分鐘整個weblogic都癱掉,真夠狠的,又是java.lang.OutOfMemoryError, PM叫我檢查同事寫的代碼,折騰了我好久,結果發現原來是由于session的資源一直沒有被釋放產生的,真把俺給氣死!!!在該工程中在web.xml文件中設置了一個session的偵聽期,當檢測到session超時時,進入指定的類進行相應處理,而該同事在進行了自定義的處理后,沒有通過session的invalidate()方法將session的資源釋放,導致當大批量并發時,造成內存溢出。

                      解決java.lang.OutOfMemoryError的方法有如下幾種:

          1. 增加jvm的內存大小。方法有:

                      1)在執行某個class文件時候,可以使用java -Xmx256M aa.class來設置運行aa.class時jvm所允許占用的最大內存為256M。
                      2)對tomcat容器,可以在啟動時對jvm設置內存限度。對tomcat,可以在catalina.bat中添加:
           "set CATALINA_OPTS=-Xms128M -Xmx256M
            set JAVA_OPTS=-Xms128M -Xmx256M",或者把%CATALINA_OPTS%和%JAVA_OPTS%代替為-Xms128M -Xmx256M



          1、PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域OutOfMemoryError: PermGen space從表面上看就是內存益出,解決方法也一定是加大內存。說說為什么會內存益出:這一部分用于存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web服務器對JSP進行pre compile的時候。

          改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

          2、在tomcat中redeploy時出現outofmemory的錯誤.

          可以有以下幾個方面的原因:

          1,使用了proxool,因為proxool內部包含了一個老版本的cglib.

          2, log4j,最好不用,只用common-logging

          3, 老版本的cglib,快點更新到最新版。

          4,更新到最新的hibernate3.2

          3、

          這里以tomcat環境為例,其它WEB服務器如jboss,weblogic等是同一個道理。
          一、java.lang.OutOfMemoryError: PermGen space

          PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,
          這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中,
          它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對
          PermGen space進行清理,所以如果你的應用中有很多CLASS的話,就很可能出現PermGen space錯誤,
          這種錯誤常見在web服務器對JSP進行pre compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小
          超過了jvm默認的大小(4M)那么就會產生此錯誤信息了。
          解決方法: 手動設置MaxPermSize大小

          修改TOMCAT_HOME/bin/catalina.sh
          在“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行:
          JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
          建議:將相同的第三方jar文件移置到tomcat/shared/lib目錄下,這樣可以達到減少jar 文檔重復占用內存的目的。

          二、java.lang.OutOfMemoryError: Java heap space
          Heap size 設置
          JVM堆的設置是指java程序運行過程中JVM可以調配使用的內存空間的設置.JVM在啟動的時候會自動設置Heap size的值,
          其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可
          進行設置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
          提示:在JVM中如果98%的時間是用于GC且可用的Heap size 不足2%的時候將拋出此異常信息。
          提示:Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置為相同,而-Xmn為1/4的-Xmx值。 
          解決方法:手動設置Heap size
          修改TOMCAT_HOME/bin/catalina.sh
          在“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行:
          JAVA_OPTS="-server -Xms800m -Xmx800m   -XX:MaxNewSize=256m"

          三、實例,以下給出1G內存環境下java jvm 的參數設置參考:

          JAVA_OPTS="-server -Xms800m -Xmx800m  -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "


          三、相關資料

          /show/3/7/20061112220131.htm

          /show/3/7/20061112220054.htm

          均使用tomcat作為WEB服務器,每天訪問量百萬多,tomcat仍然運行良好。建議大家有問題多從自己程序入手,多看看java的DOC文檔
          并詳細了解JVM的知識。這樣開發的程序才會健壯。

          延伸閱讀:

          JVM 性能調整的一些基本概念

          apache+Tomcat負載平衡設置詳解[轉]

          java - the Java application launcher

          JVM調優[轉]
          Java如何通過VC調用VB編寫的COM - 

          JNI完全手冊 - 

          JBuilder9制作EXE文件 - 

          如何在Java中調用dll - 

          JNI調用固有方法 - 

           

          java.lang.OutOfMemoryError這個錯誤我相信大部分開發人員都有遇到過,產生該錯誤的原因大都出于以下原因:JVM內存過小、程序不嚴密,產生了過多的垃圾。

                     在一年多的工作過程中,遇到該問題的印象最深有兩次。

          posted @ 2011-10-08 09:30 Steven_bot 閱讀(9156) | 評論 (0)編輯 收藏

          如何修改和查看tomcat內存大小

          為了解決tomcat在大進行大并發請求時,出現內存溢出的問題,請修改tomcat的內存大小,其中分為以下兩種方式:


          一、使用 catalina.bat 等命令行方式運行的 tomcat

          查看系統最大支持內存命令:java -Xmx1024m -version

          1、修改 tomcat\bin\Catalina.bat 文件
          windows環境下:

          在166行左右
          rem Execute Java with the applicable properties ”以下每行
          %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

          在 %DEBUG_OPTS% 后面添加-Xms256m -Xmx512m

          linux環境下:

          打開在Tomcat的安裝目錄的bin文件的catalina.sh文件,進入編輯狀態.
          在注釋后面加上如下腳本:
          JAVA_OPTS='-Xms512m -Xmx1024m'
          JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=64M -XX:MaxPermSize=256m"

          其中 JAVA_OPTS='-Xms512m -Xmx1024m' 是設置Tomcat使用的內存的大小.

          -XX:PermSize=64M -XX:MaxPermSize=256m 指定類空間(用于加載類)的內存大小 

          保存后,重新以命令行的方式運行 tomcat ,即可,然后通過最后面介紹的如何觀察tomcat現有內存情況的方法進行查看是否已經變更成功。

           

           

           

          二、使用 系統中的 “服務”,或者開始菜單的可執行程序運行的tomcat

          1、關閉 現在正在運行的tomcat


          2.1 [注意]

          [高版本tomcat配置方法]

          如果是tomcat 5.5 或者是 5.0.28 之后的版本,在 Java 選項卡中,下方,會有
          Inital memory Pool:   
          Maximum memory Pool:
          Thread stack size:
          三個輸入框,在這里即可不用做上面的操作,直接配置內存大小,只需要設置
          Inital memory Pool 為 256
          Maximum memory Pool 為 512

          點擊確定后,重啟tomcat 生效

           

          如果您是低版本的tomcat,發現沒有上面那幾個錄入框,請看下面的操作步驟

           

          [低版本tomcat配置方法]

          在開始菜單中,找到“Apache Tomcat 5.0”,并選擇“Configure Tomcat”,在彈出的對話框窗口中,切換到 Java VM 選項卡,并在 Java Options 輸入框的最前面輸入

          -Xms256m -Xmx512m

          即輸入框中的內容會像下面的代碼(與自己的環境有所區別)

          -Xms256m -Xmx512m
          -Dcatalina.home="C:\tomcat5"
          -Djava.endorsed.dirs="C:\tomcat5\common\endorsed"
          -Xrs

          設置完后,點擊“確定”,并重啟tomcat即可。

           

          三、查看現有tomcat的內存大小情況

          1、啟動tomcat
          2、訪問 http://localhost:8080/manager/status ,并輸入您在安裝tomcat時輸入的用戶與口令,如 admin ,密碼 admin(密碼是您在tomcat安裝時輸入的)

          注:添加用戶,修改conf/tomcat-users.xml

          <?xml version='1.0' encoding='utf-8'?>
          <tomcat-users>
            <role rolename="tomcat"/>
            <role rolename="role1"/>
            <role rolename="manager"/>
            <role rolename="admin"/>
            <user username="tomcat" password="tomcat" roles="tomcat"/>
            <user username="both" password="tomcat" roles="tomcat,role1"/>
            <user username="role1" password="tomcat" roles="role1"/>
            <user username="admin" password="admin" roles="admin,manager"/>
          </tomcat-users>

          3、進入了Server Status頁面,可以在JVM表格中看到 
          Free memory: 241.80 MB Total memory: 254.06 MB Max memory: 508.06 MB

          上面的文字即代表了,當前空閑內存、當前總內存、最大可使用內存三個數據。
          確定了最大內存足夠大時,tomcat即可正常運轉

          posted @ 2011-10-08 09:23 Steven_bot 閱讀(60471) | 評論 (1)編輯 收藏

          2011年10月7日 #

          在tomcat上部署pentaho 1.5.3

          1 . 首先需要下載pentaho-j2ee-deployment- , pentaho-data- 和 pentaho-solution- 三個包,分別解壓到三個不同的地方
          2 . 從命令行進入pentaho-j2ee-deployment 目錄,運行ant -p 會列出所有的ant 任務,執行war-pentaho-tomcat-hypersonic任務,成功之后會生成4個war包,pentaho-portal-layout.war , pentaho-style.war 和 sw-style.war ,(sw-style.war 是steel-wheel-style ,是可選項,可能是pentaho的一個例子或者是pentaho的一種style風格),還有多出一個tomcat目錄下的hsqldb目錄下有一個pentaho.war ,如果你執行的是war-pentaho-mysql就是在tomcat目錄下有個mysql5目錄,里面一樣是pentaho.war.我選用的是hsqldb .
          3 . 在你的tomcat的安裝目錄下找到conf / server.xml 文件,在其中的host 元素下加上如下這一段,這一段是從pentaho的文檔里面抄來的,manual-deployment-pentaho- ,其中它列出來的有些多余,這個文檔應該使用confluence 用pdf 方式導出的,抄的時候注意檢查一下xml 元素排版上的問題.它列出的resource 元素太多了,你查看pentaho-data- 包里面,應該只有四個數據庫hibernate,sampledata,shark,quartz ,把不用的resource元素都刪掉,(應該是最上面的四個).如果你的tomcat啟動不了了,檢查一下你添加的部分是不是有錯。

          xml 代碼
          1. <Context path="/pentaho" docbase="webapps/pentaho/">
          2. <Resource name="jdbc/SampleData" auth="Container"
          3. type="javax.sql.DataSource" maxActive="20" maxIdle="5" maxWait="10000"
          4. username="pentaho_user" password="password"
          5. factory="org.apache.commons.dbcp.BasicDataSourceFactory"
          6. driverClassName="org.hsqldb.jdbcDriver"
          7. url="jdbc:hsqldb:hsql://localhost/sampledata" />
          8. <Resource name="jdbc/Hibernate" auth="Container"
          9. type="javax.sql.DataSource"
          10. factory="org.apache.commons.dbcp.BasicDataSourceFactory"
          11. maxActive="20" maxIdle="5" maxWait="10000" username="hibuser"
          12. password="password" driverClassName="org.hsqldb.jdbcDriver"
          13. url="jdbc:hsqldb:hsql://localhost/hibernate" />
          14. <Resource name="jdbc/Quartz" auth="Container"
          15. type="javax.sql.DataSource"
          16. factory="org.apache.commons.dbcp.BasicDataSourceFactory"
          17. maxActive="20" maxIdle="5" maxWait="10000" username="pentaho_user"
          18. password="password" driverClassName="org.hsqldb.jdbcDriver"
          19. url="jdbc:hsqldb:hsql://localhost/quartz" />
          20. <Resource name="jdbc/Shark" auth="Container"
          21. type="javax.sql.DataSource"
          22. factory="org.apache.commons.dbcp.BasicDataSourceFactory"
          23. maxActive="20" maxIdle="5" maxWait="10000" username="sa" password=""
          24. driverClassName="org.hsqldb.jdbcDriver"
          25. url="jdbc:hsqldb:hsql://localhost/shark" />
          26. Context>


          4 . 把pentaho.war copy到tomcat 的webapps目錄下,它會自動解壓的,然后關閉tomcat , 找到pentaho/WEB-INF/web.xml 文件,找到solution-path元素,指向你解壓后的pentaho-solution- 目錄,注意java里面是用正斜杠 / ,如果你從windows的地址欄copy的話注意把反斜杠改一下.
          5 . 修改pentaho/WEB-INF/classes 目錄下的log4j.xml文件,把 里面的value改成INFO,或者更高,這一步是可選項,主要是啟動的時候出現很多不必要的debug 信息.如果你啟動的時候出錯了,再改回來。(一般都是solution-path沒有找對,我用7-zip解壓的時候老是解壓到一個新的目錄,所以后來指定 solution-path 的時候,目錄地址高了一級.) 
          6 . 啟動pentaho-data- 目錄里面的hsqldb數據庫.
          7 . 這個時候啟動tomcat ,應該是不報任何錯誤的.你把瀏覽器指向http://localhost:8080/pentaho ,會看到pentaho的界面的,只不過是沒有什么顏色的那種.
          8 . 把編譯後的三個war文件copy到tomcat 的webapps目錄下,等它們自動解壓之后,再進去看,發現有了樣式了。安裝就完成了.

          貼幾張圖:
          pentaho成功啟動后應該有 Pentaho BI 平臺服務器就緒 這句話.

          安裝了style 和 portal 包之后的登錄界面

          在pentaho-data- 目錄的lib 目錄下執行java -cp hsqldb.jar org.hsqldb.util.DatabaseManager 出現的hsqldb 的manager 登錄畫面
          用戶名和密碼都在相應目錄的數據庫文件里面,hsqldb的數據庫文件是可以用
          文本編輯器打開的,搜索password就可以找到用戶名和密碼了
          sampledata 里面的數據
          我在安裝的時候也碰到了諸多的問題,
          1 . 一開始編譯的時候使用的ant war-pentaho-tomcat 任務,它直接報錯,說找不到rdbms目錄,后來猜想這個任務應該是留給其他數據庫編譯的時候擴展的.直接就換了war-pentaho-tomcat-hypersonic 任務重新編譯了一次
          2 . 后來從文檔里copy出數據源的那句話出錯了,導致tomcat啟動不了,因為從pdf文件copy的那段話排版有問題,后來把它粘貼到eclipse(裝了WTP插件的)里面,一格式化就看出來了,context 元素和后面的屬性path中間的空格沒了,還有多出來了幾個resource元素.
          3 . 指定solution-path的時候目錄高了一級.
          4 . 啟動tomcat的時候出現了很多不必要的debug信息,修改log4j文件就可以了,它在tomcat/bin 目錄下還會生成幾個log文件,像是server.log 和ReportEngine_.log 文件。

          關鍵還是要掌握學習的方法,學會思考問題 . 安裝的時候也遇到了很多問題,但是只要你細細的分析問題的原因,總是可以找出解決的辦法的.

          posted @ 2011-10-07 22:06 Steven_bot 閱讀(647) | 評論 (0)編輯 收藏

          Eclipse debug模式

          1.Step Into (also F5) 跳入 
          2.Step Over (also F6) 跳過 
          3.Step Return (also F7) 執行完當前method,然后return跳出
          4.step Filter 逐步過濾 一直執行直到遇到未經過濾的位置或斷點(設置Filter:window-preferences-java-Debug-step Filtering) 
          5.resume 重新開始執行debug,一直運行直到遇到breakpoint 
          6.hit count 設置執行次數 適合程序中的for循環(設置 breakpoint view-右鍵hit count) 
          7.inspect 檢查 運算。執行一個表達式顯示執行值 
          8.watch 實時地監視變量的變化 
          9.我們常說的斷點(breakpoints)是指line breakpoints,除了line breakpoints,還有其他的斷點類型:field(watchpoint)breakpoint,method breakpoint,exception breakpoint. 
          10.field breakpoint 也叫watchpoint(監視點) 當成員變量被讀取或修改時暫掛 
          11.添加method breakpoint 進入/離開此方法時暫掛(Run-method breakpoint) 
          12.添加Exception breakpoint 捕抓到Execption時暫掛
          |-斷點屬性: 
          |-1.hit count 執行多少次數后暫掛 用于循環 
          |-2.enable condition 遇到符合你輸入條件(為ture\改變時)就暫掛 
          |-3.suspend thread 多線程時暫掛此線程 
          |-4.suspend VM 暫掛虛擬機 
          13.variables 視圖里的變量可以改變變量值,在variables 視圖選擇變量點擊右鍵--change value.一次來進行快速調試。 
          14.debug 過程中修改了某些code后--〉save&build-->resume-->重新暫掛于斷點

          posted @ 2011-10-07 21:36 Steven_bot 閱讀(773) | 評論 (0)編輯 收藏

          使用 Apache Wink、Eclipse 和 Maven 開發 RESTful Web 服務

               摘要: Apache Wink 是一個促進創建和使用 REST Web 服務的 Apache 孵化器項目。通過 REST Web 服務,客戶機和服務之間的交互局限于一組預定義的操作,客戶機和服務器之間的交互的復雜性限制為客戶機和服務之間交換的資源表示。這種方法支持構建可互操作、可伸縮、可靠的、基于 REST 的分布式超媒體系統。常用縮略詞API: 應用程序編程接口HTTP: 超文本傳輸...  閱讀全文

          posted @ 2011-10-07 18:18 Steven_bot 閱讀(1567) | 評論 (0)編輯 收藏

          Java 調用cmd.exe命令

          java的Runtime.getRuntime().exec(commandText)可以調用執行cmd指令。 

          cmd /c dir 是執行完dir命令后關閉命令窗口。 

          cmd /k dir 是執行完dir命令后不關閉命令窗口。 

          cmd /c start dir 會打開一個新窗口后執行dir指令,原窗口會關閉。 

          cmd /k start dir 會打開一個新窗口后執行dir指令,原窗口不會關閉。 

          可以用cmd /?查看幫助信息。 

          ★CMD命令★ 
          calc ---------------- 啟動計算器 
          charmap ---------- 啟動字符映射表 
          cmd.exe ----------- CMD命令提示符(我這不能用,不知乍地!) 
          conf ---------------- 啟動netmeeting 
          explorer ----------- 打開資源管理器 
          mspaint ----------- 畫圖板 
          notepad ----------- 打開記事本 
          nslookup ---------- IP地址偵測器 
          odbcad32 --------- ODBC數據源管理器 
          regedit ------------- 注冊表 
          services.msc ----- 本地服務設置 
          wordpad ---------- 啟動寫字板
          javac 其實執行了 只是沒有輸出執行結果 因為你沒有輸出執行結果的部分
          如果你執行Runtime.getRuntime.exec("cmd");
          也看不到結果 
          因為它不是在java程序中執行的而是在操作系統上執行的
          你可以這樣Runtime.getRuntime.exec("cmd /c start javac ");
          就可以看到一個命令行窗口

          posted @ 2011-10-07 18:15 Steven_bot 閱讀(873) | 評論 (0)編輯 收藏

          JSTL 入門: 表達式語言

               摘要: JavaServer Pages(JSP)是用于 J2EE 平臺的標準表示層技術。JSP 技術提供了用于執行計算(這些計算用來動態地生成頁面內容)的腳本編制元素和操作。腳本編制元素允許在 JSP 頁面中包括程序源代碼,在為響應用戶請求而呈現頁面時可以執行這些源代碼。操作將計算操作封裝到很象 HTML 或 XML 標記的標記中,JSP 頁面的模板文本通常包含這些標記。JSP 規范只將幾種操作定義成了...  閱讀全文

          posted @ 2011-10-07 18:11 Steven_bot 閱讀(278) | 評論 (0)編輯 收藏

          servlet中的一些疑惑

          因為Redirect的流程是這樣的,  request 1  sent to server,  server return back to client,  request 2 then sent to server. But Forward 僅在server side處理, 對client side 是透明的. 由于Redirect 有兩次傳輸, 所以效率低. 范圍: 由于對request.setAttribute() 來說, 它攜帶的對象生存范圍只在request內, 所以Redirect方式會導致request攜帶的對象丟失. 總結:  一般還是用Forward比較合適. 
          ActionMapping

          ActionMapping將對Struts應用中有效的業務邏輯進行分類,當一個請求到達時,ActionSevlet在ActionMapping目錄中查找對應的信息。ActionMapping是Struts應用的一個核心設計,當需要了解一個Struts應用,或編寫一個新的Struts應用的時候,都應該從ActionMapping入手。ActionMapping有較多的屬性信息,具體參考相關文檔。

          ActionForward

          ActionForward是Struts的核心類之一,其基類僅有4個屬性:name / path / redirect / classname。在基于Struts的Web應用程序開發過程中,Action操作完畢后程序會通過Struts的配置文件struts- config.xml鏈接到指定的ActionForward,傳到Struts的核心類ActionServlet,ActionServlet使用 ActionForward提供的路徑,將控制傳遞給下一個步驟。ActionForward控制接下來程序的走向。ActionForward代表一個應用的URI,它包括路徑和參數,例如:

          path=“/modify.do?method=edit&id=10”

          ActionForward的參數除了在struts-config.xml和頁面中設置外,還可以通過在Action類中添加參數,或重新在Action中創建一個ActionForward。

          在ActionForward中有一個重要的屬性redirect,當redirect=false時,將保存存儲在http請求和請求上下文中的所有內容,僅在同一個應用中可用。當redirect=true時,Web客戶端進行一次新的http請求,請求的資源可以在同一個應用中,也可以不在,原來的請求參數不再保存,原來的請求上下文也被清除,新的http請求僅包含ActionForward的path屬性里所包含的參數。如果在同一個應用中,用戶會話的上下文會被維護。

          ActionForward分為全局轉發和局部轉發,Action的Mapping對象的findForward方法首先會檢查局部轉發列表,查找失敗就會到全局轉發列表中查找。書寫格式中,我們一般將全局變量定義為String常數,避免誤解,使得轉發列表結構清晰易讀。

          在項目開發過程中經常碰到一種情況,當頁面已經改變了,瀏覽器中的地址如/modify.do或/modify.jsp卻沒有變化,當時沒有考慮這么細,雖然存在疑問,但沒有影響到程序功能的實現,因此忽略過去了,今天查找了一些資料才弄清楚。客戶端瀏覽器顯示的是瀏覽器最后被給定的URL,當URL被提交后,在某個組件返回一個響應給瀏覽器之前,Web應用可能已經轉發請求多次,而這些過程都發生在服務器端,客戶端瀏覽器并不知道有什么變化。當一個 http響應被返回時,它并沒有包含地址欄的值,所以瀏覽器僅僅顯示其用來作為初始請求的地址。通過使用redirect可以改變瀏覽器地址的顯示,因為這樣可以向瀏覽器提交一個新的請求,但付出的代價是數據不能通過請求上下文傳遞到頁面,這也是使用forward和redirect的差異之一

          posted @ 2011-10-07 18:04 Steven_bot 閱讀(355) | 評論 (0)編輯 收藏

          window.status 和 window.defaultStatus

          在ie下面,設置了不設置window.status的時候,默認顯示的是完成,碰到超鏈接以后,顯示的是超鏈接,然后移除后,顯示的是空白,如果指定了window.status之后,在空白的地方顯示的是設置的值,而且永遠保持這個值。

          如果設置了defaultStatus屬性后,那么只要把鼠標放到空白的地方,顯示的都是defaultStatus的值,即使設置window.status也只是曇花一現,到了空白的地方顯示的還是window.defautStatus的值.

           

           

          firefox下面,本身不能使用window.status和window.defaultStatus,只有在about:config中將dom.disable_window_status_change設置為false之后,才能使這兩個值生效,

          但是firefox上面,本身默認的完成兩個字不會被超鏈接清掉,然后window.status和window.defaultStatus的效果是一樣的,只要指定了這兩個值,那么

          鼠標在空白的地方的時候,狀態欄上顯示的就是設置的值,任何一個都會把寧外的一個覆蓋掉。這是與ie上的不同

          posted @ 2011-10-07 17:32 Steven_bot 閱讀(833) | 評論 (0)編輯 收藏

          window.event對象解析

               摘要: event代表事件的狀態,例如觸發event對象的元素、鼠標的位置及狀態、按下的鍵等等。event對象只在事件發生的過程中才有效。event的某些屬性只對特定的事件有意義。比如,fromElement 和 toElement 屬性只對onmouseover 和 onmouseout 事件有意義。例子下面的例子檢查鼠標是否在鏈接上單擊,并且,如果shift鍵被按下,就取消鏈接的跳轉。<html...  閱讀全文

          posted @ 2011-10-07 17:27 Steven_bot 閱讀(373) | 評論 (0)編輯 收藏

          js關于document和window對象

               摘要: [document對象]  該對象是window和frames對象的一個屬性,是顯示于窗口或框架內的一個文檔。  屬性  alinkColor 活動鏈接的顏色(ALINK)  anchor 一個HTMI錨點,使用<A NAME=>標記創建(該屬性本身也是一個對象)  anchors array 列出文檔錨點對象的數組(<A NAME=>)(該屬性本身也是一個對象)  bgC...  閱讀全文

          posted @ 2011-10-07 17:24 Steven_bot 閱讀(2771) | 評論 (0)編輯 收藏

          JS中setTimeout()的用法詳解

               摘要: 1. SetTimeOut()             1.1 SetTimeOut()語法例子             1.2 用SetTimeOut()執行...  閱讀全文

          posted @ 2011-10-07 17:20 Steven_bot 閱讀(47467) | 評論 (2)編輯 收藏

          JavaScript語言精粹---學習總結

               摘要: 一: 我們應該注意的1、== != 與 === !===JavaScript 有兩組相等運算符:=== 和 !==,以及它們邪惡的孿生兄弟 == 和 !==。=== 和 !== 這一組運算符會按照你期望的方式工作。如果兩個運算數類型一致且擁有相同的值,那么 ===&nb...  閱讀全文

          posted @ 2011-10-07 16:04 Steven_bot 閱讀(413) | 評論 (0)編輯 收藏

          JSTL(fn)

          首先,我們要在頁面的最上方引用:

          <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

           

          下面是JSTL中自帶的方法列表以及其描述 

           

          fn:contains(string, substring)

          假如參數string中包含參數substring,返回true

          例如:<c:if test="${fn:contains(name, searchString)}">

           

          fn:containsIgnoreCase(string, substring)

          假如參數string中包含參數substring(忽略大小寫),返回true

          例如:<c:if test="${fn:containsIgnoreCase(name, searchString)}">

           

          fn:endsWith(string, suffix)

          假如參數 string 以參數suffix結尾,返回true

          例如:<c:if test="${fn:endsWith(filename, ".txt")}">

           

          fn:escapeXml(string)

          將有非凡意義的XML (HTML)轉換為對應的XML character entity code,并返回

          例如: <字符應該轉為&lt; ${fn:escapeXml(param:info)}

           

          fn:indexOf(string, substring)

          返回參數substring在參數string中第一次出現的位置

          ${fn:indexOf(name, "-")}

           

          fn:join(array, separator)

          將一個給定的數組array用給定的間隔符separator串在一起,組成一個新的字符串并返回。

          ${fn:join(array, ";")}

           

          fn:length(item)

          返回參數item中包含元素的數量。參數Item類型是數組、collection或者String。假如是String類型,返回值是String中的字符數。

          ${fn:length(shoppingCart.products)}

           

          fn:replace(string, before, after)

          返回一個String對象。用參數after字符串替換參數string中所有出現參數before字符串的地方,并返回替換后的結果

          ${fn:replace(text, "-", "•")}

           

          fn:split(string, separator)

          返回一個數組,以參數separator 為分割符分割參數string,分割后的每一部分就是數組的一個元素

          ${fn:split(customerNames, ";")}

           

          fn:startsWith(string, prefix)

          假如參數string以參數prefix開頭,返回true

          <c:if test="${fn:startsWith(product.id, "100-")}">

           

          fn:substring(string, begin, end)

          返回參數string部分字符串從參數begin開始到參數end位置,包括end位置的字符

          ${fn:substring(zip, 6, -1)}

           

          fn:substringAfter(string, substring)

          返回參數substring在參數string中后面的那一部分字符串

          ${fn:substringAfter(zip, "-")}

           

          fn:substringBefore(string, substring)

          返回參數substring在參數string中前面的那一部分字符串

          ${fn:substringBefore(zip, "-")}

           

          fn:toLowerCase(string)

          將參數string所有的字符變為小寫,并將其返回

          ${fn.toLowerCase(product.name)}

           

          fn:toUpperCase(string)

          將參數string所有的字符變為大寫,并將其返回

          ${fn.UpperCase(product.name)}

           

          fn:trim(string)

          去除參數string 首尾的空格,并將其返回

          ${fn.trim(name)}

           

           下面是一個在頁面顯示時超過100個字符以后用......代替的方法:

          <c:set var="testStr" value="${analyze.command}" />

                        <c:choose>

                             <c:when test="${fn:length(testStr) > 100}">

                                <c:out value="${fn:substring(testStr, 0, 100)}" />  ......

                             </c:when>

                             <c:otherwise>

                                <c:out value="${testStr}" />

                             </c:otherwise>

                        </c:choose>

          posted @ 2011-10-07 15:46 Steven_bot 閱讀(522) | 評論 (0)編輯 收藏

          僅列出標題  下一頁
          主站蜘蛛池模板: 新田县| 富宁县| 县级市| 利辛县| 白山市| 名山县| 巫山县| 砚山县| 咸阳市| 平度市| 泸州市| 木里| 应用必备| 克拉玛依市| 双鸭山市| 祁阳县| 洛南县| 丰台区| 永寿县| 绿春县| 喀喇沁旗| SHOW| 油尖旺区| 华蓥市| 雷州市| 鹿邑县| 昆山市| 和政县| 甘孜县| 庆安县| 商城县| 曲沃县| 平凉市| 庆元县| 德江县| 鄂托克旗| 汤阴县| 大方县| 庆城县| 临洮县| 南投县|