標籤:win password login 安裝 get build meta 小技巧 管理
Resin是一個提供高效能的,支援 Java/PHP 的應用伺服器。目前有兩個版本:一個是GPL下的開源版本,提供給一些愛好者、開發人員和低流量網站使用;一種是收費的專業版本,增加了一些更加適用於生產環境的特性。
Resin也可以和許多其他的web伺服器一起工作,比如Apache Server和IIS等。Resin支援Servlets 2.3標準和JSP 1.2標準。熟悉ASP和PHP的使用者可以發現用Resin來進行JSP編程是件很容易的事情。
Resin支援Server Load Balancer,可以增加WEB網站的可靠性。方法是增加伺服器的數量。比如一台Server的錯誤率是1%的話,那麼支援Server Load Balancer的兩個Resin伺服器就可以使錯誤率降到0.01%。到目前為止,Resin對WEB應用的支援已經遠遠超過Tomcat等各種大型的Server。
最快的JSP、Servlet伺服器(Resin) 4.0.41 官方穩定版 伺服器區 / 25.8M / 中文
查看詳細資料 >>
Resin的一些特性:
可靠性:Resin包含了很多可靠的特性,包括伺服器自動重啟、檢測並重啟死結的伺服器、管理JVM記憶體以防止記憶體泄露等。
叢集:Resin可以將多個伺服器作為一個伺服器來對客戶進行響應,從而增強伺服器的擴充能力。
持久和分布的sessions:持久的session能夠在伺服器重啟的時候保持現有的Http會話,分布式的session可以在多個伺服器之間共用Http會話的狀態。
增強本地代碼:同時為Windows和Linux系統提供了本地的代碼增強支援。能夠改善Socket連結、持久連結和檔案讀寫方面的效能。
OpenSSL:提供原生的OpenSSL庫支援,比JSSE提供的方案要好很多。
HTTP代理緩衝:能夠通過記憶體和磁碟緩衝系統提高伺服器的效能表現,將動態網頁面的速度提高到接近靜態頁面。
Gzip過濾器:通過gzip來減少頻寬。
Resin伺服器的安裝(Windows - 獨立版)
1、安裝JDK1.7或更高
2、確保JDK的安裝以及正確設定了環境變數JAVA_HOME
3、解壓Resin檔案
4、執行 java –jar resin-3.1.8/lib/resin.jar
5、或者運行 http.exe
6、在瀏覽器地址欄中輸入 http://localhost:8080 即可進行訪問
我們也可以將Resin設定為系統服務。
虛擬機器的配置:
Resin的設定檔位於 ./conf/ 下,預設的設定檔為 resin.conf。
配置簡單的虛擬機器,我們只要加入
<host host-name="test.heep.com" root-directory="D:\workspaces\java\testsys">
<access-log path="logs/test.access.log"
format=‘%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"‘
rollover-period="1W"/>
<web-app id="/" root-directory="WebRoot/">
</web-app>
</host>
</cluster>
另外在host檔案中加入對應的記錄,這樣,我們就可以訪問 http://test.heep.com 了!
Resin的配置案例如下:(Linux系統)
本文resin採用版本為:Resin 2.1.13
本文所有代碼均已測試通過
我的工程目錄結構如下:
/(root)
|--resin(resin根目錄)
| |--bin
| |--conf
| | |--resin.conf(resin設定檔 今天的主角)
| |--lib
|--src
|--java(用於放置java源檔案)
|--test(測試檔案目錄)
|--webapp(web應用的根目錄,將來doc-dir會指向這裡)
|---WEB-INF
|------classes
|------lib
|------web.xml(web設定檔)
|------applicationContext.xml(其他設定檔)
以下是resin.conf檔案源碼
<caucho.com>
<log id=‘/logs‘ href=‘stderr:‘ timestamp=‘[%Y-%m-%d %H:%M:%S.%s]‘/>
<http-server error-log="logs/errors.log">
<doc-dir>../src/webapp</doc-dir>
<!-- the http port -->
<http port=‘82‘/>
<host id=‘‘>
<web-app id=‘/‘>
<work-dir>../../build/work</work-dir>
<temp-dir>../../build/tmp</temp-dir>
<cache-mapping url-pattern="/*" expires="2"/>
<class-update-interval>
100000000
</class-update-interval>
<jsp jsp-update-interval="1s"/>
<classpath id=‘WEB-INF/classes‘/>
</web-app>
</host>
</http-server>
</caucho.com>
web.xml原始碼:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Acme Corp</display-name>
<filter>
<filter-name>webwork</filter-name>
<filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!--
This typically isn‘t required, as the taglib is included in webwork.jar.
If you really need a taglib configuration within web.xml, copy webwork/src/java/META-INF/taglib.tld
to the WEB-INF directory as webwork.tld.
-->
<!--taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/webwork.tld</taglib-location>
</taglib-->
</web-app>
在慢速機器上的Resin啟動:
RESIN是一個JAVA應用,啟動過程中需要消耗大量的CPU資源。因此在一些比較慢的機器上或者按照以上的配置有時候會很奇怪的啟動不起來,在stderr.log中顯示:"can‘t connect to parent",這個問題可以通過在服務啟動後加上一個15秒的延時解決:
在/etc/init.d/resin: 43行左右:
if test -n "$USER"; then
su - $USER -c "$EXE -pid $PID start $ARGS"
else
$EXE -pid $PID start $ARGS
fi
#服務啟動後,加上一個15秒的延時解決
sleep 15
問題解決過程和思路:
先檢查resin的日誌:stderr.log,裡面有can‘t connect to parent,然後在google上查"resin2 can‘t connect to parent"和"resin can‘t connect to parent",大約有幾篇郵件清單歸檔吧,在一篇郵件清單歸檔中有支援人員說正在調整服務等待時間解決類似問題(需要改SOURCE),另外一個人說他的P4伺服器啟動時需要啟動很多消耗CPU的服務,也會導致RESIN啟動不了,然後我在自己的機器上嘗試了一下,在RESIN啟動前就登入到機器上,發現啟動時RESIN和PERL指令碼其實都運行了,但過了一會兒相應進程就退出了,在啟動後系統比較平穩了,再啟動RESIN,RESIN服務就是好的,說明說明指令碼本身沒有問題,按我以前的經驗,JAVA應用是一個比較吃CPU資源的類型,為了讓RESIN有足夠的CPU資源的啟動,在啟動後我增加了15秒的延遲,以防止後續服務影響RESIN的啟動。問題就解決了,而且在其他機器上試也成功了。
當然,最好還是CAUCHO解決了這個問題大家就都不用學這些小技巧了。因此我將類似中所有的BUG報告中提交了自己的解決方案,要求在init.resin指令碼中增加一個全域變數,允許使用者佈建啟動時的等待時間。並把這個解決思路追加到文檔中,讓大家能夠用自己的行動積極支援開源軟體。
利用Resin內建的日誌輪循,HTTP壓縮,緩衝和簡單HTTP認證
作為應用伺服器,很多功能都不用自己再開發了:建議把這些和應用伺服器相關的配置放在resin.conf裡,而和應用伺服器無關的Web應用的標準配置放在WEB-INF/web.xml中。
<host id=‘example.chedong.com‘>
<access-log id=‘logs/example_access.log‘>
<!--rotate log daily-->
<rollover-period>1D</rollover-period>
</access-log>
<error-log id=‘logs/example_error.log‘>
<rollover-period>1M</rollover-period>
</error-log>
<web-app id=‘/‘ app-dir=‘/www/myapp/‘>
<classpath id=‘WEB-INF/classes‘ source=‘WEB-INF/src‘ compile=‘true‘/>
<!--http compress-->
<filter-mapping url-pattern=‘/result‘
filter-name=‘com.caucho.http.filter.GzipFilter‘/>
<!--admin need authorization-->
<login-config auth-method=‘basic‘>
<authenticator>
<class-name>com.caucho.http.security.XmlAuthenticator</class-name>
<init-param user=‘myname:password:user‘/>
</authenticator>
</login-config>
<security-constraint url-pattern=‘/admin‘ role-name=‘user‘/>
</web-app>
</host>
Resin安裝配置及使用教程