Как мне работать с библиотеками Glassfish, врезавшимися в библиотеки, поставляемые приложением? - PullRequest
4 голосов
/ 20 июля 2011

Приложение CXF JAX-RS, которое у меня есть, использует Джексона для маршалинга POJO в JSON.Это работает по большей части, но на днях он потерпел неудачу с NPE при сортировке глубоко вложенного объекта.

После некоторого расследования я обнаружил, что Джексон был включен в Glassfish 3 (через Джерси) и после удаления jackson-core-asl.jar, jackson-jaxrs.jar, jackson-mapper-asl.jar и jackson-xc.jar все работало прекрасно.Я думаю, что в Jackson 1.7.1 (входит в GF3) была ошибка, которая была исправлена ​​в версии, поставляемой с моим приложением (1.8).

Теперь вопрос в том, почему я вообще должен был это делать?Я бы подумал, что библиотеки, включенные в мои военные файлы, должны иметь преимущество перед любыми библиотеками в каталоге /modules Glassfish.

Есть ли более чистый способ сделать это, чем удаление jar-файлов с сервера приложений?Возможно, есть другие приложения, которые зависят от этих jar-файлов ...

Кстати, проблема с контейнером GF2 по-прежнему существует, но я не могу найти никаких библиотек Джексона в папке /lib (нет папки /modules, как в GF3).Есть какие-нибудь подсказки о том, где Джексон может скрываться в GF2 (если вообще)?

Ответы [ 3 ]

7 голосов
/ 13 сентября 2011

Скажите загрузчику классов Webapp, чтобы он предпочитал файлы JAR, предоставленные вашей WAR.

Добавьте в свой WEB-INF / sun-web.xml (или WEB-INF / glassfish-web.xml):

...
<class-loader delegate="false"/>
...

См. http://jersey.java.net/nonav/documentation/latest/glassfish.html#d4e1927

1 голос
/ 07 сентября 2011

рассмотрите возможность использования: asadmin deploy --libraries ...

Ссылка: http://blogs.oracle.com/alexismp/entry/more_with_deploy_libraries

0 голосов
/ 20 июля 2011

Джексон включен в Джерси и Hadoop, если вы используете Джерси или взаимодействуете с системой Hadoop;и включенные версии часто старые.Так что это может быть одним из источников проблем "древнего Джексона".

...