2010-02-01 6 views
2

GWT devmode 내에서 JNDI 조회를 수행하려고합니다.GWT 개발 모드에서 glassfish v3으로 EJB JNDI 조회

내가 찾고자하는 EJB를 실행하는 로컬 glassfishv3가 있습니다. 글래스 피시에 GWT-Webapp를 배포하면 모든 것이 예상대로 작동합니다. 하지만 DEVMODE에서 나는이 예외를 얻을에서 EJB를 조회하려고하면 :

javax.naming.NamingException: Lookup failed for 'myBean' in SerialContext [Root exception is javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext [Root exception is java.lang.NullPointerException]] ... Caused by: javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext [Root exception is java.lang.NullPointerException] 
     at com.sun.enterprise.naming.impl.SerialContext.getProvider (SerialContext.java:276) 
     at com.sun.enterprise.naming.impl.SerialContext.lookup (SerialContext.java:430) 
     ... 22 more Caused by: java.lang.NullPointerException 
     at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider (SerialContext.java:297) 
     at com.sun.enterprise.naming.impl.SerialContext.getProvider (SerialContext.java:271) 
     ... 23 more 

그것은 포함 된 부두가 클래스 경로의 클래스 "SerialContextProvider"를 찾을 수없는 것 같다.

글래스 피쉬 v3을 eclipse의 타겟 런타임에 추가하는 것 이외에도 classpath에 gf-client.jar 및 glassfish-naming.jar를 추가하려고했지만 아무 소용이 없었습니다.

간단한 EJB 프로젝트와 조회를 수행하는 GWT 프로젝트가 포함 된 작은 샘플 (여기에는 http://satansoft.de/jnditest/jnditest.tgz)이 함께 있습니다. 아카이브에는 클래스 경로에서 gf-client.jar를 실행할 때 완벽하게 작동하는 작은 CLI 클라이언트도 포함되어 있습니다.

나는 또한이 질문을 공식 gwt 메일 링리스트에 요청했지만 아무도 저를 도울 수 없었다.

So : GWT devmode에서 glassfish v3으로 JNDI 조회를 수행 할 수있는 사람이 있습니까?

+1

이 설명서는 유용 할 수 있습니다. http://docs.sun.com/app/docs/doc/820-7695/beanv?l=en&a=view. Jetty 서버가 원격 GF의 Bean에 액세스하는 데 필요한 정교한 구성이있는 것처럼 보입니다. 가장 큰 문제는 서버를 건너 뛰거나 서버가 아닌 GWT 앱을 구성했을 가능성이 있습니다. – vkraemer

답변

1

Glassfish 모듈 디렉토리의 모든 jars를 Eclipse GWT 프로젝트의 war/WEB-INF/lib 디렉토리에 추가하십시오.

1

나는 그것을 확인하지 않았다 그러나 나는 (그에 대한 자세한 내용은 GlassFish EJB FAQ 또는 this previous answer 참조) 부두가 gf-client.jar의 매니페스트에서 참조되는 모든 항아리를 데리러 모르겠어요. 따라서 독립 실행 형 클라이언트를 사용할 때이 JAR이 잘 작동한다고 확신하지만 (필자가 테스트했기 때문에) 임베디드 Jetty를 사용하지 않았습니다.

그래서 수동으로 다음 JAR 파일을 추가하려고하십시오 glassfish-naming.jar, internal-api.jar, javax.ejb.jar, hk2-core.jar, auto-depends.jar, glassfish-api.jar을.

+0

아니,이 중 하나를 작동하지 않았다 - 나는 같은 오류가 발생합니다. glassfish/modules 폴더에 모든 JAR을 추가하려고 시도 했는데도 조회가 실패했습니다. – nsn

0

설치가 잘 모르겠습니다. Glassfish에서 실행하거나 임베디드 부두에서 실행하십시오. Jetty에서 실행중인 경우 잘못된 서버에서 실행 중이므로 작동하지 않습니다.

저는 GWT와 함께 세션 빈과 다른 J2EE 기술을 사용하고 있습니다. 매우 잘 작동합니다.

해야 할 일은 부두 서버를 실행하지 않는 것입니다. -noserver를 사용하여 dev 모드를 시작하고 Glassfish에서 실행합니다. 이것을 올바르게 설정하면 DevMode를 사용할 수 있으며 glassfish에서는 서버 코드가 정상적으로 실행됩니다. 글래스 피쉬 서버가 업그레이드되어 있어야하므로 배포가 좀 더 어렵습니다.

+0

SessionBeans 자체가 Glassfish에서 실행되며 Eclipse를 사용하여 개발할 때 GWT-Eclipse 플러그인을 사용합니다. 따라서 GWT- 응용 프로그램 자체가 임베디드 부두에서 실행 중입니다.glassfish에서 응용 프로그램 자체를 실행하고 서버없이 devmode를 사용하는 것이 좋습니다 ...하지만 소스 코드를 변경할 때마다 webapp를 다시 배포해야합니까? – nsn

+0

자, -noserver를 사용하여 devmode를 설정할 수있었습니다. Webapp는 이제 glassfish 서버에서 실행되며 여전히 devmode에서 디버깅 할 수 있습니다. 하지만 이제는 소스 코드를 변경할 때마다 앱을 다시 배포해야합니다. 개발주기가 길어짐에 따라 거의 견딜 수 없습니다. 재밌는 점은이 방법을 사용하면 종속성 주입을 사용하여 EJB를 얻을 수 있기 때문에 JNDI 조회가 쓸모 없게된다는 것입니다.;) – nsn

+1

예, 맞습니다. 다시 배포해야합니다. 하지만, hotdeployment를 사용한다면 많이 알지 못합니다. UI 변경 사항의 경우 재배포 할 필요가 없습니다. 부트 스트랩 js 파일을 사용할 수 있도록 한 번 빌드하면됩니다. –

관련 문제