2015-12-28 3 views
0

У меня возникла эта странная ошибка при развертывании моего Джерси-сервера (без web.xml) в GlassFish 4.1.1 с использованием плагина Maven Glassfish (на самом деле я переключил свой (Maven) строить из встроенных Grizzly к GlassFish, обновление стандартных зависимостей Джерси от компилировать в комплект поставки):ArrayIndexOutOfBoundsException развертывание в GlassFish 4.1.1 без web.xml Джерси

[ОШИБКА] удаленный сбой: произошла ошибка во время развертывания: исключение при загрузке приложения: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ArrayIndexOutOfBounds Исключение: 0. Пожалуйста см server.log для более подробной информации

Развертывание было успешным, когда я не декларировал @ApplicationPath в моем ResourceConfig реализации. Но тогда я получил ошибку 404, пытаясь использовать эту услугу. Согласно документации Джерси, @ApplicationPath не требуется для развертывания web.xml (Example 4.3).

Журнал ошибок развертывания извлекается ниже:

[2015-12-28T09: 33: 40,826 + 0800] [GlassFish 4.1] [СУРОВОЙ] [] [javax.enterprise.web] [TID : _ThreadID = 123 _ThreadName = администратор-слушатель (6)] [timeMillis: 1451266420826] [levelValue: 1000] [[
WebModule [/BBQuay-Entertainment-1.0-SNAPSHOT] StandardWrapper.Throwable java.lang.ArrayIndexOutOfBoundsException: 0 на org.glassfish.jersey.server.ApplicationHandler.initialize (ApplicationHandler.java:505) по адресу org.glass fish.jersey.server.ApplicationHandler.access $ 500 (ApplicationHandler.java:182) в org.glassfish.jersey.server.ApplicationHandler $ 3.call (ApplicationHandler.java:348) на org.glassfish.jersey.server. ApplicationHandler $ 3.call (ApplicationHandler.java:345) на org.glassfish.jersey.internal.Errors.process (Errors.java:315) на org.glassfish.jersey.internal.Errors.process (Errors.java:297) при org.glassfish.jersey.internal.Errors.processWithException (Errors.java:255) на org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler.java:345) на org.glassfish.jersey. servlet.WebComponent. (WebComponent.java:390) at org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:170) на org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:362) в javax.servlet.GenericServlet.init (GenericServlet.java:244) в org.apache.catalina.core.StandardWrapper.initServlet (StandardWrapper.java:1583)

.....

ответ

1

Оказалось, что это конфигурация Maven. Поскольку я тестировал с Grizzly раньше, при переключении на GlassFish, я оставил две зависимости: jersey-weld2-se и jersey-cdi1x default Maven scope. Последнее прекрасно, но первое обеспечивает контейнер GlassFish. Исправленная следующим образом помогает решить проблему (хотя ошибка развертывания действительно не полезно ..)

<dependency> 
    <groupId>org.glassfish.jersey.ext.cdi</groupId> 
    <artifactId>jersey-weld2-se</artifactId> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>org.glassfish.jersey.ext.cdi</groupId> 
    <artifactId>jersey-cdi1x</artifactId> 
</dependency> 
0

Ниже достаточно на Glassfish 4.1.1 (без web.xml):

import javax.ws.rs.ApplicationPath; 
import org.glassfish.jersey.server.ResourceConfig; 

@ApplicationPath("rest") 
public class ApplicationConfig extends ResourceConfig { 
} 

и пример класса:

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 

@Path("info") 
public class InfoStub { 

    @GET 
    public String getInfo() { 
     return "hello sir"; 
    } 
} 

Вы можете получить доступ к его под http://localhost:8080/YOUR_PROJECT_NAME/rest/info

Убедитесь, что вы установите стандартные зависимости Джерси в вашем pom.xml для при условии.

+0

... достаточно ... [но не рекомендуется] (https://blogs.oracle.com/japod/ entry/when_to_use_jax_rs) :-) –

+0

Я не думаю, что это решает проблему. У меня уже есть аннотация ApplicationPath. Проблема заключается в том, что развертывание встречается с ArrayIndexOutOfBoundsException, даже с панелью администрирования GlassFish. Как ни странно, если я вычеркнул аннотацию ApplicationPath, развертывание будет успешным. – Khanh

+0

Хорошо, но я не могу воспроизвести проблему с установкой, которую я разместил выше. Возможно, вы можете уточнить свой вопрос с дополнительной информацией. – unwichtich

Смежные вопросы