在tomcat中如何装载加密后的class文件

canca10年前 (2014-06-05)JavaServer Page340

在tomcat中如何装载加密后的class文件
1. windows平台:
需要对以下三种方式分别进行配置:
a. 以命令行方式启动tomcat
启动命令为tomcat的bin目录下的startup.bat
修改tomcat的bin目录下的文件:catalina.bat
在文件的前面增加如下一行命令:
set JAVA_OPTS=-agentlib:<动态库classloader.dll所在路径>\classloader 
例如:
set JAVA_OPTS=-agentlib:c:\ee2ee\java_protect\classloader
如果要显示解密过程中的调试信息,在classloader后加上=debug,例如: 
set JAVA_OPTS=-agentlib:c:\ee2ee\java_protect\classloader=debug
b. 从开始菜单中启动tomcat
启动方式为:选择windows开始菜单 ==> tomcat菜单下的“Start Tomcat”。
修改tomcat的bin目录下的文件catalina.xml
找到 <property name="catalina.jvm.args" value=""/>
在其value中增加-agentlib:c:\ee2ee\java_protect\classloader,例如:
<property name="catalina.jvm.args" value="-agentlib:c:\ee2ee\java_protect\classloader"/>
如果还有其他选项,多个选项间用西文空格分隔。
c. 以系统服务方式启动tomcat
为了实现tomcat在开机时自动启动,需要把tomcat加到系统服务中。进入tomcat的bin目录,修改tomcat的service.bat,在语句
echo The service '%SERVICE_NAME%' has been installed.
前加上:
"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-agentlib:C:\webspider\classloader"
然后在命令行执行如下两行命令:
service remove
service install
重新安装tomcat服务,然后进入windows服务管理界面重新启动tomcat服务
2. linux平台:
修改tomcat的bin目录下的文件:catalina.sh 
在文件的前面增加如下一行命令:
JAVA_OPTS=-agentpath:<动态库所在路径/libclassloader.so>
例如:
JAVA_OPTS='-agentpath:/usr/java/libclassloader.so'

取消Tomcat7 Server 3.0扫描

在tomcat启动的时候,我们可以做一些优化设置来使得tomcat的启动更快速,下面是一些常见的优化加速启动的方法建议(以tomcat-7.+为例说明)。

1、  Jars包

1.1、将一些不必要的jar包去掉,当tomcat启动加载jar包的时候,会去搜寻每个jar包里的class文件,这些都会耗费一些时间,如果你把不必要的jar包去掉了,很显然会节省时间。

1.2、你可以将一些与TLD files、注解、网络碎片无关的jar包加入到属性

tomcat.util.scan.DefaultJarScanner.jarsToSkip的值中,这可以在conf/catalina.properties中进行设置。

2、  缓存

你可以在bin/catalina.sh中设置jvm所能使用到的缓存大小,如下:

JAVA_OPTS=’-Xms1024m -Xmx1024m’

3、  配置文件

Tomcat的配置比如server.xml是xml文件,而xml的解析也是要花时间的,如果我们能将xml配置文件尽可能地弄得简洁一些,比如去掉一些没有用到的节点,这也有助于减少启动的时间,虽然这个节省的时间看来很少。

4、  应用程序

4.1、确保你程序在启动的时候没有一些处理很耗时的地方。

4.2、删除掉tomcat自带的目录webapps及下面的所有内容,不然的话每次启动的时候都会加载这些自带的例子。

4.3、修改WEB-INF/web.xml文件,在默认的情况下<web-app>中的属性metadata-complete的值为 false,也就是这样:<web-app metadata-complete=”false” >,这种情况下,tomcat在启动时会去自动扫描是否有注解及网络碎片,如果你不想tomcat这样做,你可以将metadata- complete的值设为true。

5、  并行启动多个应用程序

默认情况下,假设在一个tomcat下你有多个应用,那么启动的时候,这些应用程序都是依次启动的,除非所有应用全部启动完毕,tomcat才会启动完成,但从Tomcat 7.0.23+开始,你可以配置多个应用程序并行启动了!你可以通过修改配置文件中Host里面的startStopThreads这个属性的值来达到这个目的,将多个应用startStopThreads的值设为不同即可。

6、  Entropy Source

Tomcat 7+严重依赖SecureRandom这个类为它的session id或其它地方取得随机数值,这取决于你的JRE,它有可能在tomcat启动时造成非常大的耗时,比如,在子猴启动tomcat-7.0.26的时候,它耗时近25秒!

INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [24,790] milliseconds.

要解决这个问题,可以通过配置JRE使用非阻塞的Entropy Source,在bin/ catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。

加入后我再启动tomcat,整个启动下降到仅耗时Server startup in 912 ms。

相关文章

在web.xml不认<taglib>解决办法

在web.xml不认<taglib>解决办法: 如果是头是这样的<!DOCTYPE web-app PUBLIC "-//Sun Micros...

<html:select>设置默认值

在ActionFrom的reset方法里赋初值就可以,这样不管是调用的action或jsp都会先调用reset方法。...

struts,ajax乱码解决方案

乱码问题好像跟我们中国程序员特别有缘,一直困扰着我们,从开始的JSP乱码问题,STRUTS乱码问题,到现在的AJAX乱码问题,无一不是搞得许多程序员焦头烂额的,整天骂XXX产品对中文支持不了,UT...

JSP动态include与静态include的区别

动态INCLUDE   jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态...

浏览网页时的错误代号

① 客户方错误    100  继续    101  交换协议  ② 成功   ...

FCKeditor的秘密

       哈哈。。由于项目的需要,这几天一直在搞FCKeditor。其实,FCKeditor配置很简单。但不知道怎么样。在我的项目里FC...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。