2016-04-01 30 views
0

JBoss AS 7.1.1-Final'den Wildfly 9.0.1-Final'e yükselttikten sonra, bu özel durumu anladım. servletime erişmeyi dene. Aslında Web hizmetleri için Resteasy kullanıyoruz ve bir GWT web sayfasını yönetmek için bir sunucu, JBoss AS 7.1.1-Final ile her şey gayet iyi çalışıyordu, ancak yükseltme işleminin beklendiği gibi çalışmadığından sonra, bir parça snippet'i bulacaksınız. benim web.xml dosya ve jboss-web.xml.JBoss AS7'den WildFly 9'a geçişten sonra JAX-RS kaynağına erişemiyorum: javax.ws.rs.NotFoundException

web.xml

<servlet> 
    <servlet-name>admin</servlet-name> 
    <servlet-class>com.afp.iris.sr.sco.scom.servlet.ScomIHMServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>admin</servlet-name> 
    <url-pattern>/admin/*</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>Resteasy</servlet-name> 
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> 

    <init-param> 
     <param-name>resteasy.scan</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
      <servlet-name>Resteasy</servlet-name> 
      <url-pattern>/*</url-pattern> 
</servlet-mapping> 

jboss-web.xml

<jboss-web> 
    <context-root>/components</context-root> 
</jboss-web> 

aşağıdaki URL'yi çalıştığınızda: http://mymachine:8080/components/admin aşağıdaki istisna olsun

failed to execute: javax.ws.rs.NotFoundException: Could not find resource for full path: http://mymachine:8080/components/admin 

# DÜZENLEME #

Ve bu benim dinlenme hizmetleri

@Stateless(name = "myServices") 
@Path("/") 
public class myServices { 

    @POST 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    @Produces(MediaType.APPLICATION_XML) 
    public Response myFuntion(@Context final HttpServletRequest request) { 
     return secondFunction(request, null); 
    } 
} 

uygulamak yoludur ve aynı resteasy kaynaklar için de geçerli, bu konunun kaynağı ne olabilir, tüm önerilerinizi bekliyoruz!

+0

nasıl REST hizmetleri uyguladıklarını? Sorunuzu kod ile günceller misiniz? – aribeiro

+0

@aribeiro, yayınımı düzenledim, böylece geri kalan uygulamayı içeriyor. – NAIT

+1

FYI - [JBoss Windup geçiş aracını] kontrol edin (https://github.com/windup/windup/wiki). –

cevap

0

web.xml dosyasında, dosyanız WildFly'nin RESTeasy önyükleme sınıfı eksik.

Ayrıca init-param olarak sizin servlet adresinin resteasy.scan mülkü taşımak ve bir context-param olarak yerleştirin.

Aşağıda yapılması gereken değişiklikler şunlardır:

<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>/*</url-pattern> 
</servlet-mapping> 

Belki yerine servlet eşleştirmeleri kullanmanın Servlet 3.0 Annotations kullanmayı deneyebilirsiniz. Bir çağırma Örnek olarak

, yapabileceğin şu:

public class Main { 

    public static void main(String[] args) throws Exception { 
     try { 
      HttpClient client = HttpClientBuilder.create().build(); 

      HttpPost request = new HttpPost("http://localhost:8080/components"); 

      request.setHeader("Accept", MediaType.APPLICATION_XML); 
      request.setHeader("Content-type", MediaType.MULTIPART_FORM_DATA); 

      HttpResponse response = client.execute(request); 

      if (response.getStatusLine().getStatusCode() != 200) { 
       throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Cevabınız @aribeiro için teşekkürler, endişelendiğim sürece resteasy.servlet.mapping.prefix'in gerekli olmadığını düşünüyorum. Resteasy sunucu-haritalaması için url-tipi/* değilse ve tarama seçeneği eklediğimde bir bağlam param olarak bir websitemde zaten var ama dinleyici çuval için tüm dosyayı göndermek istemedim, dinleyici için bir istisna olsun. – NAIT

+0

Haklısınız, url-pattern '/ * 'ise' resteasy.servlet.mapping.prefix' gerekli değildir. Aldığın istisna ne? – aribeiro