tomcat启动时如何加载自己的.class,在线等......

时间:2021-12-29 16:46:52
tomcat启动时如何加载自己编写的.class,不是servlet或应用自己的.class,这样代码,要在用户请求发过来时才生成对象进行操作,我要的是随tomcat服务器启动而启动执行的.class加载办法,任何请求到来之前它已经运行了......

6 个解决方案

#1


tomcat的class类加载顺序:

1,$JAVA_HOME/jre/lib/ext/下的jar文件。

2,环境变量CLASSPATH中的jar和class文件。

3,$CATALINA_HOME/common/class下的class文件。

4,$CATALINA_HOME/commons/endorsed下的jar文件。

5,$CATALINA_HOME/commons/i18n下的jar文件。

6,$CATALINA_HOME/common/lib下的jar文件。jdbc驱动之类的jar我那间也可以放到这里,这样可以避免server.xml配置好数据源却找不到jdbc Driver的情况

7,$CATALINA_HOME/server/classes下的class文件。

8,$CATALINA_HOME/server/lib下的jar文件。

9,$CATALINA_BASE/shared/classes下的class文件。

10,$CATALINA_BASE/shared/lib下的jar文件。

11,各自具体的webapp /WEB-INF/classes下的class文件。

12,各自具体的webapp /WEB-INF/lib下的jar文件。

这就是tomcat的类加载顺序,你可以将class放在common/classes中

#2


受益了!

#3


引用 1 楼 lovingprince 的回复:
tomcat的class类加载顺序: 

1,$JAVA_HOME/jre/lib/ext/下的jar文件。 

2,环境变量CLASSPATH中的jar和class文件。 

3,$CATALINA_HOME/common/class下的class文件。 

4,$CATALINA_HOME/commons/endorsed下的jar文件。 

5,$CATALINA_HOME/commons/i18n下的jar文件。 

6,$CATALINA_HOME/common/lib下的jar文件。jdbc驱动之类的jar我那间也可以放到这里,这样可以避免server.xml配置好数据源却找不到jdbc Dr…

tomcat不同版本,可能没有/common/...目录
试着
设置环境变量CLASSPATH中c:\pas.class
pas.java
package ss;

public class pas {

public static void zz(){
System.out.println("sssssss");
}
}
启动tomcat无sssssss输出,估计没有执行c:\pas.class,失败!!!!

#4


楼主的问题描述不是很清楚,我是否可以这么理解,楼主的部分应用业务系统应该在整个应用系统能够给被正式用户使用前执行。
请楼主指正。

#5


引用 4 楼 lb.leta 的回复:
楼主的问题描述不是很清楚,我是否可以这么理解,楼主的部分应用业务系统应该在整个应用系统能够给被正式用户使用前执行。 
请楼主指正。

是这样的:
我希望tomcat启动后,生成一个全局的变量,供所有登录用户使用,或者tomcat启动过程中,从磁盘读一个文件的内容,
这些操作要在第一个登录用户之前完成,如何实现?

#6


你可以一个写ServletListener区实现你业务,实现ServletContextListener接口就可以了。然后在应用系统中web.xml中配置这个Listener。
  <listener>   
     <listener-class>   
         xxxxx.xxxListener    
     </listener-class>   
  </listener>

#1


tomcat的class类加载顺序:

1,$JAVA_HOME/jre/lib/ext/下的jar文件。

2,环境变量CLASSPATH中的jar和class文件。

3,$CATALINA_HOME/common/class下的class文件。

4,$CATALINA_HOME/commons/endorsed下的jar文件。

5,$CATALINA_HOME/commons/i18n下的jar文件。

6,$CATALINA_HOME/common/lib下的jar文件。jdbc驱动之类的jar我那间也可以放到这里,这样可以避免server.xml配置好数据源却找不到jdbc Driver的情况

7,$CATALINA_HOME/server/classes下的class文件。

8,$CATALINA_HOME/server/lib下的jar文件。

9,$CATALINA_BASE/shared/classes下的class文件。

10,$CATALINA_BASE/shared/lib下的jar文件。

11,各自具体的webapp /WEB-INF/classes下的class文件。

12,各自具体的webapp /WEB-INF/lib下的jar文件。

这就是tomcat的类加载顺序,你可以将class放在common/classes中

#2


受益了!

#3


引用 1 楼 lovingprince 的回复:
tomcat的class类加载顺序: 

1,$JAVA_HOME/jre/lib/ext/下的jar文件。 

2,环境变量CLASSPATH中的jar和class文件。 

3,$CATALINA_HOME/common/class下的class文件。 

4,$CATALINA_HOME/commons/endorsed下的jar文件。 

5,$CATALINA_HOME/commons/i18n下的jar文件。 

6,$CATALINA_HOME/common/lib下的jar文件。jdbc驱动之类的jar我那间也可以放到这里,这样可以避免server.xml配置好数据源却找不到jdbc Dr…

tomcat不同版本,可能没有/common/...目录
试着
设置环境变量CLASSPATH中c:\pas.class
pas.java
package ss;

public class pas {

public static void zz(){
System.out.println("sssssss");
}
}
启动tomcat无sssssss输出,估计没有执行c:\pas.class,失败!!!!

#4


楼主的问题描述不是很清楚,我是否可以这么理解,楼主的部分应用业务系统应该在整个应用系统能够给被正式用户使用前执行。
请楼主指正。

#5


引用 4 楼 lb.leta 的回复:
楼主的问题描述不是很清楚,我是否可以这么理解,楼主的部分应用业务系统应该在整个应用系统能够给被正式用户使用前执行。 
请楼主指正。

是这样的:
我希望tomcat启动后,生成一个全局的变量,供所有登录用户使用,或者tomcat启动过程中,从磁盘读一个文件的内容,
这些操作要在第一个登录用户之前完成,如何实现?

#6


你可以一个写ServletListener区实现你业务,实现ServletContextListener接口就可以了。然后在应用系统中web.xml中配置这个Listener。
  <listener>   
     <listener-class>   
         xxxxx.xxxListener    
     </listener-class>   
  </listener>