2014-03-04 42 views
0

我想部署使用的球衣和GlassFish 4.我收到以下異常顯示RESTful服務的狀態,一個簡單的應用:澤西2.0 - Glassfish的4塑像例外

org.glassfish.jersey.internal.ServiceConfigurationError: 
org.glassfish.jersey.internal.spi.AutoDiscoverable: The class 
org.glassfish.jersey.server.internal.monitoring.MonitoringAutodiscoverable implementing 
provider interface org.glassfish.jersey.internal.spi.AutoDiscoverable could not be 
instantiated: Cannot cast 
org.glassfish.jersey.server.internal.monitoring.MonitoringAutodiscoverable to 
org.glassfish.jersey.internal.spi.AutoDiscoverable 

我的web.xml看起來是這樣的

<web-app> 
<servlet> 
    <servlet-name>Servlet</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Servlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
</web-app> 

我的服務是這樣的:

@Path(MyServices.SERVICE_URL) 
public class MyServices 
{ 
    @GET 
    @Produces("text/html") 
    public String getStatus() 
    { 
     return "My service is running."; 
    } 
} 

有誰知道我在這裏做錯了什麼?

編輯 我加入這個類來我的戰爭項目:

@ApplicationPath("/*") 
public class MyApplication extends ResourceConfig 
{ 
    public MyApplication() 
    { 
     packages("com.java.services"); 
    } 
} 

,我仍然得到同樣的異常:

javax.servlet.ServletException: Servlet.init() for servlet com.java.services.MyApplication threw exception 

回答

1

GlassFish的4.0是一個的Servlet容器3.X,所以你必須改變deployment model

<!-- Servlet declaration can be omitted in which case 
    it would be automatically added by Jersey --> 
<servlet> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
</servlet> 

<servlet-mapping> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <url-pattern>/resources/*</url-pattern> 
</servlet-mapping> 

但是,即使這的web.xml設置不再是必要的,只是實現Application子與@ApplicationPath註解,一切都將如預期

@ApplicationPath("resources") 
public class MyApplication extends ResourceConfig { 
    public MyApplication() { 
     packages("org.foo.rest;org.bar.rest"); 
    } 
} 

結果

Result

+0

安東尼,請看我上面的評論。我仍然得到同樣的例外。我嘗試了web.xml,沒有web.xml,web.xml和MyApplication等。 – user2287966

+0

嗯,我只是運行你的示例以確保(沒有web.xml,並直接擴展'Application'我沒有任何依賴我的項目球衣)。也許你擰你的類路徑或什麼? (你不需要依賴項目,如果你使用Maven運行你的應用程序,你只需要''jax.ws.rs-api'作爲'provided'。[GlassFish已經包含](https://jersey.java.net /documentation/latest/user-guide.html#servlet-app-glassfish)一切都爲你 –

+0

我注意到我使用球衣2.6,出於某種原因,它給我帶來了問題,我從classpath中刪除了這個jar,並使用了 – user2287966