Я пытаюсь перейти от Glassfish + Jersey + Weld to Jetty.Причал + Сержант Джерси + Сварка: инъекция сварного шва не инициализирована, что не так?
У меня есть такая настройка: gist of pom.xml, web.xml and Java launcher.
Приложение кажется прекрасным, но при обслуживании любого запроса я вижу, что поле, которое должно быть введено Weld (logger
), равно null.
@RequestScoped
@Path("/foobar")
@Consumes({ ExtendedMediaType.APPLICATION_JSON,
ExtendedMediaType.APPLICATION_JAVASCRIPT })
@Produces({ ExtendedMediaType.APPLICATION_JSON,
ExtendedMediaType.APPLICATION_JAVASCRIPT })
public class EmailResource extends {
@Inject
private Logger logger;
@Override @POST
public Response create(EmailJob document)
throws URISyntaxException, ResourceException
{
logger.debug("Hi there!");
}
}
В чем проблема?
обновление: производитель Logger выглядит сомнительным, но это даже не дозвонились:
/** This class uses CDI to alias Java EE resources into CDI beans. **/
public class Resources {
@Produces
public Logger produceLog(InjectionPoint injectionPoint) {
return LoggerFactory.getLogger(
injectionPoint.getMember().getDeclaringClass().getName());
}
}
Пробовал и она работает. Благодаря! –
Мне просто интересно, почему 'AppServlet' в part2. Разве это не должно работать только с сервлетом Джерси? Это не выглядит слишком чистым. –
BTW вы cau используете 'com.sun.jersey.config.property.packages' и идите без' RestConfig.getClasses() '. –