リモートからのEJB呼び出し

なかなか呼び出せなくて苦労したが、できてしまえば簡単。以下のメソッドを用意する。

private def getBean:ZZZZZZSession = {
val props = new Hashtable[String, AnyRef];
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
props.put(Context.PROVIDER_URL, "remote://foo.bar.com:4447");
props.put(Context.SECURITY_PRINCIPAL, "appuser");
props.put(Context.SECURITY_CREDENTIALS, "xxxxxx");
props.put("jboss.naming.client.ejb.context", true.asInstanceOf[java.lang.Boolean]);
// props.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");

val ctxRemote = new InitialContext(props);
ctxRemote.lookup("yyyyyy/ZZZZZZSessionBean!boo.zoo.ZZZZZZSession").asInstanceOf[ZZZZZZSession]
}


上記yyyyyyはデプロイしたjarの名称(.jarは除く)。これでセッションビーンが取得できるので、メソッドも呼び出せるようになる。