Я пытаюсь использовать стороннюю библиотеку Java в Oracle. Библиотека кажется совместимой с той же версией jvm 1.4, что и наш сервер Oracle 10g, поскольку она отлично работает вне Oracle, поэтому я чувствую, что у меня должна получиться заставить ее работать. Эта библиотека в конечном итоге выполняет HTTP-запросы на основе SOAP, и при запуске в Oracle я получаю ошибки разрешения классов.
Вот строка, показывающая разницу:
Class msgfact = Class.forName("com.sun.xml.messaging.saaj.soap.MessageFactoryImpl");
Я попытался зарегистрировать эти библиотеки в Oracle с помощью утилиты loadjava и получил то, что считал успешным:
C:\>loadjava -verbose -schema MYUSER -user MYUSER/MYPWD@dbinstance -force saaj-impl.jar
Похоже, что все загружается, и я вижу этот класс MessageFactoryImpl в этом списке. Но затем я пытаюсь запустить эту строку кода из Oracle SQL (внутри другого класса, который я написал и загрузил с помощью loadjava), эта строка выдает исключение ClassNotFoundException (java.lang.ClassNotFoundException: com / sun / xml / messaging / saaj / soap / MessageFactoryImpl ).
Затем я вернулся и попытался добавить переключатель «-resolve» в командную строку loadjava. Это действует так, как будто эти классы saaj регистрируются, но они не разрешаются должным образом.
Как я могу успешно загрузить эти классы saaj в Oracle, или, если по какой-то причине Oracle уже загрузил их, как я могу убедить мой собственный код успешно использовать существующий класс?
FWIW, я уже предпринял шаги, чтобы убедиться, что предоставлены соответствующие разрешения для сокетов, и мой код может успешно выполнить общий HTTP-запрос на целевой URL-адрес. У него просто проблемы с использованием стека SOAP библиотеки, чтобы это произошло.
РЕДАКТИРОВАТЬ: Вот образец моего результата loadjava. Кажется, это показывает, что именно не удается, но я не понимаю, почему эти конкретные классы не разрешаются, когда кажется, что они обрабатываются должным образом на этапах предварительного разрешения. Я удалил здесь около 80% файла, но есть и другие классы, которые показывают те же проблемы с разрешением классов.
arguments: '-verbose' '-schema' 'MYSCHEMA' '-user' 'MYSCHEMA/MYSCHEMA@actest' '-resolve' '-force' 'saaj-impl.jar' [snip] creating : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/EnvelopeFactory loading : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/EnvelopeFactory creating : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/GifDataContentHandler loading : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/GifDataContentHandler creating : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/JpegDataContentHandler loading : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/JpegDataContentHandler creating : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageFactoryImpl loading : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageFactoryImpl creating : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl loading : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl [snip] resolving: class MYSCHEMA.com/sun/xml/messaging/saaj/soap/AttachmentPartImpl resolving: class MYSCHEMA.com/sun/xml/messaging/saaj/soap/Envelope resolving: class MYSCHEMA.com/sun/xml/messaging/saaj/soap/EnvelopeFactory errors : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/EnvelopeFactory ORA-29534: referenced object MYSCHEMA.com/sun/xml/messaging/saaj/soap/SOAPPartImpl could not be resolved resolving: class MYSCHEMA.com/sun/xml/messaging/saaj/soap/GifDataContentHandler resolving: class MYSCHEMA.com/sun/xml/messaging/saaj/soap/JpegDataContentHandler resolving: class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageFactoryImpl errors : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageFactoryImpl ORA-29534: referenced object MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl could not be resolved errors : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl ORA-29534: referenced object MYSCHEMA.com/sun/xml/messaging/saaj/soap/impl/EnvelopeImpl could not be resolved errors : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl$1 ORA-29534: referenced object MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl could not be resolved skipping : class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl$2 [snip] The following operations failed class MYSCHEMA.com/sun/xml/messaging/saaj/soap/EnvelopeFactory: resolution class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageFactoryImpl: resolution class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl: resolution class MYSCHEMA.com/sun/xml/messaging/saaj/soap/MessageImpl$1: resolution [snip] exiting : Failures occurred during processing