SSI(Server Side Includes)是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是HTML文件中,可以通过注释行调用的命令或指针。SSI 具有强大的功能,只要使用一条简单的SSI 命令就可以实现整个网站的内容更新,动态显示时间和日期,以及执行shell和CGI脚本程序等复杂的功能。
SSI最初在NCSA服务器平台上推出,在Apache服务器中得到扩展和加强,目前已经可以在几乎所有的服务器上运行。本文将主要介绍如何在JBoss 5.1下配置SSIServlet启用SSI。
JBoss 5.1内置对SSI的支持,但是默认是没有启用的,需要修改配置启用SSI,在JBoss下启用SSI主要由两步(以defualt配置为例):
1. 启用SSIServlet,修改${JBOSS_HOME}/server/default/deployers/jbossweb.deployer/web.xml, 找到Servlet配置,可以看到对SSI的配置已经被注释了,去掉注释就可以启用SSIServlet了。
<!--Server Side Includes processing servlet, which processes SSI-->
<servlet>
<servlet-name>ssi</servlet-name>
<servlet-class>
org.apache.catalina.ssi.SSIServlet
</servlet-class>
<init-param>
<param-name>buffered</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>expires</param-name>
<param-value>666</param-value>
</init-param>
<init-param>
<param-name>isVirtualWebappRelative</param-name>
<param-value>0</param-value>
</init-param>
<!--加入如下代码-->
<init-param>
<param-name>inputEncoding</param-name>
<param-value>GB2312</param-value>
</init-param>
<init-param>
<param-name>outputEncoding</param-name>
<param-value>GB2312</param-value>
</init-param>
<load-on-startup>4</load-on-startup>
</servlet>
<!-- The mapping for the SSI servlet -->
<servlet-mapping>
<servlet-name>ssi</servlet-name>
<url-pattern>*.shtml</url-pattern>
</servlet-mapping>
2. 设置SSIServlet的安全策略,由于SSIServlet会访问应用服务器的外部资源,例如shell、cgi,因此需要配置其安全策略,否则JBoss在启动的时候会抛出SecurityException例外,为SSIServlet设置安全策略的方式很简单,修改${JBOSS_HOME}/server/default/deploy/jbossweb.sar/context.xml,在根结点上增加 privileged="true"即可。
通过同样的方式可以在JBoss 5.1下启用http invoker, cgi等Servlet。
JBoss4.2.2开启SSI
在jboss的\server\default\deploy\jboss-web.deployer\conf中修改web.xml,打开其中的SSI的servlet及mapping配置,
除此之外,还要修改\server\default\deploy\jboss-web.deployer\context.xml,在其中加入privileged="true",即:
<Context cookies="true" crossContext="true" privileged="true">。
ok,大功告成。