首先连接到Glassfish v3很慢

时间:2010-09-14 08:55:28

标签: java java-ee glassfish ejb-3.0 ejb

当尝试从swing应用程序连接到glassfish v3时,它第一次非常慢。需要4-10秒。 在客户端:

public void myMethod(){
    NewSessionBeanRemote facade;
    try {
        InitialContext ic = new InitialContext();
        facade = (NewSessionBeanRemote) ic.lookup(NewSessionBeanRemote.class.getName());
        target.setText(facade.businessMethod());
    } catch (NamingException ex) {
        ex.printStackTrace();
    }
}

在服务器端:

@Stateless
public class NewSessionBean implements NewSessionBeanRemote {

    @Override
    public String businessMethod() {
        return String.valueOf(Math.random() + 121 + 300);
    }
}

@Remote
public interface NewSessionBeanRemote {

    String businessMethod();

}

我需要在环境中做些什么改变?

2 个答案:

答案 0 :(得分:0)

  

当尝试从swing应用程序连接到glassfish v3时,它第一次非常慢。

可能是由于lazy initialization of Application Server services(EJB容器,连接池,...)。

  

需要4-10秒。

后续电话呢?

答案 1 :(得分:0)

这就是Java EE的工作原理。首次调用页面时,将编译所有JSP并实例化所有bean。即使您关闭延迟初始化,也必须在启动时等待相同的时间。

来自wikipedia.org的引文https://en.wikipedia.org/wiki/JavaServer_Pages#Compiler

  

JavaServer Pages编译器是一个解析JSP的程序   将它们转换为可执行的Java Servlet。这种类型的程序   通常嵌入到应用程序服务器中并自动运行   第一次访问JSP时,也可以预编译页面   为了更好的性能,或编译为构建过程的一部分   测试错误。

如果您愿意,可以尝试预编译所有内容,看看它是否更好:

http://www.avajava.com/tutorials/lessons/how-do-i-precompile-my-jsps.html