Ho avuto lo stesso problema e volevo vedere se non potevo impostare dinamicamente questa proprietà in base al classpath corrente (che si troverebbe all'interno della stessa guerra).
public class SecurityListener implements ServletContextListener {
public SecurityListener() {
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
if(System.getProperty("java.security.auth.login.config") == null) {
String jaasConfigFile = null;
URL jaasConfigURL = this.getClass().getClassLoader().getResource("login.conf");
if(jaasConfigURL != null) {
jaasConfigFile = jaasConfigURL.getFile();
}
System.setProperty("java.security.auth.login.config", jaasConfigFile);
}
}
}
Ovviamente, è necessario aggiungere l'ascoltatore a web.xml:
<listener>
<listener-class>example.SecurityListener</listener-class>
</listener>
Quello che fa è impostata la proprietà java.security.auth.login.config su istanza della applicazione web se non è stata ancora definita. Ciò significa che è possibile gettarlo nella cartella di origine e caricarlo automaticamente se non diversamente ridefinito altrove. Ho provato questo e funziona su Tomcat 6.
Quindi, ad esempio se l'installazione del tuo tomcat era in "C: \ program files \ tomcat6 \" con la tua guerra distribuita in "C: \ program files \ tomcat6 \ webapps" \ mywar ", il percorso che avrebbe trovato sarebbe" C: \ program files \ tomcat6 \ webapp \ mywar \ WEB-INF \ classes ", che è sempre accurato. Non sono sicuro che questa soluzione funzioni anche con altre applicazioni web, ma immagino di sì, dato che login.conf sarà dove si trova la root del classpath.
Spero che questo aiuti!
bene, è un'opzione. Forse possiamo impostare questo parametro 'java.security.auth.login.config 'da qualche parte nel file' .properties' all'interno di WAR? Nel tuo caso questa impostazione sarà globale per tutte le applicazioni in Tomcat. – yegor256
hai trovato un modo per fare riferimento al file .conf inserito nel tuo file WAR? – yathirigan