Я запускаю два веб-приложения в процессе хоста tomat, что означает, по-моему, должно быть два отдельных программы, по одному для каждого приложения.Отдельные свойства JVM для каждой java-программы на одном JVM
Другое дело, что оба приложения имеют свойство JVM, которое я хочу использовать для конкретного приложения.
//common-service library used in both web-apps
public class CommonService {
private static Logger logger = LogManager.getLogger(CommonService.class);
static {
String uuid = UUID.randomUUID().toString();
logger.debug("CommonService initialization for {}" , uuid);
System.setProperty("key1", "value1-"+ uuid);
}
}
Когда я развернуть войны для каждого приложения и увидеть значение для key1
имущества оно перекрываться второй загруженным приложением.
Как я показываю здесь, когда app1 загружается значение для имущества key1
когда app2 загружается значение для имущества key1
Но после app2 загружен, он переопределяет key1
для приложения 1.
код является довольно простым для выше,
public class Service1Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
CommonService commonService = new CommonService();
System.out.println("Service1 key1= " + System.getProperty("key1"));
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h1>" + System.getProperty("key1")+ "</h1>");
out.println("</body>");
out.println("</html>");
}
}
Так, кажется, я могу иметь JVM параметров глобальными только в одной виртуальной машине Java, но у меня есть несколько сервисов, работающие на моем сервере, где каждая служба должна иметь свой собственный набор параметров JVM, на основе которых есть еще один api, который фактически использует это свойство JVM.
Не уверен, что вы действительно просят ... но, возможно, это поможет, если ваши службы не будут использовать свойства System, но полагаются на разные файлы свойств; возможно, это помогает: http://stackoverflow.com/questions/12280787/reading-properties-from-tomcat? – GhostCat
'свойства для каждого java-процесса на одном JVM JVM - это один процесс (не считая LWP). Нет такой вещи, как больше процессов на одном JVM – rkosegi
Правильно, системные свойства на JVM - вы что-то ищете на уровне приложения –