2014-03-27 19 views
5

Ich verwende Selenium, um automatische JUnit-Tests in einer Maven-Webanwendung auszuführen. Grundsätzlich verwende ich die Anwendung auf einem eingebetteten Tomcat-Server (org.apache.tomcat.embed). Die Anwendung verwendet die BASIC-Authentifizierung, daher muss ich tomcat-users.xml auf dem eingebetteten Tomcat-Server definieren. Ich habe versucht, tomcat-users.xml auf src/main/webapp/META-INF/zu setzen, aber es funktioniert nicht.Wie definiere ich tomcat-users.xml auf dem eingebetteten Tomcat?

Hier ist, wie ich den Server zu starten:

tomcat = new Tomcat(); 
tomcat.setPort(0); 
tomcat.addWebapp("/", new File("src/main/webapp/").getAbsolutePath()); 
tomcat.start(); 

Antwort

6

Ich dachte, dies vor einiger Zeit, so ist hier die Lösung für jemanden, der ein ähnliches Problem hat. Grundsätzlich können Sie die Dinge definieren, die in tomcat-users.xml direkt im Java-Code wäre:

//Add role and user order is important 
tomcat.addRole("userName", "admin"); 
tomcat.addRole("userName", "editor"); 
tomcat.addUser("userName", "password"); 
+0

Es scheint, dass die Reihenfolge 'addUser' und' addRole' wichtig ist Das Hinzufügen einer Rolle nach dem Hinzufügen des Benutzers hat für mich nicht funktioniert. (Version 8.0.21) –

1

Sie können es tun, indem Sie eine context.xml Datei hinzufügen.

try { 
    Context context = tomcat.addWebapp("/test", "PathToTheWebApp"); 
    context.setConfigFile(Paths.get("PathToTheContextFile").toUri().toURL()); 
} catch (ServletException e) { 

} 

Ihre context.xml sollte so sein.

<?xml version="1.0" encoding="UTF-8"?> 
<Context> 
    <Realm className="org.apache.catalina.realm.MemoryRealm" pathname="PathToUsers.xml"/> 
</Context> 

Ihre Datei users.xml ähnelt der Datei tomcat-users.xml. Beispiel:

<?xml version='1.0' encoding='utf-8'?> 
<tomcat-users> 
    <role rolename="admin"/> 
    <user username="admin" password="admin" roles="admin"/> 
</tomcat-users> 
+0

Sollen sich users.xml und context.xml im Ressourcenordner befinden? – gaurav5430

+0

nein. Sie können den Pfad der user.xml über den Pfadnamen der context.xml angeben –

Verwandte Themen