2017-04-26 1 views
1

예외가 발생합니다. com.sai.peps.ejb.frequentexceeding.FrequentExceedingBean은 javax.ws.rs로 캐스팅 될 수 없습니다. core.Application은 resteasy 및 EJB 3.0의 javax.ws.rs.core.Application으로 캐스팅 될 수 없습니다.

것은 내가 EJB 3.0을 사용하고

나에게 제안하십시오 5.1 & RESTEasy가에게 JBOSS하고, 어디에 내 실수입니다.

<context-param> 
     <param-name>resteasy.scan</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>resteasy.resources</param-name> 
     <param-value>com.sai.peps.ejb.frequentexceeding.MyRestApplication</param-value> 
    </context-param> 
    <context-param> 
     <param-name>resteasy.servlet.mapping.prefix</param-name> 
     <param-value>/rest/</param-value> 
    </context-param> 

<servlet> 
     <servlet-name>resteasy-servlet</servlet-name> 
     <servlet-class> 
      org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
     </servlet-class> 
     <init-param> 
      <param-name>javax.ws.rs.Application</param-name> 
      <param-value>com.sai.peps.ejb.frequentexceeding.MyRestApplication</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>resteasy-servlet</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

편집 : 내가 그것을 구성 될 때 클래스 com.sai.peps.ejb.frequentexceeding.FrequentExceedingBean가 Aplication 클래스해야하는 경우 여전히

+0

는'com.sai.peps.ejb.frequentexceeding.FrequentExceedingBean'extend'javax.ws.rs.core.Application' 수행하는 세 가지 방법 중 하나를 선택? –

+0

nope sir @ P.J.Meisch –

답변

1

를 작동하지 않는 코드 ...를 추가 한

package com.sai.peps.ejb.frequentexceeding; 

import java.util.HashSet; 
import java.util.Set; 

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 
@ApplicationPath("/rest") 
public class MyRestApplication extends Application { 
    private Set<Object> resourceObjects = new HashSet<Object>(); 
    private Set<Class<?>> resourceClasses = new HashSet<Class<?>>(); 

    public MyRestApplication() { 
     resourceClasses.add(FrequentExceedingBean.class); 
    } 
    @Override 
    public Set<Class<?>> getClasses() { 
     return resourceClasses; 
    } 
    @Override 
    public Set<Object> getSingletons() { 
     return resourceObjects; 
    } 
} 

, 그것은 때문에 javax.ws.rs.core.Application를 확장해야합니다 서블릿 컨테이너는이 클래스의 객체를 인스턴스화 한 다음 및 getSingletons() 메서드로 호출 할 수 있도록 javax.ws.rs.core.Application으로 변환합니다. 당신은 web.xml없이 confugre 할 수 있도록

업데이트

아아 제이 보스 5.1, 아직 서블릿 3.0. 않았습니다.

허용되는 답변 of this question에서 web.xml 파일에 필요한 항목을 확인하십시오. 클래스 이름의 위치와 관련하여 구성이 다릅니다. 나 자신은 꽤 이상한 시간 동안 web.xml 설정을 사용하지 않았기 때문에 거기에 그렇게 확고하지 않다.

+0

감사합니다. 잘 설명 됨 –

+0

아직도 작동하지 않습니다. –

+0

무엇이 오류 메시지입니까? –

0

귀하의 web.xml이 약간 엉망이 보입니다.

질문 : 왜 응용 프로그램 클래스에 대한 자신의 구현을 제공해야합니까?

당신이

resteasy.scan = true

당신이 (당신의 자원을 게시하여 자원 및 공급자 클래스에 적절한 주석에 대한 exept) 아무것도 필요하지 않습니다이있는 경우.

당신이 resteasy.scan 매개 변수를 생략하고 명시 적으로 자원의 목록을 제공 할 수

자원의 목록을 평가

resteasy.resources

는 공개해야하는 경우 (이 경우 당신은 com.sai.peps.ejb.frequentexceeding.MyRestApplication 넣어 틀렸어. 아마 이라고 입력해야한다)

web.xml에서 구성을 이동하기 위해 Application 클래스를 재정의 할 수 있으며 사용자 지정 논리를 사용하여 게시 할 리소스 목록을 여전히 엄격하게 제어 할 수 있습니다. 이것이 당신의 필요라고 확신합니까? 이 경우 위의 구성을 건너 뛰어야합니다.

어떤 경우

관련 문제