首次连接Glassfish v3速度缓慢

4

在尝试从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();

}

我需要在环境中做出哪些改变?


1
我以前没有使用过Glassfish,但这只是标准的Java虚拟机冷启动吗? - Syntax
服务器正在运行。其他时间我都可以即时获取数据。 - Dmitry
2个回答

0
尝试从swing应用程序连接到glassfish v3时,第一次非常缓慢。这可能是由于应用服务器服务的懒加载(EJB容器、连接池等)所致。需要4-10秒钟。后续调用会怎样?

后续调用为30毫秒。 - Dmitry
我该如何关闭延迟初始化? - Stan

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接