我收到异常com.sai.peps.ejb.frequentexceeding.FrequentExceedingBean无法转换为无法转换为javax.ws.rs.core.Application

我正在使用EJB 3.0和jboss 5.1&resteasy

请建议我,我的错误在哪里。

  <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>


编辑:

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;
    }
}


我已添加此代码。。仍然无法正常工作

最佳答案

如果您的类com.sai.peps.ejb.frequentexceeding.FrequentExceedingBean应该是配置的Aplication类,则它必须扩展javax.ws.rs.core.Application,因为servlet容器将实例化此类的对象,然后将其强制转换为javax.ws.rs.core.Application以便能够调用它的getClasses()getSingletons()方法。

更新资料

Alas JBoss 5.1尚未安装Servlet 3.0。因此,如果没有web.xml,就无法对其进行混淆。

请检查接受的答案of this question中web.xml文件中所需的条目。关于类名的位置,配置与您的不同。我本人已经很长时间没有使用过web.xml配置了,所以我在那里不太坚定。

10-06 13:44
查看更多