一个关于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());
}

解决方案 »

  1.   

    还是不行,写helloworld 就可以,这个怎么都不行呢,又做了一个拦接器也不可以。
      

  2.   

    List of MBean operations:
    invoke 
    LifeCycleBean (class: org.jnp.interfaces.NamingContext)
      |   +- remote (class: java.lang.Object)
      |   +- remoteStatefulProxyFactory (proxy: $Proxy81 implements interface org.jboss.ejb3.ProxyFactory)