zoukankan      html  css  js  c++  java
  • eclipse搭配Resin开发Struts应用之环境篇

    大家都知道,无论是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的处理方式。
  • 相关阅读:
    POJ 3468 A Simple Problem with Integers
    BZOJ 4430 Guessing Camels
    POJ 2309 BST
    POJ 1990 MooFest
    cf 822B Crossword solving
    cf B. Black Square
    cf 828 A. Restaurant Tables
    Codefroces 822C Hacker, pack your bags!
    [HDU 2255] 奔小康赚大钱
    [BZOJ 1735] Muddy Fields
  • 原文地址:https://www.cnblogs.com/jamin/p/1225119.html
Copyright © 2011-2022 走看看