2012-04-15 5 views
3

GlassFish Opensource Edition에서 실행되는 테스트 EJB3 응용 프로그램을 만들었습니다.글래스 피쉬의 느린 "조회"시간

동일한 호스트 (클라이언트와 응용 프로그램 서버 모두 'localhost'에서 실행 중임)에서 GlassFish에 연결하고 있습니다.

InitialContext.lookup()을 사용하여 원격 (상태 저장) 객체를 가져온 다음 정상적인 Java 객체처럼 상호 작용합니다.

유일한 문제는 15초 소요이 단일 통화 인 :

FooRemoteService foors = (FooRemoteService) 
    context.lookup("java:global/FooApp/FooService!test.FooRemoteService"); 

나는 "핸드 쉐이크"와 "초기화"어떤 종류의 있어야만 이해하지만이 너무 이놈 입니다 천천히.

나머지 상호 작용 (많은 직렬화 된 객체가 교환되는 여러 번의 원격 호출)은 약 0.1 초 밖에 걸리지 않습니다!

왜 그렇게 오래 걸리는지 알 수 있습니까?

+0

처음으로 'FooRemoteService'를 인스턴스화했을 때 ... 그 끝에서 집중적으로 처리하고 있습니까? – Torious

+0

전혀 아닙니다 ... 로컬 가상 컴퓨터에서 "새로운"기능을 사용하려면 몇 밀리 초 – gd1

답변

0

나는 당신이 동일한 응용 프로그램이 다른 호스트와 네트워크 주위에 대한 EJB 스펙 검색에서 배포 한 것이 가능하다 때문에, 호스트 IP를 지정하여 초기 컨텍스트를 intanciate하는 것이 좋습니다

Properties props = new Properties(); 
props.put(Context.PROVIDER_URL, "jnp://ip:1099"); 
InitialContext ctx = new InitialContext(props); 

감사합니다 .