葉明的javablog

          java學習天堂,個人關于其他blog:blog.javaworker.cn,歡迎大家訪問
          posts - 64, comments - 50, trackbacks - 0, articles - 3

          eclipse搭配Resin開發Struts應用之環境篇

          Posted on 2007-03-30 14:27 天空蒼茫 閱讀(1212) 評論(0)  編輯  收藏 所屬分類: JSeclipse
          大家都知道,無論是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的處理方式。

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 临高县| 资溪县| 崇文区| 隆昌县| 山丹县| 岑巩县| 石景山区| 大石桥市| 望都县| 盐津县| 蒙自县| 崇义县| 兴化市| 图木舒克市| 安阳市| 游戏| 邹平县| 嘉峪关市| 扶沟县| 洛隆县| 通辽市| 广水市| 西吉县| 洞头县| 余庆县| 大埔区| 红桥区| 浦江县| 耒阳市| 名山县| 金昌市| 凤阳县| 阜宁县| 翼城县| 屏东县| 大荔县| 商城县| 广东省| 呼和浩特市| 泰顺县| 邯郸县|