由于種種原因,resin有時會遇到resin down機的情況,比如:java.lang.OutOfMemoryError。這樣的問題如果從代碼角度來解決問題,也不是一時半會能解決的,應(yīng)急解決方案是啟用resin-pro的ping功能。
<resin:if test=”${isResinProfessional}”>
<ping>
<url>http://localhost:8080/ping.jsp</url>
<sleep-time>1m</sleep-time>
<try-count>5</try-count>
<socket-timeout>30s</socket-timeout>
</ping>
</resin:if>
ping.jsp可隨意寫一些代碼,純html代碼也行,只能服務(wù)器能響應(yīng)返回200。
如果訪問resin訪問http://localhost:8080/ping.jsp返回不是200 code,然后再重試try-count次,如果依然不響應(yīng)200,則將自動重啟resin服務(wù)。
如果在resin tag下配置了:
<system-property mail.smtp.host=”127.0.0.1″/>
<system-property mail.smtp.port=”25″/>
還可以讓resin自動給你發(fā)個郵件通知你它自動重啟過了:
<ping resin:type=”com.caucho.server.admin.PingMailer”>
<url>http://localhost:8080/ping.jsp</url>
<mail-to>fred@hogwarts.com</mail-to>
<mail-from>resin@hogwarts.com</mail-from>
<mail-subject>Resin ping has failed for server ${’${’}server.name}</mail-subject>
</ping>
這樣配置好了,不管resin出現(xiàn)什么故障,只要resin進程不死,就可以放心睡大覺了。
如果還啟用了resin的session持久化存儲,用戶基本感覺不到服務(wù)已經(jīng)重啟過了。
當(dāng)然,這個功能是resin-pro版提供的,免費版不支持ping,我已經(jīng)破解了resin-pro版,可放心啟用這些功能。