# Resin学习

## 1. resin简介

刚入职的公司用的后台服务器是resin，故因此学习记录一下。

resin是一个非常流行的web引用服务器，对servlet和jsp提供了良好的支持，自身采用java开发。resin分为普通版和专业版，主要区别是专业版支持缓存和负载均衡。

## 2. 安装配置

官方下载地址：[http://caucho.com/products/resin/download#download。由于是在windows上运行，笔者下载的是zip版本的，直接解压，运行根目录下的resin.exe（如果闪退就右键使用管理员方式运行）就可以启动了，提供了界面来进行启停操作。启动成功后访问http://localhost:8080/，就会出现resin的主页，显示\*\*Resin®](http://caucho.com/products/resin/download#download%E3%80%82%E7%94%B1%E4%BA%8E%E6%98%AF%E5%9C%A8windows%E4%B8%8A%E8%BF%90%E8%A1%8C%EF%BC%8C%E7%AC%94%E8%80%85%E4%B8%8B%E8%BD%BD%E7%9A%84%E6%98%AFzip%E7%89%88%E6%9C%AC%E7%9A%84%EF%BC%8C%E7%9B%B4%E6%8E%A5%E8%A7%A3%E5%8E%8B%EF%BC%8C%E8%BF%90%E8%A1%8C%E6%A0%B9%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84resin.exe%EF%BC%88%E5%A6%82%E6%9E%9C%E9%97%AA%E9%80%80%E5%B0%B1%E5%8F%B3%E9%94%AE%E4%BD%BF%E7%94%A8%E7%AE%A1%E7%90%86%E5%91%98%E6%96%B9%E5%BC%8F%E8%BF%90%E8%A1%8C%EF%BC%89%E5%B0%B1%E5%8F%AF%E4%BB%A5%E5%90%AF%E5%8A%A8%E4%BA%86%EF%BC%8C%E6%8F%90%E4%BE%9B%E4%BA%86%E7%95%8C%E9%9D%A2%E6%9D%A5%E8%BF%9B%E8%A1%8C%E5%90%AF%E5%81%9C%E6%93%8D%E4%BD%9C%E3%80%82%E5%90%AF%E5%8A%A8%E6%88%90%E5%8A%9F%E5%90%8E%E8%AE%BF%E9%97%AEhttp://localhost:8080/%EF%BC%8C%E5%B0%B1%E4%BC%9A%E5%87%BA%E7%8E%B0resin%E7%9A%84%E4%B8%BB%E9%A1%B5%EF%BC%8C%E6%98%BE%E7%A4%BA**Resin%C2%AE) Default Home Page\*\*，和tomcat一样，将项目文件或者war包丢进webapps下面就可以访问了。resin的配置文件在conf文件夹下，在resin.xml中可以发布自己的工程，比如：

```markup
<!-- the default host, matching any host name -->
<host id="" root-directory=".">
    <!--
         - webapps can be overridden/extended in the resin.xml
        -->
    <web-app id="/" root-directory="webapps/ROOT"/>
    <!-- 发布自己的工程：learnSpringMVC，相当于tomcat的context配置 -->
    <web-app id="/test" root-directory="webapps/learnSpringMVC"/>

</host>
```

然后就可以通过访：[http://localhost:8080/test/，访问自己的项目了。在本项目中，实际访问的是learnSpringMVC下面的index.jsp。在webapp下发布了自己的工程，就可以通过自己的自定义头路径访问发布的接口了，比如之前没有配置web-app时，访问接口：http://localhost:8080/learnSpringMVC/hello/showdemo，配置完后应该访问：http://localhost:8080/test/hello/showdemo。learnSpringMVC项目地址：https://github.com/WangJun-SCU/LearnSpringMVC](http://localhost:8080/test/%EF%BC%8C%E8%AE%BF%E9%97%AE%E8%87%AA%E5%B7%B1%E7%9A%84%E9%A1%B9%E7%9B%AE%E4%BA%86%E3%80%82%E5%9C%A8%E6%9C%AC%E9%A1%B9%E7%9B%AE%E4%B8%AD%EF%BC%8C%E5%AE%9E%E9%99%85%E8%AE%BF%E9%97%AE%E7%9A%84%E6%98%AFlearnSpringMVC%E4%B8%8B%E9%9D%A2%E7%9A%84index.jsp%E3%80%82%E5%9C%A8webapp%E4%B8%8B%E5%8F%91%E5%B8%83%E4%BA%86%E8%87%AA%E5%B7%B1%E7%9A%84%E5%B7%A5%E7%A8%8B%EF%BC%8C%E5%B0%B1%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E8%87%AA%E5%B7%B1%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E5%A4%B4%E8%B7%AF%E5%BE%84%E8%AE%BF%E9%97%AE%E5%8F%91%E5%B8%83%E7%9A%84%E6%8E%A5%E5%8F%A3%E4%BA%86%EF%BC%8C%E6%AF%94%E5%A6%82%E4%B9%8B%E5%89%8D%E6%B2%A1%E6%9C%89%E9%85%8D%E7%BD%AEweb-app%E6%97%B6%EF%BC%8C%E8%AE%BF%E9%97%AE%E6%8E%A5%E5%8F%A3%EF%BC%9Ahttp:/localhost:8080/learnSpringMVC/hello/showdemo%EF%BC%8C%E9%85%8D%E7%BD%AE%E5%AE%8C%E5%90%8E%E5%BA%94%E8%AF%A5%E8%AE%BF%E9%97%AE%EF%BC%9Ahttp:/localhost:8080/test/hello/showdemo%E3%80%82learnSpringMVC%E9%A1%B9%E7%9B%AE%E5%9C%B0%E5%9D%80%EF%BC%9Ahttps:/github.com/WangJun-SCU/LearnSpringMVC)

```markup
<!-- 这样可以配置访问端口，如下配置了端口是8089，再访问页面就需要换成8089而不是8080了 -->
<server-default>
    <http address="*" port="8089" />
</server-default>

<!-- the default host, matching any host name -->
<host id="" root-directory=".">
    <!--
         - webapps can be overridden/extended in the resin.xml
        -->
    <web-app id="/" root-directory="webapps/ROOT"/>
    <!-- 发布自己的工程：learnSpringMVC，相当于tomcat的context配置 -->
    <web-app id="/test" root-directory="webapps/learnSpringMVC"/>

</host>
```

**Linux下启停**

```
# 启动
sh resin.sh start
# 停止
sh resin.sh stop
```

## 3. resin和tomcat的比较

之前接触到的项目都是使用Tomcat作为服务器，到底resin和tomcat的区别是什么呢？为什么现在的项目使用resin，通过查询资料总结整理一下。

1. **生态：**&#x9996;先tomcat作为javaweb的首选服务器，用户数量肯定比resin多，并且相关的文档也比较丰富和完善了。
2. **和eclipse集成：**&#x72;esin和eclipse集成比较复杂，并且调试开发也复杂，更新类后会自动重启。
3. **热部署：**&#x5728;更新class及jsp或者配置文件（比如web.xml）时，resin会自动部署重启，但是在开发环境下如果配置了session超时会比较麻烦。而tomcat可以按需配置修改java和jsp文件时是否重启，但是在生产环境下更新配置文件必须手动重启，如果一次性更新太多文件时，经常造成tomcat重启失败。
4. **速度：**&#x72;esin的速度相对于tomcat来说快很多。
5. **报错机制：**&#x72;esin的报错机制更加人性化，tomcat报错不明显对于新手来说比较困难。
6. **中文支持：**&#x72;esin比tomcat具有更好的中文支持。

> 参考：
>
> [https://blog.csdn.net/xiongyouqiang/article/details/78944825](https://blog.csdn.net/xiongyouqiang/article/details/78944825)
>
> [https://blog.csdn.net/shehun1/article/details/38185219](https://blog.csdn.net/shehun1/article/details/38185219)
