2016-07-19 13 views
1

원격 인터페이스 만있는 EJB 3.1 세션 bean에서 @Path와 같은 JAX-RS 주석을 사용할 수 있습니까?EJB 3.1 세션 Bean의 JAX-RS

이 작동 :

@Path("/service") 
@Stateless 
public class ServiceOne { 
    @POST 
    @Path("/foo") 
    public Response foo() { 
     return Response.ok().build(); 
    } 
} 

을하지만, 내가 원격 인터페이스를 추가 할 경우 ...

@Remote 
public interface ServiceOneRemote { 
    Response foo(); 
} 

@Path("/service") 
@Stateless 
public class ServiceOne implements ServiceOneRemote { 
    @POST 
    @Path("/foo") 
    public Response foo() { 
     return Response.ok().build(); 
    } 
} 

... 난 Implementing RESTful views of an EJB with local interfaces 같은 기사에서을 가지는 NotSerializableException

java.io.NotSerializableException: org.jboss.resteasy.core.ServerResponse 
    org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253) 
    org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:128) 
    org.jboss.as.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:295) 
    org.jboss.as.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:286) 
    org.jboss.as.ejb3.remote.LocalEjbReceiver.processInvocation(LocalEjbReceiver.java:258) 
    org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:184) 
    org.jboss.ejb.client.EJBObjectInterceptor.handleInvocation(EJBObjectInterceptor.java:58) 
    org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:186) 
    org.jboss.ejb.client.EJBHomeInterceptor.handleInvocation(EJBHomeInterceptor.java:83) 
    org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:186) 
    org.jboss.ejb.client.TransactionInterceptor.handleInvocation(TransactionInterceptor.java:42) 
    org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:186) 
    org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:125) 
    org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:186) 
    org.jboss.ejb.client.EJBInvocationHandler.sendRequestWithPossibleRetries(EJBInvocationHandler.java:255) 
    org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:200) 
    org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:183) 
    org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:146) 
    com.sun.proxy.$Proxy88.foo(Unknown Source) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:483) 
    org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:168) 
    org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269) 
    org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227) 
    org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216) 
    org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:541) 
    org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523) 
    org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125) 
    org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) 
    org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) 
    org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 

를 얻을 수 JAX-RS는 로컬 인터페이스가있는 세션빈에서만 작동한다는 인상을받습니다. 그러나 나는 불가능하다고 명시 적으로 언급 한 어떤 자원도 찾을 수 없었다.

내가 잘못 했나요? 아니면 그냥 가능하지 않나요?

Btw : JBoss EAP 6.4 응용 프로그램 서버를 실행하고 있습니다.

답변

1

불가능합니다.

JAX-RS 주석이 EJB의 로컬 인터페이스에서 직접 노 인터페이스 EJB의 방법에 방법에 적용 할 수있는 다음과 같은 사양 JSR-339 (RESTful 웹 서비스에 대한의 JavaTM의 API)이이 적혀있다.