有了上述内容,我无法将资源类加载到JBoss
,并且它会抱怨以下错误。
错误[[/]] Servlet抛出load()异常:javax.servlet.ServletException:资源配置类biz.bsite.direct.spring.mobile.AddressbookResource不是类javax.ws.rs的超类.core.Application at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:741) at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:678) 在com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:203) 在com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374) 在com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)
我的资源类如下所示。
@Path( “地址簿”) 公共类AddressbookResource {
Web.xml看起来像:
<servlet>
<servlet-name>JerseyMobile</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>biz.bsite.direct.spring.mobile.AddressbookResource</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
有人可以帮我解决这个问题吗?试图使用包扫描但它也不能与JBoss 7一起使用。
答案 0 :(得分:2)
我认为正确的方法是使用与here解释的app server无关的JAX-RS部署模型。您只需在JAX-RS Web应用程序中扩展javax.ws.rs.core.Application即可。这是一个例子。
package com.sun.jersey.samples.helloworld.resources;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
public class MyApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(HelloWorldResource.class);
return classes;
}
}
然后,您需要将它放在您的web.xml中。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>com.sun.jersey.samples.helloworld.resources.MyApplication</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.sun.jersey.samples.helloworld.resources.MyApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
<servlet-mapping>
<servlet-name>com.sun.jersey.samples.helloworld.resources.MyApplication</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
除了部署为JAX-RS应用程序之外,还需要禁用resteasy扫描资源和提供程序。
我在Github here中整理了一个简单的Jersey JBoss EAR样本。