Resin 與 Eclipse for JavaEE 的整合方法:
1.新建一個項目,將web application配置到resin.conf中
附上resin_struts2-111.conf文件:(為方便區分我將這個conf文件命名為resin_項目名.conf)
<!-- - Resin 3.1 配置文件. --> <resin xmlns="http://caucho.com/ns/resin" xmlns:resin="http://caucho.com/ns/resin/core"> <!-- 加載resin/lib下的所有.jar文件 --> <class-loader> <tree-loader path="${resin.home}/ext-lib"/> <tree-loader path="${resin.root}/ext-lib"/> <tree-loader path="${resin.home}/lib"/> <tree-loader path="${resin.root}/lib"/> </class-loader> <!-- 管理配置 --> <management path="${resin.root}/admin"> <user name="admin" password="password" disable="true"/> <resin:if test="${resin.professional}"> <deploy-service/> <jmx-service/> <log-service/> <xa-log-service/> </resin:if> </management> <!-- -JDK日志接口的配置 - --> <log name="" level="info" path="stdout:" timestamp="[%H:%M:%S.%s] {%{thread}} "/> <!-- 日志信息的級別:'info' 生產環境 'fine' 開發環境 'finer' 調試環境 --> <logger name="com.caucho" level="info"/> <logger name="com.caucho.java" level="config"/> <logger name="com.caucho.loader" level="config"/> <!-- - 環境上下文的檢測時間,對於生產站點, 這個要設置長一點,例如600秒,10分鍾 --> <dependency-check-interval>2s</dependency-check-interval> <!-- - 發送郵件通知的SMTP服務器 --> <system-property mail.smtp.host="127.0.0.1"/> <system-property mail.smtp.port="25"/> <!-- - Sets the default character encoding to utf-8 - - <character-encoding>utf-8</character-encoding> --> <!-- -你可以把編譯器改成 "javac", "eclipse" 或者 "internal". --> <javac compiler="internal" args="-source 1.5"/> <!-- Security providers. - <security-provider> - com.sun.net.ssl.internal.ssl.Provider - </security-provider> --> <!-- 去掉注釋,如果你使用resin提供的xml應用 - - <system-property javax.xml.parsers.DocumentBuilderFactory - ="com.caucho.xml.parsers.XmlDocumentBuilderFactory"/> - <system-property javax.xml.parsers.SAXParserFactory - ="com.caucho.xml.parsers.XmlSAXParserFactory"/> --> <cluster id="app-tier"> <!-- 設置集群上下文的根, 相對於server.root --> <root-directory>.</root-directory> <server-default> <!-- HTTP服務的端口 --> <http address="*" port="8001"/> <!-- - SSL端口配置: - - <http address="*" port="8443"> - <openssl> - <certificate-file>keys/gryffindor.crt</certificate-file> - <certificate-key-file>keys/gryffindor.key</certificate-key-file> - <password>test123</password> - </openssl> - </http> --> <!-- - JVM參數設置 --> <jvm-arg>-Xmx256m</jvm-arg> <jvm-arg>-Xss1m</jvm-arg> <jvm-arg>-Xdebug</jvm-arg> <jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg> <!-- - Uncomment to enable admin heap dumps 去掉這個如果你想管理內存堆的傾倒 - <jvm-arg>-agentlib:resin</jvm-arg> --> <!-- - arguments for the watchdog process --> <watchdog-jvm-arg>-Dcom.sun.management.jmxremote</watchdog-jvm-arg> <watchdog-port>6600</watchdog-port> <!-- - 強制resin強制重起時的最小空閑內存 --> <memory-free-min>1M</memory-free-min> <!-- 最大線程數量 --> <thread-max>256</thread-max> <!-- 套接字等待時間 --> <socket-timeout>65s</socket-timeout> <!-- 配置 keepalive--> <keepalive-max>128</keepalive-max> <keepalive-timeout>15s</keepalive-timeout> <!-- -如果使用的是UNIX,這里是啟動的帳號和用戶組. - - <user-name>resin</user-name> - <group-name>resin</group-name> --> </server-default> <!--定義群集服務器--> <server id="" address="127.0.0.1" port="6800"/> <!-- -配置獨立服務器或者群集的持久化存儲,專業版的功能 --> <resin:if test="${resin.professional}"> <persistent-store type="cluster"> <init path="session"/> </persistent-store> </resin:if> <!-- -為了安全, 你可以為SSL會話(SSL sessions)定義一個不同的cookie. - <ssl-session-cookie>SSL_JSESSIONID</ssl-session-cookie> --> <!-- - 緩存啟用 (專業版的功能) --> <resin:if test="${resin.professional}"> <cache path="cache" memory-size="64M"> <!-- Vary header rewriting for IE --> <rewrite-vary-as-private/> </cache> </resin:if> <!-- - 啟用周期性的服務器狀態檢查和死鎖檢查,所有的服務器可以添加 <url> 來檢查。 --> <resin:if test="${resin.professional}"> <ping> <!-- <url>http://localhost:8080/test-ping.jsp</url> --> </ping> </resin:if> <!-- - Defaults applied to each web-app. --> <web-app-default> <prologue> <!-- -擴展庫的公共jar文件,擴展是安全的即使沒有類裝載器知道的jars,裝載的類將為每個應用分別裝載,也就是這些類都是不同的 --> <class-loader> <tree-loader path="${resin.root}/ext-webapp-lib"/> </class-loader> <!-- - 啟用EL表達式 --> <allow-servlet-el/> </prologue> <!-- - 設置緩存頁、靜態也的延時值 --> <cache-mapping url-pattern="/" expires="5s"/> <cache-mapping url-pattern="*.gif" expires="60s"/> <cache-mapping url-pattern="*.jpg" expires="60s"/> <cache-mapping url-pattern="*.png" expires="60s"/> <!-- - 安全原因, 默認禁用了會話的URLs --> <session-config> <enable-url-rewriting>false</enable-url-rewriting> </session-config> <!-- - 安全原因, 在cookies中設置HttpOnly標志 - <cookie-http-only/> --> <!-- -一些JSP包有不正確的 .tld文件。可以把validate-taglib-schema設置成false,可能繼續正常工作 --> <jsp> <validate-taglib-schema>true</validate-taglib-schema> <fast-jstl>true</fast-jstl> </jsp> </web-app-default> <!-- includes the app-default for default web-app behavior --> <resin:import path="${resin.home}/conf/app-default.xml"/> <!-- - 簡單的數據池配置 - - The JDBC name is java:comp/env/jdbc/test <database> <jndi-name>jdbc/mysql</jndi-name> <driver type="org.gjt.mm.mysql.Driver"> <url>jdbc:mysql://localhost:3306/test</url> <user></user> <password></password> </driver> <prepared-statement-cache-size>8</prepared-statement-cache-size> <max-connections>20</max-connections> <max-idle-time>30s</max-idle-time> </database> --> <!-- - 定義所有虛擬主機的默認配置 --> <host-default> <!-- -如果和別的web服務器整合,這個可以被去掉,因為web服務器也可以記錄這些信息。 --> <access-log path="logs/access.log" format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"' rollover-period="1W"/> <!-- war 文件的布置目錄 --> <web-app-deploy path="webapps"/> <!-- ear文件的布置目錄 --> <ear-deploy path="deploy"> <ear-default> <ejb-server> <config-directory>WEB-INF</config-directory> </ejb-server> </ear-default> </ear-deploy> <!-- rar文件的布置目錄 --> <resource-deploy path="deploy"/> </host-default> <!-- 虛擬主機的布置目錄 --> <host-deploy path="hosts"> <host-default> <resin:import path="host.xml" optional="true"/> </host-default> </host-deploy> <!-- 默認的虛擬主機配置 --> <host id="" root-directory="."> <!-- - 配置默認的應用 webapp's ROOT -->
<!--
注意:若使用myeclipse/eclipse創建項目,會有一個項目名(projectName),而此處的root-directory並非項目路徑,而是一個特殊的目錄,該目錄的子目錄以及文件必須符合Servlet規范,通常就是eclipse默認創建的WebContent,這個名字可以隨便改。btw,這個規范的層級結構主要有三個元素:
/WEB-INF/web.xml
/WEB-INF/classes/
/WEB-INF/lib/
必須包含有上面三個東西。配置文件(*.properties, *.xml等等)需要放在classes下
-->
<web-app id="/struts2" root-directory="D:\RuahoDemo\projectWorkpace\struts2-111\WebContent"/> <web-app id="/resin-admin" root-directory="${resin.home}/php/admin"> <!-- - 管理應用程序 /resin-admin --> <prologue> <resin:set var="resin_admin_external" value="false"/> <resin:set var="resin_admin_insecure" value="true"/> </prologue> </web-app> </host> </cluster> <!-- - Configuration for the web-tier/load-balancer --> <resin:if test="${resin.professional}"> <cluster id="web-tier"> <server-default> <!-- The http port --> <http address="*" port="9080"/> </server-default> <server id="web-a" address="127.0.0.1" port="6700"/> <cache path="cache" memory-size="64M"/> <host id=""> <web-app id="/"> <rewrite-dispatch> <load-balance regexp="" cluster="app-tier"/> </rewrite-dispatch> </web-app> </host> </cluster> </resin:if> </resin>
2.Run – Run Configurations(在本地調試的話,選擇Debug Configurations)
彈出的會話中,雙擊“Java Application”創建一個Configuration,在右邊的Name中隨意填寫一個名字,標簽頁Main中,Project選擇待運行web application,Main class填寫resin的主類,查找該類有兩種方法:
- 該類可以在${RESIN_HOME}/lib/resin.jar中的META-INF/MANIFEST.MF文件中找到,即Main-Class的值;
- 將${RESIN_HOME}/lib添加到項目的classpath后,即在Main標簽頁點擊“搜索”,在彈出的對話框中搜索“resin”,如果是3.0.x,選擇com.caucho.server.resin.Resin,如果是3.1.x,選擇com.caucho.boot.ResinBoot,具體的選擇,還是要參考META-INF/MANIFEST.MF文件的Main-Class值,如圖:
標簽頁 Arguments中:
VM Arguments中:
-
-Dresin.home=D:\Ruaho\resin\resin-3.1.12 (實際路徑) -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -Xmx1024m
ClassPath標簽頁中:導入jar包
完成以上各步之后,點擊Run即可啟動resin。