В настоящее время я использую Jetty 9 для развертывания файлов WAR.Как добавить поддержку Weld CDI в рабочее приложение Jetty?
Для управления зависимостями, я использую Gradle; мой build.gradle
файл выглядит следующим образом:
apply plugin: 'java'
apply plugin: 'war'
repositories {
mavenCentral()
}
dependencies {
/**
* Jersey.
*/
compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.22.1'
compile 'org.glassfish.jersey.core:jersey-server:2.22.1'
/**
* Weld CDI.
*/
compile 'org.jboss.weld.servlet:weld-servlet-core:2.3.2.Final'
/**
* JUnit.
*/
testCompile 'junit:junit:4.12'
}
Мой web.xml
выглядит следующим образом:
<web-app version="3.0">
<display-name>Example Api</display-name>
<servlet>
<servlet-name>RESTful Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example.api</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>RESTful Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>
</web-app>
Однако, когда я пытаюсь развернуть, я получаю следующую трассировку стека:
[2015-12-16 09:13:33,315] Artifact Gradle : api : api.war: Artifact is being deployed, please wait...
Dec 16, 2015 9:13:36 PM org.jboss.weld.environment.servlet.EnhancedListener onStartup
INFO: WELD-ENV-001008: Initialize Weld using ServletContainerInitializer
Dec 16, 2015 9:13:36 PM org.jboss.weld.bootstrap.WeldStartup <clinit>
INFO: WELD-000900: 2.3.2 (Final)
Dec 16, 2015 9:13:36 PM org.jboss.weld.environment.servlet.WeldServletLifecycle initialize
INFO: WELD-ENV-000028: Weld initialization skipped - no bean archive found
Dec 16, 2015 9:13:36 PM org.jboss.weld.environment.servlet.Listener contextInitialized
INFO: WELD-ENV-001007: Initialize Weld using ServletContextListener
Dec 16, 2015 9:13:36 PM org.jboss.weld.environment.servlet.WeldServletLifecycle initialize
INFO: WELD-ENV-000028: Weld initialization skipped - no bean archive found
Круги по java.lang.IllegalStateException: Singleton not set for STATIC_INSTANCE => []
.
Может кто-нибудь, пожалуйста, скажите мне, что нужно сделать, чтобы это работало?
Я просто пытаюсь @Inject
свои зависимости в Jetty, но я только найти себя борется с настройками конфигурации в течение нескольких дней подряд ...
Вы используете [тег: встроенный-Jetty]? (либо самостоятельно, либо из градиента?), либо вы развертываете для распределения причалов? –
@JoakimErdfelt Я развертываю дистрибутив приписки (буквально отбрасывая .war внутри $ JETTY_HOME/webapps и запуская 'java -jar start.jar'). – user132169