@PathParam到EJB内的Resteasy中的Object

时间:2014-07-11 11:14:21

标签: resteasy ejb-3.1

早上好,伙计们,

我在EJB中实现引用EntityBean的@PathParam时遇到问题 我使用没有EJB注释的类进行了测试并且它有效,但是当我将此方法放入EJB中时出现错误。 在作为核心RESTEasy的ResourceLocator类中执行方法[method.invoke(locator,args)]时,他迷路了。 以下测试数据和错误。 谢谢你的帮助。

工作!

@Path("/continent")
public class ContinentWSTest {

    @Override
    public Response listContinent(@PathParam("continentPK") ContinentPK continentPK) {
        System.out.println("Ok!");
        return Response.ok(continentBean).build();
    }

}

不要工作!

public interface ContinentWS {

    @GET
    @Path("/{continentPK}")
    Response listContinent(@PathParam("continentPK") ContinentPK continentPK);

}

@Stateless
@Path("/continent")
public class ContinentWSImpl implements ContinentWS {

    @Override
    public Response listContinent(@PathParam("continentPK") ContinentPK continentPK) {
        ContinentBean continentBean = continentServiceLocal.findByPK(continentPK);
        return Response.ok(continentBean).build();
    }

}

日志' S

07:42:13,287 WARN [org.jboss.resteasy.core.SynchronousDispatcher](http-localhost-127.0.0.1-8080-1)执行GET / continent / 1时出现未知异常:java.lang.IllegalArgumentException:object不是声明类的实例     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[rt.jar:1.7.0_60]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[rt.jar:1.7.0_60]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[rt.jar:1.7.0_60]     在java.lang.reflect.Method.invoke(Method.java:606)[rt.jar:1.7.0_60]     在org.jboss.resteasy.core.ResourceLocator.createResource(ResourceLocator.java:64)[resteasy-jaxrs-2.3.2.Final.jar:]     在org.jboss.resteasy.core.ResourceLocator.createResource(ResourceLocator.java:53)[resteasy-jaxrs-2.3.2.Final.jar:]     在org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:90)[resteasy-jaxrs-2.3.2.Final.jar:]     在org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:525)[resteasy-jaxrs-2.3.2.Final.jar:]     在org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:502)[resteasy-jaxrs-2.3.2.Final.jar:]     在org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119)[resteasy-jaxrs-2.3.2.Final.jar:]     在org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)[resteasy-jaxrs-2.3.2.Final.jar:]     在org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)[resteasy-jaxrs-2.3.2.Final.jar:]     在org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)[resteasy-jaxrs-2.3.2.Final.jar:]     在javax.servlet.http.HttpServlet.service(HttpServlet.java:847)[jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]     在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)[jbossweb-7.0.13.Final.jar:]     在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)[jbossweb-7.0.13.Final.jar:]     在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)[jbossweb-7.0.13.Final.jar:]     在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)[jbossweb-7.0.13.Final.jar:]     在org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)[jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]     在org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)[jboss-as-web-7.1.1.Final.jar:7.1.1.Final]     在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)[jbossweb-7.0.13.Final.jar:]     在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)[jbossweb-7.0.13.Final.jar:]     在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)[jbossweb-7.0.13.Final.jar:]     在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)[jbossweb-7.0.13.Final.jar:]     在org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)[jbossweb-7.0.13.Final.jar:]     在org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:671)[jbossweb-7.0.13.Final.jar:]     在org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:930)[jbossweb-7.0.13.Final.jar:]     在java.lang.Thread.run(Thread.java:745)[rt.jar:1.7.0_60]

1 个答案:

答案 0 :(得分:0)

解决了这个问题。 发生此错误是因为@Path需要保留在EJB接口中,并且接口需要定义为@ Local或@ Remote