2016-08-03 4 views
0

Я обновляю свое приложение до JBoss 7.1.1 и теперь буду использовать RestEasy. У меня возникают проблемы с работой RestEasy. Я получаю сообщение об ошибке HTTP Status 404 - Не удалось найти ресурс для родственника. Я считаю, что это означает, что он не может найти правильную конечную точку. Мое подозрение в том, что есть некоторые проблемы сканирования и регистрации услуг. Я мог ошибаться. Примечание: Я не использую MavenJBoss 7 RestEasy ... услуги не регистрируются?

Вот часть моей web.xml, которая связана с Resteasy:

<context-param> 
    <param-name>resteasy.servlet.mapping.prefix</param-name> 
    <param-value>/rest</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> 

Вот образец ресурса я использую:

import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 

@Path("/hello") 
public class HelloResource { 

@POST 
@Produces("text/plain") 
public String helloResource() { 
    return "Hello!"; 
} 
} 

url Я пробовал: http://localhost:8080/[project-name]/rest/hello

Я думаю, что это все, что я использую для вызова. Если для ответа на мой вопрос требуется дополнительная информация, не стесняйтесь спрашивать. Заранее спасибо за вашу помощь!

P.S. - Как файлы должны быть структурированы в WAR?

[Обновлено web.xml]

<context-param> 
    <param-name>resteasy.servlet.mapping.prefix</param-name> 
    <param-value>/rest</param-value> 
</context-param> 

    <context-param> 
    <param-name>resteasy.resources</param-name> 
    <param-value>com.elderscan.test.RestEasyExample</param-value> 
</context-param> 

<servlet> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <servlet-class> 
     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    </servlet-class> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>com.elderscan.test.MyApplication</param-value> 
    </init-param> 
</servlet> 


<servlet-mapping> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

Так что это позволяет мне успешно сделать вызов RestEasyExample, но я не могу делать звонки другим других остальных услуг, которые я, очевидно, нужно сделать. Кроме того, это решение добавления всех моих сервисов в xml не является идеальным, поэтому было бы предпочтительным другой вариант.

ответ

1

Кончалась решения этого. Ключ в том, чтобы включить это к тому, что я уже имел, где каждый одноплодной услуга остальное:

public class MyApplication extends Application { 
private Set<Object> singletons = new HashSet<Object>(); 

public MyApplication() { 
    singletons.add(new RestEasyExample()); 
    singletons.add(new RestEasyExample2()); 
} 

@Override 
public Set<Class<?>> getClasses() { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public Set<Object> getSingletons() { 
    return singletons; 
} 
} 
0

Я думаю, вы правы насчет вашей подозрительности .. Попробуйте добавить это к вашему web.xml

<context-param> 
    <param-name>resteasy.scan</param-name> 
    <param-value>true</param-value> 
</context-param> 
+0

Я собираюсь добавить некоторые обновления к моей должности, как я сделал некоторые изменения в web.xml, но Ранее у меня был фрагмент, который вы предоставили там, и я бы получил предупреждение о том, что resteasy.scan игнорировался (я думаю, что он не установлен в JBoss 7). Затем он не работает при развертывании. [Добавлено позже] - когда я пытаюсь это сделать на моем новом web.xml, я развертываю просто отлично, но я получаю http-статус 500, и он дает мне ошибку java.lang.RuntimeException: не удается найти публичный конструктор для класса org.jboss.resteasy.core.AsynchronousDispatche, это то, что развертывание использовалось для отказа. –