Как использовать jaxb 2 в веб-приложении в Oracle Application Server - PullRequest
0 голосов
/ 16 ноября 2009

У меня есть приложение под управлением Jaxb 2.1.12. Я использую JDK 1.5 и OC4J 10.1.3.4.0. Когда я пытаюсь использовать часть моего приложения, которая использует Jaxb, я получаю следующую ошибку:

Unable to locate jaxb.properties for package

Я сузил это до xml.jar, который идет с OC4J. Он содержит классы Jaxb 1.0. Я могу исправить эту ошибку, добавив в файл orion-application.xml следующее:

<imported-shared-libraries>
    <remove-inherited name="oracle.xml"/>
</imported-shared-libraries>

Проблема в том, что я развертываю файл WAR на OC4J с помощью утилиты admin_client.jar. У меня нет EAR для размещения файла orion-application.xml, поэтому я решил попробовать добавить файл orion-web.xml в каталог WEB-INF WAR и установить для свойства search-local-classes-first значение true :

<?xml version="1.0"?>    
<orion-web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/orion-web-10_0.xsd"  deployment-version="10.1.3.4.0"
 jsp-cache-directory="./persistence"
 jsp-cache-tlds="standard"
 simple-jsp-mapping="false"
 temporary-directory="./temp"
 schema-major-version="10" schema-minor-version="0" >

  <web-app-class-loader search-local-classes-first="true"  />

 <web-app>
 </web-app>
</orion-web-app>

Это приводит к тому, что приложение вообще не развертывается. Я получаю сообщение о том, что файлы конфигурации Spring не могут быть проанализированы. Я хотел бы использовать search-local-classes-first. Как я могу использовать это свойство? Также есть ли способ развернуть файл orion-application.xml вместе с файлом WAR?

09/11/16 13:26:01 WARNING: DeployerRunnable.run Unexpected exception parsing XML document from Servl
etContext resource [/WEB-INF/applicationContext-acegi-security.xml]; nested exception is java.lang.C
lassCastException: oracle.xml.jaxp.JXDocumentBuilderFactoryoracle.oc4j.admin.internal.DeployerExcept
ion: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationCon
text-acegi-security.xml]; nested exception is java.lang.ClassCastException: oracle.xml.jaxp.JXDocume
ntBuilderFactory
        at oracle.oc4j.admin.internal.DeployerBase.execute(DeployerBase.java:126)
        at oracle.oc4j.admin.jmx.server.mbeans.deploy.OC4JDeployerRunnable.doRun(OC4JDeployerRunnabl
e.java:52)
        at oracle.oc4j.admin.jmx.server.mbeans.deploy.DeployerRunnable.run(DeployerRunnable.java:81)

        at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledE
xecutor.java:303)
        at java.lang.Thread.run(Thread.java:595)

Примечание: я не получаю эту ошибку с Java 1.6, и я полагаю, что это потому, что 1.6 поставляется в комплекте с Jaxb 2.

Ответы [ 2 ]

1 голос
/ 17 ноября 2009

Если создание файла ear решит проблему, я рекомендую вам пойти по этому пути. Кроме того, при развертывании файла войны контейнер создает для вас слух. Проверьте каталог application установочного каталога oc4j для файла ear.

1 голос
/ 17 ноября 2009

В документации для "search-local-classes-first" я увидел следующую строку:

В соответствии со спецификацией сервлета, функция search-local-classes-first не может использоваться при загрузке классов в пакетах java. или javax. *. *

Поскольку JAXB2 включен в JDK 1.6 и теперь находится под javax.*, возможно, сервер приложений игнорирует классы / библиотеку, даже если она присутствует в каталоге WEB-INF / lib. Попробуйте поместить файлы JAXB в каталог $ JRE_HOME / lib. Если он выбран, то вы можете попробовать изменить сценарии запуска для своего сервера приложений, чтобы включить файлы JAXB в исходный путь к классам.

Решение немного взломано :). Вот ссылка с инструкциями по выполнению того же действия для Apache CXF.

Замена JAXB на JAXB2.0 в OC4j

...