В настоящее время я использую сервер Tomcat для своего приложения, и приведенный ниже код в pom.xml дает мне SAAJ версии 1.3 для протокола soap 1.2. Но когда мы переносим сервер в websphere, я получаю сообщение об ошибке, как показано ниже.

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
    <property name="soapVersion">
        <util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12"/>
    </property>
</bean>

консоль от tomcat: 2013-10-11 11:12:51 INFO SaajSoapMessageFactory: 135 - Создание SAAJ 1.3 MessageFactory с протоколом SOAP 1.2 2013-10-11 11:12:51 ОТЛАДКА SaajSoapMessageFactory: 163 - Использование класса MessageFactory [com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPMessageFactory1_2Impl]

Ошибка в веб-сфере: PropertyAccessException 1: org.springframework.beans.MethodInvocationException: свойство soapVersion вызвало исключение; вложенное исключение - java.lang.IllegalArgumentException: SAAJ 1.1 и 1.2 поддерживают только SOAP 1.1.

Я удалил файлы jar, сгенерированные maven (SaajSoapMessageFactory), и из этого класса выдается ошибка.

try {
            if (SaajUtils.getSaajVersion() >= SaajUtils.SAAJ_13) {
                if (!StringUtils.hasLength(messageFactoryProtocol)) {
                    messageFactoryProtocol = SOAPConstants.SOAP_1_1_PROTOCOL;
                }
                if (logger.isInfoEnabled()) {
                    logger.info("Creating SAAJ 1.3 MessageFactory with " + messageFactoryProtocol);
                }
                messageFactory = MessageFactory.newInstance(messageFactoryProtocol);
            }
            else if (SaajUtils.getSaajVersion() == SaajUtils.SAAJ_12) {
                logger.info("Creating SAAJ 1.2 MessageFactory");
                messageFactory = MessageFactory.newInstance();
            }
            else if (SaajUtils.getSaajVersion() == SaajUtils.SAAJ_11) {
                logger.info("Creating SAAJ 1.1 MessageFactory");
                messageFactory = MessageFactory.newInstance();
            }
            **else {
                **throw new IllegalStateException(
                        "SaajSoapMessageFactory requires SAAJ 1.1, which was not found on the classpath");**
            }**
        }

Пожалуйста, посоветуйте, почему tomcat работает нормально, а websphere не получает правильную версию SAAJ. Также мы используем websphere 6.1.23

2
sbsekar 11 Окт 2013 в 19:17

1 ответ

Лучший ответ

Я только что заметил, что приложение, которое мы создаем в tomcat, использует JDK1.6, но websphere 6.1 поддерживает только jdk1.5.

У нас есть для websphere7. 6.x не поддерживает jdk1.6

0
sbsekar 11 Окт 2013 в 22:26
Да. WAS 6.x очень старый, и его срок службы уже истек. На самом деле, меня не удивит, если срок службы WAS 7 закончится в следующем году. Возможно, вы захотите подумать о большом скачке версии и полностью перейти к 8.x.
 – 
Ian McLaird
11 Окт 2013 в 23:01
Да, я просматривал документы ibm 6.1, очень старые - ссылка
 – 
sbsekar
11 Окт 2013 в 23:08
1
Я получаю ту же ошибку, когда развертываю приложение в WAS 8.5.5 с IBM java 7. Когда я переключаюсь на IBM Java 6, он отлично работает, любые предложения
 – 
Shravan Ramamurthy
29 Сен 2016 в 17:18