2010-02-27 8 views
3

J'utilise le client Jersey dans un bean de session EJB 3 sans état. Je peux déployer le projet EJB sur Weblogic 11g. Mais lorsque je tente de regarder le grain d'un JSP, je reçois l'erreur suivanteUtilisation du client Jersey dans EJB 3 bean session sans état sur Weblogic

javax.ejb.EJBException: EJB Exception: ; nested exception is: 
java.lang.NoClassDefFoundError: com/sun/jersey/api/client/Client; nested exception is: java.rmi.RemoteException: EJB Exception: ; nested exception is: 
java.lang.NoClassDefFoundError: com/sun/jersey/api/client/Client 
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.unwrapRemoteException(RemoteBusinessIntfProxy.java:112) 
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:91) 
at $Proxy66.sayHelloFromServiceBean(Unknown Source) 
at jsp_servlet.__yelpin._jspService(__yelpin.java:92) 
at weblogic.servlet.jsp.JspBase.service(JspBase.java:34) 
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175) 
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3594) 
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) 
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2202) 
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2108) 
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1432) 
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 
Caused by: java.rmi.RemoteException: EJB Exception: ; nested exception is: 
java.lang.NoClassDefFoundError: com/sun/jersey/api/client/Client 
at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:205) 
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:345) 
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259) 
at com.yelpin.ABCD_xruy6c_ABCDRemoteImpl_1032_WLStub.sayHelloFromServiceBean(Unknown Source) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:73) 
... 15 more 
Caused by: java.lang.NoClassDefFoundError: com/sun/jersey/api/client/Client 
at com.yelpin.ABCD.sayHelloFromServiceBean(ABCD.java:26) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) 
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) 
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) 
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) 
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) 
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37) 
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:55) 
at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50) 
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) 
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) 
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
at $Proxy67.sayHelloFromServiceBean(Unknown Source) 
at com.yelpin.ABCD_xruy6c_ABCDRemoteImpl.sayHelloFromServiceBean(ABCD_xruy6c_ABCDRemoteImpl.java:61) 
at com.yelpin.ABCD_xruy6c_ABCDRemoteImpl_WLSkel.invoke(Unknown Source) 
at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:174) 
... 23 more 

Je suis nouveau à EJB3, Jersey et Weblogic. Ce que je comprends, c'est que le bean session sans état est incapable de trouver la classe Jersey Client. Est-ce que quelqu'un peut m'aider avec ça ?

J'ai deux projets dans OEPE (Oracle Enterprise Pack pour Eclipse). L'un est un projet EJB 3.0 qui contient le bean de session sans état. L'autre est un projet web dynamique qui contient le JSP à partir duquel je fais une recherche JNDI pour obtenir le bean de session sans état. J'utilise la classe Jersey Client dans l'une des méthodes du bean session sans état. Cette méthode est appelée à partir de la JSP.

Lorsque je vérifie les déploiements sur le serveur à l'aide de la console Administrateur, il existe deux déploiements. L'un est un fichier EAR automatique généré par OEPE. Cet EAR correspond au projet web dynamique. L'autre déploiement est de type EJB.

J'ai également essayé d'ajouter les fichiers jersey jar au dossier lib sous le serveur et j'ai redémarré le serveur. Mais encore, je reçois la même erreur.

Répondre

1

En effet, le NoClassDefFoundError signifie que la définition de la classe Jersey Client ne peut pas être trouvée et chargée lors de l'exécution (elle était cependant là au moment de la compilation). C'est donc très probablement un problème de chemin de classe ou d'emballage.

Mettez votre jarre Jersey dans le répertoire APP-INF/lib de l'EAR et réessayez (si cela ne fonctionne pas, veuillez mettre à jour votre question avec la structure de votre EAR). Pour plus de détails, voir http://download.oracle.com/docs/cd/E12839_01/web.1111/e13706/libraries.htm#sthref135 et http://download.oracle.com/docs/cd/E12839_01/web.1111/e13706/classloading.htm.

Mise à jour: JARs devrait aller EarContent/APP-INF/lib qui aurait dû être automatically created mais je ne suis pas en utilisant OEPE donc je ne peux pas confirmer. Notez que selon ce very recent thread, il pourrait y avoir un bogue dans l'éditeur OEPE qui est sous enquête (au moins sous Linux).

+0

merci pour la réponse. J'ai mis à jour ma question avec la structure. –

+0

@rboorgapally Déployez-vous votre application en tant que fichier EAR? –

+0

L'EAR est générée automatiquement par OEPE –

Questions connexes