Resin
Resin是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用Java语言开发。Resin本身包含了一个支持HTTP/1.1的WEB服务器。虽然它可以显示动态内容,但是它显示静态内容的能力也非常强,速度直逼APACHE SERVER。许多站点都是使用该WEB服务器构建的。
Resin 普通版本和pro版本主要区别是 pro支持缓存和负载均衡。pro因为有强大的cache功能,独立作为web服务器处理静态性能都可以和apache有一比。但普通版本独立作为web服务器性能就要差一些。当然可以使用apache+resin的方案借助apache的缓存功能提高性能。 但负载均衡就是普通版不能比的了。
Resin 下载及启动
点击下载,个人建议下载zip版本,解压即可使用。解压到相关文件夹时,你必须一定要注意文件路径不能有空格符
启动步骤:
1、打开Resin安装文件夹,在根目录下找到stepup.exe,双击启动,第一行中填入你的resin安装路劲
2、找到根目录下http.exe,双击启动
3、输入http://localhost:8080,跳出resin默认文件页面,启动成功
配置后台管理
在进入resin默认的页面后,你会发现两个连接选项,前者是Resin的帮助文档,后者是后台管理选项界面。
如果你需要使用后台管理选项连接,会发现打开是失败的,你需要超做以下配置,完成Resin配置。
1、在你的Resin安装路径中,打开conf文件,找到resin.conf,打开进行编辑。
2、需修改,将false改为true,允许外部访问
[html] view plain copy
<prologue>
<resin:set var="resin_admin_external" value="true"/>
<resin:set var="resin_admin_insecure" value="true"/>
</prologue>
创建后台管理用户
在后台管理界面中输入需要创建的用户名及密码,如下:
2、记录下生生的md5数据码,数据码位于:
3、修改resin.conf文件 ,需要注意的是,记得将第二行的true改为false
[html] view plain copy
<management path="${resin.root}/admin">
<user name="admin" password="password" disable="false"/>
<user name="你申请的用户名" password="产生的md5码"/>
<resin:if test="${resin.professional}">
<deploy-service/>
<jmx-service/>
<log-service/>
<xa-log-service/>
</resin:if>
</management>
4、重启Resin,输入用户名密码即可进入后台管理界面
Resin发布应用
Resin发布应用其实和Tomcat几乎一模一样,有两种方式,一种是在Resin目录下发布,另一种是War发布
在Resin目录下发布:
在resin.conf中查找<host id="" root-directory=".">标记下的<web-app>标签,添加如下代码:
[html] view plain copy
<web-app id="/temp" root-directory="E:\myDocument\MyWork\WorkSpace\myEclipse\test\WebRoot"/>
这里面的id=“/temp” 其实代表的就是服务器的逻辑路径,你需要在浏览器中输入\temp去访问你的应用,如:
[html] view plain copy
http://localhost:8080/temp/helloworld.jsp
后面的root-directory指的是物理路径,服务器通过逻辑路径查找物理路径下的字节文件。
War方式发布:
和tomcat发布方式一样,不讲了,本人不是很喜欢这种方式的发布
Resin可以配置3种error-page
404文件找不到页
[html] view plain copy
<web-app id='/app1'>
<error-page error-code='404' location='/file_not_found.jsp'/>
</web-app>
Exception 违例页
[html] view plain copy
<web-app id='/foo'>
<error-page exception-type='java.lang.NullPointerException' location='/nullpointer.jsp'/>
</web-app>
不能连接到srun Servlet引擎错误页该页设置和应用无关,属于服务器的设置。
[html] view plain copy
<http-server>
<error-page exception-type='connection' location='/missing_file.html'/>
</http-server>
参见下面的语句:
[html] view plain copy
<classpath id='WEB-INF/classes' source='WEB-INF/src' compile='true'/>
id参数的值表示classpath中编译后的class的存放路径;
source参数的值表示classpath中java源代码的存放路径;
compile中的值可能是true或者false,表示是否由Resin的srun自动编译java源代码。
Classpath的设置一般和javaBean或者Servlet的使用有关。id的值表示javaBean的编译好的包存放的根,source的值表示javaBean的java源代码存放的根。Servlet相同。
禁用Resin的自动加载类更新
[html] view plain copy
<web-app id="/" root-directory="C:\PROJECTS\JAVA\DLOG4J\webapp" redeploy-mode="manual"/>
此配置跟Tomcat的reloadable="false"的意图一致
Servlet的设置
[html] view plain copy
<servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/>
<servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/>
<servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/>
一般就是指定那些需要通过srun的解析。比如在这里,把*.jsp改成*.jss,其他不变,那么只要在访问时遇到*.jss的文件就和原来遇到*.jsp一样处理。通过这个可以指定解析的引擎,如以下的配置:
[html] view plain copy
<servlet-mapping url-pattern='*.xtp' servlet-name='com.caucho.jsp.XtpServlet'/>
在Servlet中,也可以指定servlet。如
[html] view plain copy
<servlet servlet-name='hello' servlet-class='test.HelloWorld'/>
<servlet-mapping url-pattern='/hello.html' servlet-name='hello'/>
在servlet-mapping中有个重要的参数case-sensitive 如果在windows上,最好配置成false,忽略大小写,从而和windows的约定一致。
Session的配置
[html] view plain copy
<session-config>
<session-max>4096</session-max>
<session-timeout>30</session-timeout>
<enable-cookies>true</enable-cookies>
<enable-url-rewriting>true</enable-url-rewriting>
<file-store>WEB-INF/sessions</file-store>
</session-config>
session-max :最大 session数量
session-timeout :session过期时间,以分钟为单位。
是否允许cookie :指session是否采用cookies。如果采用cookies,浏览器必须支持session才能使用,发布时建议改成false。enable-url-rewriting和enable-cookies一般配合使用。如果enable-cookies是false,
enable-url-rewriting应该设成true比较合适。
file-store :该配置指示服务器是否把session作为文件存放在服务器上。如果把该项注释掉,则在你的web-app目录下的WEB-Inf/sessions目录不保存序列化后的session对象。Session还有jdbc-store配置,对应着把session通过jdbc永久保存在数据库中。其实也就是会话变量的序列化后的保存和重新载入的物理实现。
本文出自http://blog.csdn.net/dannor2010/article/details/8446584