java - 无法在 Resteasy 和 EJB 3.0 中转换为 javax.ws.rs.core.Application

标签 java web-services jakarta-ee jboss resteasy

我收到异常 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 容器将实例化此类的对象,然后将 ist 转换为 javax.ws.rs.core.Application 以便能够调用它的 getClasses()getSingletons() 方法。

更新

唉,JBoss 5.1 还没有 Servlet 3.0,所以如果没有 web.xml 就无法配置它。

请检查已接受的答案of this question获取 web.xml 文件中所需的条目。该配置与您的配置在类名的位置方面有所不同。我自己已经有一段时间没有使用web.xml配置了,所以我对此不太坚定。

关于java - 无法在 Resteasy 和 EJB 3.0 中转换为 javax.ws.rs.core.Application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43626418/

相关文章:

java - 屏幕中心坐标错误

php - SOAP 错误 fatal error : Uncaught SoapFault exception: [HTTP] Could not connect to host

jakarta-ee - JPA 动态持久化单元名称

design-patterns - 异常处理策略——重用异常代码

java - IntelliJ 和方面

java - 一个服务、一个线程、一个 Activity 和一个静态 ArrayList

java - 如何从数据源列表实例化数据源?

java - Google Admob 关于空对象引用

javascript - 二进制 XHR 结果到文件 blob - Jquery

ios - AFNetworking 2.0 POST 问题 |替换已弃用的 multipartFormRequestWithMethod :path:parameters