Posted on 2007-03-30 14:27
天空蒼茫 閱讀(1209)
評論(0) 編輯 收藏 所屬分類:
JS 、
eclipse
大家都知道,無論是Eclipse還是Resin,它們在啟動的時候都能自動尋找JDK路徑,這里假設JDK路徑為$JAVA_HOME。
JDK下面有一個非常重要的目錄,即: $JAVA_HOME/jre/lib,大家用得最普遍的就是$JAVA_HOME/jre/lib/ext目錄(可以放置常用的JAR擴展包)了,我喜歡將jtds-1.2.jar文件拷貝到此目錄下,當運行打包好的JAR時,不需要為每一個JAR配置數據庫驅動加載路徑(當然,你也可以將jtds-1.2.jar加入到系統環境變量中,只是你得Reboot your computer而已)。
好了,下面言歸正傳,如果你用myeclipse配置了resin服務器,你會發現myeclipse并不能啟動resin,而在控制臺上打印出來的是resin.conf:241: Required file '\conf\app-default.xml' can not be read for resin:import.,很明顯,是系統找不到app-default.xml'文件,而這個文件確實在$RESIN_HOME/conf/目錄下,打開resin.conf,定位到133行,發現配置文件是這樣的:<resin:import path="${resin.home}/conf/app-default.xml"/>,因為${resin.home}/就是Resin的當前目錄,所以我們可以換成<resin:import path="./conf/app-default.xml"/>,再啟動,OK。
resin.conf里面還有一個地方比較有意思,且看211行代碼:<web-app-deploy path="webapps"/>,系統配置的Web應用目錄為$RESIN_HOME/webapps,而Eclipse工程發布后是在$RESIN_HOME/deploy,所以我們干脆就不用myeclipse里的站點發布功能,直接修改resin.conf文件,加載一個外部目錄,將它手指向你的工程,找到如下代碼(240行)<web-app id="/" root-directory="webapps/ROOT"/>,在后面加上<web-app id="/import" root-directory="D:/eclipse/work/Import/WebRoot"/>。
好像問題還不止這么簡單,因為我的D:/eclipse/work/Import/WebRoot工程是用Struts框架開發的,所有在resin啟動import的時候,報了如下的錯誤:
javax.xml.parsers.SAXParserFactory: org.apache.xerces.jaxp.SAXParserFactoryImpl
XML解釋器的錯誤,順便在Google上一搜,找到了三種解決辦法,受推薦的方案如下:
在 $JAVA_HOME/jre/lib目錄下新建endorsed目錄(如果沒有的話),然后將你工程lib目錄下的xercesImpl.jar拷貝到剛建的那個目錄里面,問題即可解決。
不推薦在$JAVA_HOME/jre/lib下面新建內容為javax.xml.parsers.SAXParserFactory: org.apache.xerces.jaxp.SAXParserFactoryImpl的jaxp.properties文件,當然,如果你準備強行這么干的話,你的Tomcat就只能暗無天日了。
下面是附加內容
附一:Apache與Resin集成
1. 更改Apache的文檔目錄:在httpd.conf中找到DocumentRoot,將其后雙引號中的內容換成"D:/HttpServer/webapps/"
2. 配置Apache的Resin模塊:在httpd.conf最后添加如下代碼
????? LoadModule caucho_module "D:/HttpServer/resin/win32/apache-2.2/mod_caucho.dll"
????? <IfModule mod_caucho.c>
????? ? ResinConfigServer localhost 6800
????? ? CauchoStatus yes
????? </IfModule>
3. 更改默認的訪問文件:在httpd.conf中找到DirectoryIndex ,在其后添加index.jsp index.php
????? 注意:每個文件之間用空格間隔開
4. Resin虛擬目錄配置:在resin.conf中找到如下行<host id="" root-directory=".">,然后加入
????? <web-app id="/import" root-directory="D:/HttpServer/webapps/import"/>
????? id為訪問路徑,root-directory為文檔目錄所在路徑
5. 設置Resin為自啟動:你必須先在系統環境變量中配置JAVA_HOME,然后在命令行窗口中進入Resin目錄,輸入httpd -install(安裝Resin為Windows系統服務),httpd -remove(移除……)
經過以上步驟,Resin就可以監聽處理所有Apache不能處理的文件,包括.jsp, .do及其它控制器路徑,并同時解決了用80端口訪問時圖片相對路徑不對的問題
附二:Apache中加入PHP處理模塊,并且屏蔽Resin3.1的PHP解釋模塊
1. 屏蔽resin的PHP處理模塊:resin從3.0開始支持php,其3.1版本的PHP解釋配置是在app-default.xml中(與resin.conf同一個目錄),只要對servlet配置比較熟悉的都能在app-default.xml中輕易屏蔽PHP解釋功能,打開app-default.xml后,用<!--? -->屏蔽如下代碼即可:
????? <servlet servlet-name="resin-php"
?????????? servlet-class="com.caucho.quercus.servlet.QuercusServlet">
????? </servlet>
????? <servlet-mapping url-pattern="*.php" servlet-name="resin-php"/>
????? <welcome-file>index.php</welcome-file>
2. 配置Apache的PHP處理模塊:在httpd.conf最后添加如下代碼(我的PHP是裝在D:/HttpServer/php5)
????? ## Add php5 module
????? LoadModule php5_module "D:/HttpServer/php5/php5apache2_2.dll"
????? AddType application/x-httpd-php .php
????? # Configure php.ini path
????? PHPIniDir "D:/HttpServer/php5/"
呵呵,因為Resin的PHP配置不太熟悉,網上的資料也比較少,所以還是用了Apache+PHP的處理方式。