我收到异常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配置了,所以我在那里不太坚定。