2010-10-29 6 views
2

Ceci est mon SLSB:Qu'est-ce que Jersey n'aime pas dans mon bean Session sans état?

@Stateless(name = "FinderEJB") 
@Path("/") 
public class Finder implements FinderLocal { 
    @Path("/simple") 
    @GET 
    public String simple() { 
    return "works"; 
    } 
} 

L'interface est:

@Local 
public interface FinderLocal { 
    public String simple(); 
} 

C'est ce que je veux dans le journal du serveur Glassfish quand je suis en train d'ouvrir l'URL /simple:

java.lang.IllegalArgumentException: object is not an instance of declaring class 
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.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:156) 
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67) 
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:208) 
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:115) 
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:75) 
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:115) 
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:67) 
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:775) 
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:740) 
[...] 

De quoi s'agit-il? J'ai réussi à trouver un sujet à ce sujet at nabble.com, mais il n'a pas de solution ..

Répondre

0

Le problème est que Glassfish (dans son installation par défaut) ne prend pas en charge 3.1 EJB. Vous avez to upgrade it afin d'obtenir un tel soutien.

0

J'ai eu un problème similaire; il s'est avéré que c'était une erreur de configuration dans web.xml.

Assurez-vous d'utiliser quelque chose comme:

<servlet>
<servlet-name>Jersey Servlet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>my.company.product.rs</param-value>
</init-param>

<load-on-startup>1</load-on-startup>
</servlet>

L'espoir a aidé

+0

Bien sûr, mon 'web.xml' est correctement configuré. Sans les annotations SLSB, la classe fonctionne bien et est exposée dans JAX-RS. – yegor256

2

mélange EJB/JAX-RS, avec une interface et une implémentation, j'ai eu ces erreurs aussi:

java.lang.IllegalArgumentException: object is not an instance of declaring class 

Il a échoué avec GlassFish v3 et 3.1, mais il fonctionne bien avec tomcat 7/jersey 1,5

Je soumets un bug avec le cas de test: http://java.net/jira/browse/GLASSFISH-16199

Questions connexes