1、第一种调用方法:
Properties p = new Properties();
p.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
p.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
p.setProperty("java.naming.provider.url", "10.10.77.87:1199");
InitialContext ctx = new InitialContext(p);
CreditDirectPayRemote remote = (CreditDirectPayRemote) ctx.lookup("creditDirectPay/pay/remote");
在使用ejb客户端时,如果将jndi对象缓存起来,不用每次都lookup,这样可以节省一点效率,但是当ejb服务重启时,缓存的jndi对象将不能使用。
Properties p = new Properties();
p.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
p.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
p.setProperty("java.naming.provider.url", "10.10.77.87:1199");
InitialContext ctx = new InitialContext(p);
CreditDirectPayRemote remote = (CreditDirectPayRemote) ctx.lookup("creditDirectPay/pay/remote");
for(;;){
try {
System.out.println("第"+(++i)+"次:");
rs= remote.directPay();
Thread.sleep(1500);
} catch (Exception e) {
System.out.println("异常:"+e.getMessage());
Thread.sleep(1000);
}
}
将ejb服务重启后,报如下错误:
异常:Unreachable?: Service unavailable.
java.lang.RuntimeException: Unreachable?: Service unavailable.
at org.jboss.aspects.remoting.ClusterChooserInterceptor.invoke(ClusterChooserInterceptor.java:176)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.ClientTxPropagationInterceptor