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的处理方式。
  • 相关阅读:
    关于js的对象原型继承(一)
    js相关小技巧
    一、WCF学习之旅-创建第一个服务
    .net WebService方法之重载、支持Session、支持request请求和response格式的浅析
    关于反射的BindingFlag浅析
    oracle之TRUNC函数
    start with...connect by子句的浅用
    一个在windows电脑上控制比较全的文件夹的设置方式
    javascript的replace之正则表达式的浅析
    抓取错误之onerror
  • 原文地址:https://www.cnblogs.com/jamin/p/1225119.html
Copyright © 2011-2022 走看看