2015-08-14 57 views
0

我試圖在Jersey 2.19中的JBoss EAP 6.2中部署一個簡單的restful服務。Jersey 2.19 - JBoss EAP 6.2 - JBWEB000260:沒有爲Servlet指定servlet類

子類應用類:

package com.jersey.mywebapp; 
import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 
import java.util.HashSet; 
import java.util.Set; 

@ApplicationPath("resources") 
public class MyApp extends Application { 
    public Set<Class<?>> getClasses() { 
     Set<Class<?>> s = new HashSet<Class<?>>(); 
     s.add(MyResource.class); 
     return s; 
    } 
} 

RS實現類:

package com.jersey.mywebapp; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
@Path("myresource") 
public class MyResource { 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getIt() { 
     return "Got it!"; 
    } 
} 

我的部署描述符:

提示以下錯誤:在訪問資源(本地主機:8080/{context}/resources/myresource)

21:51:29,437 INFO [org.apache.catalina.core.ContainerBase.[jboss.web]. [default-host].[/rpa]] (http-/127.0.0.1:8080-1) JBWEB000264: Marking servlet com.jersey.mywebapp.MyApp as unavailable 
21:51:29,446 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/rpa].[com.jersey.mywebapp.MyApp]] (http-/127.0.0.1:8080-1) JBWEB000235: Allocate exception for servlet com. 
jersey.mywebapp.MyApp: javax.servlet.ServletException: JBWEB000260: No servlet class has been specified for servlet com.jersey.mywebapp.MyApp 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1147) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:950) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:151) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] 
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14] 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] 
    at java.lang.Thread.run(Thread.java:780) [vm.jar:1.7.0] 

根據我的理解,JBoss EAP 6.2支持Servlet 3.0,並且按照Jersey文檔(第4章應用程序部署和運行時環境),它可以按照servlet可插入性機制省略servlet-class。

請告知如何解決此問題?

注:爲了避免/從掃描JAX RS資源抑制的RESTEasy我註釋掉 - 子系​​統的xmlns = 「金塔:JBoss的:域名:JAXRS:1.0」 從standalone.xml

回答

0

除非你真的需要使用Jersey,而不是提供的JAX-RS實現,您可能需要嘗試以下操作: - 恢復RESTEasy的子系統配置 - 刪除應用程序中的web.xml servlet和servlet映射聲明。

自從你提供的javax.ws.rs.core.Application一個子類與@ApplicationPath註釋,沒有必要爲web.xml配置(按照JAX-RS 1.1規範,因爲我相信你上面mentionned。)

HTH

+0

感謝您回覆此問題..我想使用球衣,因爲我正在將運動衫中的應用程序(它使用一些非標準運動衫特定功能)遷移到JBoss EAP 6.2。此外,我試圖從web.xml中刪除servlet和servlet-class映射的建議,但它沒有奏效。 Atlast使用 org.glassfish.jersey.servlet.ServletContainer配置了servlet-class並使其工作。 – raga