Glassfish 4 и jersey-media-multipart 2 не работают с beans.xml

Я использую Glassfish 4 для создания некоторых спокойных приложений с использованием недавно выпущенного стандартного стека Java 7EE.

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

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

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

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


person bilkusg    schedule 11.07.2013    source источник


Ответы (1)


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

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

Если вы используете 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);

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

person bilkusg    schedule 12.07.2013