一个关于ejb生命周期问题, ctx.lookup("LifeCycleBean/remote"); "LifeCycleBean/remote"是从哪里配置的,怎么配置,以前用的@RemoteBinding(jndiBinding = "byc:/ejb3/helloworld") 注释写的。\
jboss 服务器
package sessionBeanLifeCycle;public interface LifeCycle {
public String Say();
public void stopSession ();
}@Stateful
@Remote ({LifeCycle.class})
public class LifeCycleBean implements LifeCycle { public String Say() {
try {
Thread.sleep(1000*30);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "这是会话Bean生命周期应用例子";
} @Init
public void initialize () {
System.out.println("initialize()方法被调用");
}
@PostConstruct
public void Construct () {
System.out.println("Construct()方法被调用");
} @PreDestroy
public void exit () {
System.out.println("exit()方法被调用");
} @PrePassivate
public void serialize () {
System.out.println("serialize()方法被调用");
} @PostActivate
public void activate () {
System.out.println("activate()方法被调用");
} @Remove
public void stopSession () {
System.out.println("stopSession()方法被调用");
//调用该方法以通知容器,移除该bean实例、终止会话。方法体可以是空的。
}}jsp: Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming"); try {
System.out.println("begin...");
LifeCycle lifecycle = (LifeCycle) session.getAttribute("lifecycle");
System.out.println("begin...");
if (lifecycle == null) {
InitialContext ctx = new InitialContext(props);
lifecycle = (LifeCycle) ctx.lookup("LifeCycleBean/remote");
System.out.println("LifeCycleBean/remote");
session.setAttribute ("lifecycle", lifecycle);
}
out.println(lifecycle.Say());
out.println("<BR>请注意观察Jboss控制台输出.等待9分钟左右,容器将会钝化此会话Bean,@PrePassivate注释的方法将会执行<BR>");
out.println("<font color=red>你可以执行会话Bean的stopSession方法,把会话Bean实例从对象池中移走。在销毁这个会话Bean之前将会执行 @PreDestroy注释的方法<BR></font>");
/*
lifecycle.stopSession();
*/
} catch (Exception e) {
out.println("gaochong "+e.getMessage());
}
jboss 服务器
package sessionBeanLifeCycle;public interface LifeCycle {
public String Say();
public void stopSession ();
}@Stateful
@Remote ({LifeCycle.class})
public class LifeCycleBean implements LifeCycle { public String Say() {
try {
Thread.sleep(1000*30);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "这是会话Bean生命周期应用例子";
} @Init
public void initialize () {
System.out.println("initialize()方法被调用");
}
@PostConstruct
public void Construct () {
System.out.println("Construct()方法被调用");
} @PreDestroy
public void exit () {
System.out.println("exit()方法被调用");
} @PrePassivate
public void serialize () {
System.out.println("serialize()方法被调用");
} @PostActivate
public void activate () {
System.out.println("activate()方法被调用");
} @Remove
public void stopSession () {
System.out.println("stopSession()方法被调用");
//调用该方法以通知容器,移除该bean实例、终止会话。方法体可以是空的。
}}jsp: Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming"); try {
System.out.println("begin...");
LifeCycle lifecycle = (LifeCycle) session.getAttribute("lifecycle");
System.out.println("begin...");
if (lifecycle == null) {
InitialContext ctx = new InitialContext(props);
lifecycle = (LifeCycle) ctx.lookup("LifeCycleBean/remote");
System.out.println("LifeCycleBean/remote");
session.setAttribute ("lifecycle", lifecycle);
}
out.println(lifecycle.Say());
out.println("<BR>请注意观察Jboss控制台输出.等待9分钟左右,容器将会钝化此会话Bean,@PrePassivate注释的方法将会执行<BR>");
out.println("<font color=red>你可以执行会话Bean的stopSession方法,把会话Bean实例从对象池中移走。在销毁这个会话Bean之前将会执行 @PreDestroy注释的方法<BR></font>");
/*
lifecycle.stopSession();
*/
} catch (Exception e) {
out.println("gaochong "+e.getMessage());
}
invoke
LifeCycleBean (class: org.jnp.interfaces.NamingContext)
| +- remote (class: java.lang.Object)
| +- remoteStatefulProxyFactory (proxy: $Proxy81 implements interface org.jboss.ejb3.ProxyFactory)