[英]Tomcat7 on Ubuntu14.04 html works but 404 error for servlets
[英]Singleton in Servlets and other Classes on Tomcat7
我有一些Web應用程序。 每個位於Tomcat7上的不同虛擬主機中。 所有這些Web應用程序都使用相同的庫集合(由我自己編寫),以.jar的形式存儲在WEB-INF / lib中。該庫具有一些靜態類(記錄器,配置等)。 它接縫了web-app X可以看到/使用web-app Y的靜態實例。“隨機地” X寫入Y的日志文件。Y使用X的配置。
這通常與Tomcat中的JVM有關嗎?
僅對於Servlet,我可以將靜態類存儲在ServletContext中,但非Servlet無法訪問它們,對嗎?
這里是Config.java類中的構造方法
public class Config{
public static Config instance;
private Config(){
}
public static Config getInstance(){
if(instance==null) instance = new Config();
return instance;
}
}
在Servlet和其他類中,我使用
private static Config config = Config.getInstance();
還有其他方法可以在整個Web應用程序中共享一個Class的一個實例,但只能在此Web應用程序中共享嗎?
在上下文/X
運行的任何內容都不會在/Y/WEB-INF/lib
或Y/WEB-INF/classes
看到任何內容。 原因是/X/WEB-INF/lib
中的jar和/X/WEB-INF/classes
中的類與上下文/Y
的jar和類位於不同的類加載器中 。 這不是Tomcat的“問題”,這是根據J2EE Servlet規范。
我將重新設計,但是如果您確實需要在兩個或多個上下文之間共享一個類,請將這些類放在一個jar中,然后將該jar放在${CATALINA_HOME}/lib
。 該文件夾中的類對於所有上下文都是可見的,因為它們是作為上下文類加載器的父類加載到類加載器中的。
執行此操作的“正確”方法是在JNDI中注冊對象,應用程序的每個組件都可以在其中查找對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.