私は同じ問題を抱えていました。私は、現在のクラスパス(戦争そのものの中にある)に基づいてこのプロパティを動的に設定できないかどうかを見たいと思っていました。これはあるjava.security.auth.login.configのインスタンス化時にプロパティを設定されているん何
<listener>
<listener-class>example.SecurityListener</listener-class>
</listener>
:
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);
}
}
}
はもちろん、あなたのweb.xmlにリスナーを追加する必要がありますWebアプリケーションがまだ定義されていない場合は、これは、あなたのソースフォルダにそれをスローし、他の場所で再定義されなければ自動的にロードすることができることを意味します。私はこれをテストしてTomcat 6で動作します。
たとえば、あなたのTomcatインストールが "C:\ program files \ tomcat6 \"にあって、 "C:\ program files \ tomcat6 \ webapps \ mywar "であれば、" C:¥program files¥tomcat6¥webapp¥mywar¥WEB-INF¥classes "となります。これは常に正確です。この解決策が他のWebアプリケーションともうまく機能するかどうかはわかりませんが、login.confはクラスパスのルートがどこにあるか分かりません。
希望に役立ちます!
設定を指定するには、コードを使用することができます。おそらく、この 'java.security.auth.login.config'パラメータをWAR内の' .properties'ファイルのどこかに設定することができますか?あなたの場合、この設定はTomcatのすべてのアプリケーションでグローバルになります。 – yegor256
あなたのWARファイルの中にある.confファイルを参照する方法を見つけましたか? – yathirigan