2013-07-11 2 views
3

Я использую glassfish 4 для создания некоторых успокоительных приложений с использованием стандартного Java 7EE-стека, недавно выпущенного.glassfish 4 и jersey-media-multipart 2 не работают с beans.xml

Мое основное спокойное обслуживание работает нормально, но теперь я хочу обрабатывать входящие загрузки файлов, которые используют тип multipart mime в той же службе.

Я нашел пример PIC jersey maven (multipart-webapp), упомянутый в https://jersey.java.net/documentation/latest/user-guide.html , и это развертывается и отлично работает. Однако, как только я построю на этой структуре, чтобы включить инъекцию зависимостей, и, в частности, как только я создаю файл beans.xml (даже пустой), я получаю всевозможные ошибки, например:

SEVERE : Исключение при загрузке приложения: Сбой развертывания CDI: WELD-001408 Невыполненные зависимости для типа [Провайдеры] с квалификаторами [@Default] в точке ввода [[BackedAnnotatedParameter] Параметр 1 из [BackedAnnotatedConstructor] @Inject public org.glassfish.jersey.media .multipart.internal.MultiPartReaderServerSide (@Context Providers, Provider)]

Я пробовал использовать новый атрибут режима обнаружения bean, установленный для всех или ничего в моем файле beans.xml, но это не имеет никакого значения. Является ли это ошибкой в ​​Glassfish или Jersey, или они в настоящее время несовместимы, хотя Glassfish включает все задействованные банки, или я делаю что-то действительно глупое?

ответ

7

Оказалось, что сообщения об ошибках и поведение beans.xml - это красные сельди. Чтобы помочь кому-либо с той же проблемой, это то, что вам нужно сделать, чтобы использовать multipart mime внутри спокойного интерфейса на стеклянную рыбку.

Убедитесь, что библиотека добавлена ​​только во время компиляции. Если вы используете netbeans, это означает добавление multipart-mime-xxx.jar из каталога glassfish/modules в качестве библиотеки, но unclicking кнопку 'package', поэтому он не включен в военный пакет (так как он уже находится внутри стеклянной рыбы).

Если вы используете Maven, можно достичь того же результата, используя указанный тег внутри зависимости:

 <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-multipart</artifactId> 
     <scope>provided</scope> 
     </dependency> 

Если вы используете успокоительный шаблон, генерируемый NetBeans, как отправной точки, вы будете иметь файл с именем application-config.java, который был сгенерирован для вас. Добавить строку:

resources.add(MultiPartFeature.class); 

непосредственно над линией

 addRestResourceClasses(resources); 

Теперь вы должны найти, что вы можете безопасно использовать различные аннотаций для многочастного мим в Джерси.

+0

+1 Я сегодня столкнулся с этой проблемой, пытаясь запустить пример [bookstore-webapp] (https://github.com/jersey/jersey/tree/2.0/examples/bookstore-webapp/). ' предоставил' на jersey-mvc-jsp зависимость работала для меня. –

+0

Извините, я не могу дать больше +1 этому ответу. –