2017-01-16 3 views
1

Нам недавно пришлось настроить один из серверов tomcat с нуля. Версия Tomcat - 8.0.20. Развертывание военного файла, теперь System.getProperty("mode") возвращает «null», где он должен возвращать PREPROD.System.getProperty («mode») возвращает «null»

Он должен прочитать этот «режим» из файла mode.properties, который находится в каталоге webapps. Две строки, прокомментированные, показывают другую часть кода, которая больше не работает на новом сервере tomcat. Я заменил его кодом, который должен работать.

//String pathOfWebInf = sce.getServletContext().getRealPath("WEB-INF"); 
//String pathOfLocalhostFile = pathOfWebInf + File.separator + "classes" 
//  + File.separator; 
String pathOfLocalhostFile = this.getClass().getResource("/").getPath(); 

String mode = System.getProperty("mode"); 
String fileName = "localhost-oracle.properties." + mode; 

StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); 
encryptor.setPassword("xxx"); 

Properties dbProps = new EncryptableProperties(encryptor); 
try 
{ 
    InputStream is = new FileInputStream(pathOfLocalhostFile + fileName); 
    dbProps.load(is); 
} catch (Exception e) 
{ 
    throw new IOException("Could not read properties file " + pathOfLocalhostFile + fileName); 
} 
+1

Я хотел бы предложить положить свои свойства в catalina.properties в папке/серверов конф. –

+0

Я решил проблему, обратившись к Tomcat 7, у Tomcat 8 были проблемы, как в http://stackoverflow.com/questions/32197494/why-does-servletcontext-getrealpath-returns-null-on-tomcat-8 – Adder

ответ

1

Вы должны загрузить mode.properties первый, как этот путь

private Properties mode=null; 
mode = new Properties(); 
mode.load(new FileInputStream(pathtoMODE)); 

String mode = mode.getProperty("mode"); 
+0

В идеале мне не нужно было бы жестко указывать путь, возможно, он должен проверить путь к классам для файлов свойств. Также я хотел бы внести минимальный набор изменений в код и конфигурацию, поскольку «старый» код работает с «старыми» кошками в цепочке развертывания. – Adder

2

System.properties относится ко всем свойствам в компьютере, где JVM выполняется ... нет режима ключа определяется там, поэтому вы получаете нулевыми как значение ....

проверить все свойства в компьютере, выполнив:

final Properties props = System.getProperties(); 
props.list(System.out); 

и проверьте себя, нет режима ключа в этой карте ...

+0

Мой вопрос тогда будет: Что я могу изменить, чтобы он читал свойства из файла webapps/mode.properties, как это было на старом tomcat? – Adder

Смежные вопросы