Что Джерси не нравится в моем сессионном бине без состояния? - PullRequest
2 голосов
/ 30 октября 2010

Это мой SLSB:

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

Интерфейс:

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

Это то, что я получаю в журнале сервера Glassfish, когда пытаюсь открыть 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)
[...]

О чем это? Мне удалось найти тему об этом на nabble.com , но она не имеет решения ..

Ответы [ 3 ]

2 голосов
/ 13 марта 2011

Смешивание EJB / JAX-RS с интерфейсом и реализацией, у меня тоже были эти ошибки:

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

Не удалось с Glassfish V3 и 3.1, но он хорошо работает с tomcat 7 / jersey 1.5

Я отправляю ошибку с тестовым примером: http://java.net/jira/browse/GLASSFISH-16199

0 голосов
/ 09 ноября 2010

Проблема в том, что Glassfish (в его установке по умолчанию) не поддерживает EJB 3.1.У вас есть для обновления , чтобы получить такую ​​поддержку.

0 голосов
/ 30 октября 2010

У меня была похожая проблема;оказалось, что это была ошибка конфигурации в web.xml.

Обязательно используйте что-то вроде:

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

Надеюсь, это помогло

...