2016-12-28 9 views
0

Я пытаюсь развернуть приложение JAX-RS в JBoss EAP 6.2. Мой web.xml имеет следующее:развертывание приложения RESTEasy JAX-RS для JBoss - JBAS018040: Не удалось запустить контекст

<servlet> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <servlet-class> 
     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    </servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <url-pattern>/jax-rs/*</url-pattern> 
</servlet-mapping> 


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

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

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

& hellip; и я включаю следующее в качестве зависимости от развертывания:

<dependency org="org.jboss.resteasy" name="resteasy-jaxrs" rev="3.0.5.Final"/> 

& hellip; поэтому у меня есть следующий файл JAR в моей WAR:

WEB-INF/lib/resteasy-jaxrs-3.0.5.Final.jar 

Однако, когда я развертывания WAR на JBoss я получаю следующий след:

14: 32: 42,537 ОШИБКА [org.jboss.msc .service.fail] (пул потоков ServerService - 316) MSC000001: не удалось запустить службу jboss.web.deployment.default-host./search-rest: org.jboss.msc.service.StartException в сервисе jboss.web.deployment .default-host./search-rest: org.jboss.msc.service.StartException в анонимной службе: JBAS018040: не удалось запустить контекст по адресу org.jboss.as.web.deployment.WebDeploymentService $ 1.run (WebDeploymentService.java: 96) в java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) [rt.jar: 1.8.0_111] at java.util.concurrent.FutureTask.run (FutureTask.java:266) [rt.jar: 1.8.0_111] jar: 1.8.0_111] at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) [rt.jar: 1.8.0_111] at java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java : 617) [rt.jar: 1.8.0_111] на java.lang.Thread.run (Thread.java:745) [rt.jar: 1.8.0_111] на org.jboss.threads.JBossThread.run (JBossThread .java: 122)

Вызванный: org.jboss.msc.service.StartException в анонимной службы: JBAS018040: Не удалось запустить контекст на org.jboss.as.web.deployment.WebDeploymentService.doStart (Web DeploymentService.java:161) на org.jboss.as.web.deployment.WebDeploymentService.access $ 000 (WebDeploymentService.java:60) на org.jboss.as.web.deployment.WebDeploymentService $ 1.run (WebDeploymentService.java: 93) ... 6

Что происходит и как я могу отладить это?

ответ

0

ОК, так что преступник был следующий баночка:

WEB-INF/lib/resteasy-jaxrs-3.0.5.Final.jar 

После того, как я удалил эту зависимость, она работала. Это имеет смысл, поскольку RESTEasy поставляется вместе с JBoss EAP, поэтому нет необходимости размещать его в WEB-INF/lib WAR.

Кроме того, я обнаружил, что следующий элемент из моего web.xml:

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

& hellip; не обязательно. Все работает без него.

Наконец дополнительная конфигурация, которая работает удаляет элемент сканера:

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

& hellip; в этом случае, однако, необходимо предоставить javax.ws.rs.core.Подкласс применения:

import java.util.Set; 
import java.util.HashSet; 

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 

public class JaxRsApplication extends Application { 

private Set<Object> singletons = new HashSet<Object>(); 

public JaxRsApplication() { 
    singletons.add(new SearchResource()); 
} 

@Override 
public Set<Object> getSingletons() { 
    return singletons;   
} 
} 

& hellip; и зарегистрировать его с помощью сервлета RESTEasy:

<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>mjb44.searchapp.rest.JaxRsApplication</param-value> 
    </init-param> 
</servlet>