Этот ответ будет соответствовать моей конкретной проблеме, но любой может наверняка адаптировать его, чтобы он работал в своем проекте.
В моем проекте было два сервлета в зависимости от внешних файлов.Чтобы централизовать эти внешние файлы в папке моего веб-приложения, я использовал третий сервлет, чтобы установить расположение файлов.В моем файле GWT web.xml я добавляю StartUpServlet
и задаю его загрузку сначала моим контейнером сервлетов (Tomcat).Вот мой web.xml:
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>StartUpServlet</servlet-name>
<servlet-class>com.banctecmtl.ca.vlp.view.webview.server.StartUpServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>VlpControllerService</servlet-name>
<servlet-class>com.banctecmtl.ca.vlp.view.webview.server.VlpControllerServiceImpl</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>UserAccessService</servlet-name>
<servlet-class>com.banctecmtl.ca.vlp.view.webview.server.UserAccessServiceImpl</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>EventService</servlet-name>
<servlet-class>de.novanic.eventservice.service.EventServiceImpl</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>EventService</servlet-name>
<url-pattern>/VirtualLabPortal/gwteventservice</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>VlpControllerService</servlet-name>
<url-pattern>/VirtualLabPortal/VlpController</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>UserAccessService</servlet-name>
<url-pattern>/VirtualLabPortal/UserAccess</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>StartUpServlet</servlet-name>
<url-pattern>/VirtualLabPortal/StartUpServlet</url-pattern>
</servlet-mapping>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>VirtualLabPortal.html</welcome-file>
</welcome-file-list>
</web-app>
В этом StartUpServlet
я установил расположение файлов следующим образом: (Возможно, есть лучший способ сделать это, но это сработало):
public class StartUpServlet extends RemoteServiceServlet {
/**
* This Servlet is used to set configuration file locations.
*/
private static final long serialVersionUID = 6459940076859400546L;
private final String CONFIG_FOLDER = "config";
private final String LOG_FOLDER = "logs";
public void init() {
// Check the current of to have the good file separator for file
// browsing
String os = System.getProperty("os.name").toLowerCase();
// windows
String fileSeparator;
if (os.indexOf("win") >= 0) {
fileSeparator = "\\";
} else {
fileSeparator = "/";
}
String jaasConfigPath = super.getServletContext().getRealPath(
CONFIG_FOLDER + fileSeparator + "JaasConfig.conf");
String jaasConfigName = "JaasConfig";
String configFile = super.getServletContext().getRealPath(
CONFIG_FOLDER + fileSeparator + "config.properties");
String log4j = getServletContext().getRealPath(
CONFIG_FOLDER + fileSeparator + "log4j.properties");
String logFile = getServletContext().getRealPath(
LOG_FOLDER + fileSeparator + "vlplog.log");
// Order is important here as the log4j properties file use the system
// property : "logFile"
System.setProperty("logFile", logFile);
PropertyConfigurator.configure(log4j);
System.setProperty("jaasConfigName", jaasConfigName);
System.setProperty("jaasConfigPath", jaasConfigPath);
System.setProperty("configFile", configFile);
}
}
По сути, я получаю реальный путь ServletContext, поэтому он дает мне в Tomcat следующий путь: ${CATALINA_HOME}/webapps/<myapps>
Затем я использую его для установки местоположений файлов: config / config.properties,config / log4j.properties и мой config / JaasConfig.
После того, как они установлены, я могу использовать их в других моих сервлетах, как это System.getProperty(KEY);
Спасибо @Aviram за помощь в установкерасположение JaasConfig.