Resin是一个提供高性能的,支持 Java/PHP 的应用服务器。目前有两个版本:一个是GPL下的开源版本,提供给一些爱好者、开发人员和低流量网站使用;一种是收费的专业版本,增加了一些更加适用于生产环境的特性。

Resin也可以和许多其他的web服务器一起工作,比如Apache Server和IIS等。Resin支持Servlets 2.3标准和JSP 1.2标准。熟悉ASP和PHP的用户可以发现用Resin来进行JSP编程是件很容易的事情。

Resin支持负载平衡,可以增加WEB站点的可靠性。方法是增加服务器的数量。比如一台Server的错误率是1%的话,那么支持负载平衡的两个Resin服务器就可以使错误率降到0.01%。到目前为止,Resin对WEB应用的支持已经远远超过Tomcat等各种大型的Server。

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安装配置及使用教程的更多相关文章

  1. 在linux下安装配置rabbitMQ详细教程

    在linux下安装配置rabbitMQ详细教程 2017年12月20日 17:34:47 阅读数:7539 安装Erlang 由于RabbitMQ依赖Erlang, 所以需要先安装Erlang. Er ...

  2. windows Sever 2012下Oracle 12c安装配置方法图文教程

    windows Sever 2012下Oracle 12c安装配置方法图文教程 Oracle 12c安装配置方法图文教程,具体内容如下 1.我们开启虚拟机 2.Windows Sever 2012启动 ...

  3. mysql 5.7.12 winx64安装配置方法图文教程

    这篇文章主要为大家分享了mysql 5.7.12winx64安装配置方法图文教程,感兴趣的朋友可以参考一下   之前安装mysql时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录, ...

  4. mysql 5.7以上版本安装配置方法图文教程(mysql 5.7.12\mysql 5.7.13\mysql 5.7.14)(转)

    http://www.jb51.net/article/90302.htm ******************************* 这篇文章主要为大家分享了MySQL 5.7以上缩版本安装配置 ...

  5. centos tomcat/resin安装配置 卸载系统自带的java tomcat安装配置 安装JDK resin安装配置 第二十八节课

    centos  tomcat/resin安装配置  卸载系统自带的java  tomcat安装配置  安装JDK   resin安装配置    第二十八节课 tomcat和java都不需要编译 tom ...

  6. CodeBlocks的安装配置以及使用教程

    CodeBlocks的安装配置以及使用教程 教程写的很啰嗦,本来几句话就能搞定的,但为了照顾到那部分真正的小白还请大家见谅! 一.下载 前往CodeBlocks官网下载带编译器的版本,目前的最新版本为 ...

  7. [转载]TFS安装配置教程

    最近公司新开发一个项目要用微软的TFS2013进行项目的源代码管理,以前只是用过SVN,从来没有用过TFS,所以在网上百度.谷歌了好一阵子来查看怎么安装和配置,还好花了一天时间总算是初步的搞定了,下面 ...

  8. [VSTS] 从零开始 Team Foundation Server 2010 安装配置详细图文教程

    http://www.cnblogs.com/WilsonWu/archive/2011/11/24/2261674.html 近期公司要配TFS用于新项目的管理,公司也将逐步迁移至VSTS平台,前期 ...

  9. Linux Resin 安装配置

    Resin是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能优良,resin自身采用Java语言开发.Resin Pro版本支持缓存和负载均衡,收费最 ...

随机推荐

  1. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  2. jsp 中登录验证 注销 的模版

    用户名密码验证模版     <%@page import="com.jerehedu.bao.User"%> <%@ page language="ja ...

  3. Python爬虫学习(4): python中re模块中的向后引用以及零宽断言

    使用小括号的时候,还有很多特定用途的语法.下面列出了最常用的一些: 表4.常用分组语法 分类 代码/语法 说明 捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>e ...

  4. ArrayList数组列表

    ArrayList数组列表 Collection接口和List接口的区别 List接口扩充了Collection接口,添加了索引相关的方法. code example Object get(int i ...

  5. Scrum项目8.0

    目标:我们开始做每个需要细致的界面,比方说登陆,注册,游戏界面,难度选择 内容:登陆界面:登陆名,登陆密码,登陆按钮,以及优美的底图. 注册页面:名称,密码,登陆按钮,以及优美的底图. 游戏界面:难度 ...

  6. 树链剖分+线段树 BZOJ 1036 [ZJOI2008]树的统计Count

    题目链接 题意: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节 ...

  7. Android自动化测试 - Robotium之re-sign.jar重签名后安装失败提示Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]解决方案

    问题:在用re-sign.jar重签名apk文件后,显示重签名成功,但在实际安装过程中确提示:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] 原因:网上查 ...

  8. activity 、window与view的关系(下)

    在activity的attacth方法中,通过policymanager 的makenewwindow来创建window 而window的具体实现是phonewindow 接下来通过setconten ...

  9. 虚拟机和windows主机中的文件共享

    22:54 2015/12/22 虚拟机和windows主机中的文件共享:特别推荐:我的一个老师特别推荐的方法:在windows安装SSH Secure File Transfer Client,直接 ...

  10. SpringMVC中使用Interceptor拦截器

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...