2010-11-09 8 views
16

JAX-RS ile uğraştım ve JSON üreten REST servislerini arayan bir uygulama yaptım. Jersey'i denedim ve her şey yolunda gitti, ama benim uygulama JDK5 ile inşa edilmesi gerektiğinden RESTEasy'a geçmek zorunda kaldım. Böyle bir şey benim web.xml değiştirdi: RESTEasy - @Path tam bir yol mu gerektiriyor?

<web-app> 
<context-param> 
    <param-name>resteasy.scan</param-name> 
    <param-value>true</param-value> 
</context-param> 

<listener> 
    <listener-class> 
    org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap 
    </listener-class> 
</listener> 

<servlet> 
    <servlet-name>RESTEasy</servlet-name> 
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>RESTEasy</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
<!-- ... --> 
</web-app> 

yüzden her URL RESTEasy tarafından ele alınması/geri kalanı ile başlayan bekliyoruz. şöyle Benim hizmetler şunlardır: Bu Jersey kullanarak iyi çalıştı

@Path("/services") 
public class MyRESTServices { 

    @GET 
    @Path("service1") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Object service1(Blah blah) { 

    } 
} 

, http://localhost/MyContext/rest/services/service1 benim Service1() yöntemine bağlandı. Tam yolun/dinlenme/hizmet/Service1: http://localhost/MyContext/rest/services/service1

Hangi anlamına gelir - göreli için kaynağı bulunamadı

HTTP Durum 404: Ben RESTEasy için değiştirdiğinizde, olsa da, bir 404 vardı RESTEasy isteği ele aldı ancak bu URL'ye bağlı herhangi bir hizmet bulamadı.

Sınıfımda, @Path("/services") - @Path("/rest/services") arasında değişiklik yapıldı. Bu garip davranışa neden sahip olduğum hakkında bir fikrin var mı? G/dinlenme önek dahil sadece göreli yolları, Mentionned okumak Bütün öğreticiler/docs ...

+0

RESTEasy'yi dahili olarak nasıl yapılandırıyorsunuz? CXF ile, Spring yapılandırma dosyasındaki '/ rest' parçasının kaldırılmasını yapılandırmak zorundayım. –

+0

Web.xml'de görebileceğiniz şeyleri başka bir şekilde yapılandırmıyorum (ek açıklamaları tara). Kaldırma işleminin yapılıp yapılamayacağını göreceğim. –

+2

Utanç ver, bu benim dokümanlardaki önümdeydi: "Resteasy servlet sunucunuzun maplet eşlemesi başka bir URL modeline sahipse, resteasy.servlet.mapping.prefix değişkeni ayarlanmalıdır./* " –

cevap

25

Çözüm: web.xml''deki aşağıdakileri ekleyin

<context-param> 
    <param-name>resteasy.servlet.mapping.prefix</param-name> 
    <param-value>/rest</param-value> 
</context-param> 
/dinlenme başlangıcıdır

senin <url-pattern>/rest/*</url-pattern>

(Kaynak: http://docs.jboss.org/resteasy/docs/2.0.0.GA/userguide/html/Installation_Configuration.html#d0e72) JBoss üzerinde

+0

Teşekkürler. "Nerede ..." cümlesi beni dize getirdi. Param-değer elemanında/rest/* kullanıyordum. – bmauter

+0

@Nebelmann URL'imi "http: // localhost: 8080/MyContent/rest/services/service1" olarak kullanmak istiyorum "http: // localhost: 8080/MyContent/services/service1" 'yapmak istemiyorum url desenimde dinleniyorum. Bunu nasıl tanımlayacağımı bana yardım edebilir misin? – 09Q71AO534

İlgili konular