2016-12-13 8 views
0

私のShiroアプリケーションでは、JndiRealmFactoryを使用して自分のレルムを定義しています。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); 

しかし、シロはrealms/MyRealmを見つけることができません。理由は、私がプロパティを含むJndiRealmFactoryのjndiEnvironmentを定義する必要があると思います。しかし、私は私のshiro.iniでこのプロパティを設定する方法がわからない:

realmFactory.jndiEnvironment = ? 

私はTomEEに自分のアプリケーションを実行しています。

私の現在のshiro.iniは、次のようになります。

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

完全なshiro.iniを投稿する必要はありませんrealmFactory.jndiEnvironment – dev

+0

私が掲示したコードは、すべて私が領域の登録をregadringしています。何かが足りないのですか? – user2035039

答えて

0

あなたはEEコンテキストで実行時の何時にバインドすることになっていません。おそらくTomcatでリソースまたはresources.xml(tomee固有)として定義することができます。次に、値を読み取るために標準検索を使用します(InitialContextに渡される特別なプロパティはありません)。

+0

私はここから2番目の答えを実装しようとしました:http://stackoverflow.com/questions/18507629/inject-cdi-私がレルムをインスタンス化してコンストラクタインジェクションを行うにはどうすればいいですか?説明に入る前に – user2035039

+0

を実行してください。かなり長いですが、そうでないかどうか疑問に思っています。 pax https://ops4j1.jira.com/wiのcdi統合を使用する方が簡単ですKI /ディスプレイ/ PAXSHIRO/CDI +サポート?参照がJNDIに全く依存しないようにします。そうでない場合は、https://tomcat.apache.org/tomcat-8.5-doc/config/context.html –

+0

を使って領域を定義することです。これは良い代替手段のようです – user2035039

関連する問題