2016-12-13 1 views
0

In meiner Shiro-Anwendung verwende ich die JndiRealmFactory, um meine Realms zu definieren. Ich registrieren meine Reiche wie folgt aus:Wie definiere ich die anfängliche Kontextfactory in shiro.ini?

Hashtable<String, String> args = new Hashtable<>(); 
args.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory"); 
InitialContext ctx = new InitialContext(args); 
ctx.bind("realms/MyRealm", myRealm); 

jedoch Shiro nicht realms/MyRealm finden. Ich denke der Grund ist, dass ich die JndiRealmFactory 's jndiEnvironment definieren muss, die die Context.INITIAL_CONTEXT_FACTORY Eigenschaft enthält. Allerdings weiß ich nicht, wie diese Eigenschaft einzustellen in meinem shiro.ini:

realmFactory.jndiEnvironment = ? 

ich auf TomEE meine Anwendung laufen lasse.

Mein aktueller shiro.ini sieht wie folgt aus:

realmFactory = org.apache.shiro.realm.jndi.JndiRealmFactory 
realmFactory.jndiNames = realms/MyRealm 
+0

Veröffentlichen Sie Ihre volle shiro.ini gibt es keine Notwendigkeit realmFactory.jndiEnvironment – dev

+0

Der Code, den ich gepostet habe, ist alles, was ich über die Registrierung von Realms erfahren habe. Ich vermisse etwas? – user2035039

Antwort

0

Sie sind nicht binden, zur Laufzeit etwas im EE Kontext soll. Sie können es wahrscheinlich in Tomcat als Ressource oder resources.xml definieren (tomee specific), dann verwenden Sie einfach eine Standard-Lookup, um den Wert zu lesen (keine speziellen Eigenschaften an InitialContext übergeben.

+0

Ich habe versucht, die zweite Antwort von hier zu implementieren: http://stackoverflow.com/questions/18507629/inject-cdi- managed-bohne-in-custom-shiro-authorizingrealm Wie mache ich das mit Ressourcen? Wie instanziiere ich meine Realms und Konstruktor Injektion? – user2035039

+0

bevor Sie in die Erklärung, die ziemlich lange sind Ich frage mich, ob es nicht wäre einfacher, einfach die cdi-integration von pax https://ops4j1.jira.com/wi zu verwenden Ki/Display/PAXSHIRO/CDI + Unterstützung? Würde die Referenzierung überhaupt nicht auf JNDI setzen. Wenn nicht, ist es eine Frage der Definition Ihres Realms über https://tomcat.apache.org/tomcat-8.5-doc/config/context.html –

+0

Dies scheint eine gute Alternative zu sein – user2035039