Tomcat 7 下对 JSP 进行预编译
问题:
有一个web应用,包含很多jsp,直接调用某些后台库的方法,但这些库通过 Java 的安全管理器运行在一个沙盒环境中,必须使用某个密钥签名后才能进行调用。
解决方案:
因此初步考虑使用以下步骤来解决这个问题:
1. 预编译 JSP 文件
2. 打包这些预编译后的 JSP 文件到一个 jar 包中
3. 使用给定的密钥对这个jar包进行签名
4. 将签名后的jar包放在 WEB-INF/lib 目录下
5. 移除 jsp 文件
详细处理:
我们需要使用 jspc-maven-plugin 这个 maven 的插件来对 jsp 进行预编译。
下面是 pom.xml 源码:
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupid>org.wso2.appserver</groupid>
<artifactid>wso2appserver-samples-parent</artifactid>
<version>4.1.1</version>
<relativepath>../../pom.xml</relativepath>
</parent>
<modelversion>4.0.0</modelversion>
<artifactid>example</artifactid>
<packaging>war</packaging>
<name>WSO2 AS - Example webapp</name>
<dependencies>
<dependency>
<groupid>org.wso2.carbon</groupid>
<artifactid>org.wso2.carbon.tomcat</artifactid>
<version>${carbon.platform.version}</version>
</dependency>
<dependency>
<groupid>org.apache.axis2.wso2</groupid>
<artifactid>axis2-client</artifactid>
<version>${axis2.osgi.version}</version>
</dependency>
<dependency>
<groupid>org.wso2.carbon</groupid>
<artifactid>org.wso2.carbon.authenticator.proxy</artifactid>
<version>${carbon.platform.version}</version>
</dependency>
<dependency>
<groupid>org.wso2.carbon</groupid>
<artifactid>org.wso2.carbon.authenticator.stub</artifactid>
<version>${carbon.platform.version}</version>
</dependency>
<dependency>
<groupid>org.wso2.carbon</groupid>
<artifactid>org.wso2.carbon.core.common</artifactid>
<version>${carbon.platform.version}</version>
</dependency>
<dependency>
<groupid>org.wso2.carbon</groupid>
<artifactid>org.wso2.carbon.core</artifactid>
</dependency>
<dependency>
<groupid>org.apache.axis2.wso2</groupid>
<artifactid>axis2</artifactid>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupid>org.codehaus.mojo</groupid>
<artifactid>build-helper-maven-plugin</artifactid>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated-code/src
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupid>org.codehaus.mojo.jspc</groupid>
<artifactid>jspc-maven-plugin</artifactid>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<inputwebxml>${pom.basedir}/src/main/resources/WEB-INF/web.xml</inputwebxml>
<source>1.5
<target>1.5</target>
<sources>
<directory>${pom.basedir}/src/main/resources</
