[Seasar-user:20367] Re: InitialContext について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2010年 11月 26日 (金) 16:30:11 JST


小林 (koichik) です.

Date: Fri, 26 Nov 2010 15:15:16 +0900
From: oh <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:20366] InitialContext について

> javax.naming.NoInitialContextException: Need to specify class name in environment or system property
> 
> といった例外で実行できません。
(略)
> S2 で InitialContext を使用するにはどういった設定が必要なのでしょうか。

JNDI の作法通りです。
jndi.properties を用意して

java.naming.factory.initial=org.seasar.extension.j2ee.JndiContextFactory

と書いておくか、

Hashtable<?, ?> env = new Hashtable<Object, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.seasar.extension.j2ee.JndiContextFactory");
InitialContext ctx = new InitialContext(env);

となります。
それより

@Stateless
public class SwitchServiceImpl {
    @PersistenceContext(name = "fooEntityManager", unitName = "foo-pu")
    EntityManager fooEntityManager;

    @PersistenceContext(name = "barEntityManager", unitName = "bar-pu")
    EntityManager barEntityManager;

    EntityManager getEntityManager() {
        if (status) {
            return fooEntityManager;
        } else {
            return barEntityManager;
        }
    }
}

の方がシンプルだと思いますけど。


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
    <property name="twitter">"http://twitter.com/koichik"</property>
</component>



Seasar-user メーリングリストの案内