2014-12-05 5 views
1

Я использую сервер профиля WebSphere Liberty, версия 8.5.5.3. У меня есть ухо, содержащее множественные войны. Я развертываю их все взорван (ухо и война с модулями внутри него).Профиль WebSphere Liberty JAXBContext ClassCastException

При развертывании его я получаю следующее исключение класса произнесения:

java.lang.RuntimeException: javax.xml.bind.JAXBException: 
ClassCastException: attempting to cast bundleresource://67.fwk-1166858817/javax/xml/bind/JAXBContext.class 
to jar:file:/C:/ws/IBM/java_1.7_64/jre/lib/rt.jar!/javax/xml/bind/JAXBContext.class. 
Please make sure that you are specifying the proper ClassLoader. 

я понял, что проблема в том, что мой комплекте jax-api и jaxb-impl банки не загружены, поэтому я добавил к server.xml опцию загрузки parentLast класса :

<enterpriseApplication id="ear-app" location="C:/ws/ear/exploded/ear-app.ear" name="ear-app" > 
    <classloader delegation="parentLast" commonLibraryRef="provided-jars" privateLibraryRef="shared-libs"/> 
</enterpriseApplication>  

Я добавил свои jax-api и jax-impl банки к этой папке

<library id="shared-libs"> 
    <fileset dir="${server.config.dir}/lib/global" include="*.jar"/> 
</library> 

Однако у меня все еще есть ClassCastException, похоже, что он по-прежнему использует загрузку классов parentFirst?

Я нашел другие JAXB ClassCastException темы, но не при использовании профиля Liberty ..

+1

Вы пытались удалить эти банки из приложения для загрузки только классов серверов? – Gas

+0

Нет. Я не пробовал это, так как нам нужны новые версии библиотек, а не те, которые предоставляются в WebSphere. – tazzer

+0

У Liberty есть 'jaxb-2.2'. Какой вам нужен? Также какие функции вы включили в 'server.xml'? – Gas

ответ

1

Может быть, это опечатка, но в вашем посте вы имеете delegation="parentFirst" вместо parentLast.

Проверили ли вы просто изменить делегацию для применения, как это:

<enterpriseApplication id="ear-app" location="C:/ws/ear/exploded/ear-app.ear" name="ear-app" > 
    <classloader delegation="parentLast"/> 
</enterpriseApplication> 

Для получения более подробной информации см Overriding a provided API with an alternative version

+0

Оу, да, что это опечатка, я использовал parentLast – tazzer

0

Я работал Обращаясь проблему, не используя parentLast. Спасибо за помощь.

Смежные вопросы