weblogic.webservice.core.soap.MessageFactoryImpl нельзя привести к javax.xml.soap.MessageFactory - PullRequest
3 голосов
/ 21 ноября 2011

Я застрял со следующей ошибкой при развертывании клиентского приложения веб-служб в weblogic. [Это приложение работало без проблем в tomcat.]

Не удается разрешить ссылку на bean-компонент 'saajSoapMessageFactory', пока установка аргумента конструктора; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание компонента с именем 'saajSoapMessageFactory', определенным в пути к классам ресурс [... / core / ws / ws-config.xml]: вызов метода init не удалось; вложенное исключение org.springframework.ws.soap.SoapMessageCreationException: не удалось create SAAJ MessageFactory: невозможно создать фабрику сообщений для SOAP: weblogic.webservice.core.soap.MessageFactoryImpl не может быть приведен к javax.xml.soap.MessageFactory; вложенное исключение javax.xml.soap.SOAPException: невозможно создать фабрику сообщений для SOAP: weblogic.webservice.core.soap.MessageFactoryImpl не может быть приведен в javax.xml.soap.MessageFactory

Вот определение компонента в ws-config.xml

(bean id="saajSoapMessageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory")

Я пытался найти эту проблему, но, к сожалению, не смог найти никакого решения. Я что-то упускаю в весеннем конфиге? Кто-нибудь сталкивался с этой проблемой раньше?

1 Ответ

3 голосов
/ 21 ноября 2011

Я не сталкивался с этим - но происходит то, что Weblogic использует свое собственное значение по умолчанию для MessageFactoryImpl

Проверьте свои журналы запуска weblogic, и вы увидите некоторые установленные параметры, такие как

javax.xml.rpc.ServiceFactory = weblogic.webservice.core.rpc.ServiceFactoryImpl
javax.xml.soap.MessageFactory = weblogic.webservice.core.soap.MessageFactoryImpl

Вы можете попробовать 2 варианта (я не знаю, какой будет работать, попробуйте)

A)

В вашем клиенте установите их для эквивалентов Spring

System.setProperty("javax.xml.soap.MessageFactory",      "org.springframework.ws.soap.saaj.SaajSoapMessageFactory");
System.setProperty( "javax.xml.rpc.ServiceFactory",      "** Spring version **");

B) Передайте требуемую версию в качестве параметра -D в startWeblogic.cmd

-Djavax.xml.soap.MessageFactory=org.springframework.ws.soap.saaj.SaajSoapMessageFactory

и добавьте баночки saaj в веб-логический путь к классам.

...