Mule ESB - переопределяет ли библиотека какую-либо библиотеку приложений

Я использовал Mule Studio 3.2.1 для разработки приложения Mule. В этом приложении я использовал org.springframework.ws.client.core.WebServiceTemplate для отправки запроса веб-службы в другое приложение. Я использовал следующую конфигурацию

 <bean id="myWsTemplate"  clsass="org.springframework.ws.client.core.WebServiceTemplate">
    <constructor-arg ref="messageFactory" />
    <property name="defaultUri" value="${my.soap.endpoint}" />
    <property name="interceptors">
        <list>
            <ref bean="acqSecurityInterceptor" />
        </list>
    </property> 

 <bean id="acqSecurityInterceptor" class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor">
    <property name="validationActions" value="NoSecurity"/>
    <property name="securementActions" value="NoSecurity" />
</bean>

I have used Maven dependency of

    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-ws-security</artifactId>
        <version>2.1.0.RELEASE</version>
    </dependency>

В качестве зависимости используется wss4j-1.6.5.jar. Теперь, когда я развертываю приложение в Mule 3.2.0, оно выдает следующую ошибку.

  PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'validationActions' threw exception; nested exception is java.lang.NoSuchMethodError: org.apache.ws.security.util.WSSecurityUtil.decodeAction(Ljava/lang/String;Ljava/util/List;)I
  PropertyAccessException 2: org.springframework.beans.MethodInvocationException: Property 'securementActions' threw exception; nested exception is java.lang.NoSuchMethodError: org.apache.ws.security.util.WSSecurityUtil.decodeAction(Ljava/lang/String;Ljava/util/List;)I

Теперь каталог lib/opt Mule 3.2.0 поставляется с wss4j-1.5.8-osgi.jar, для которого сигнатура метода в WSSecurityutil является общедоступной статической int decodeAction (действие строки, действия вектора), в то время как тот, который был предпринят, decodeAction(Ljava/lang/String;Ljava/util/List;), присутствующий в wss4j.1.6.5.

Мой вопрос в том, что даже если в моем приложении есть файл wss4j-1.6.5.jar, почему загрузчик классов все еще пытается использовать тот, что находится в mule/lib/opt. Должен ли тот, что в приложении, не отменять приоритет? Если нет, есть ли способ заставить его работать таким образом


person Soumya    schedule 26.07.2012    source источник


Ответы (1)


Хорошо, используя следующую конфигурацию в mule-deploy.properties, помогло loader.override=-org.apache.ws.security.util.WSSecurityUtil ref http://www.mulesoft.org/documentation/display/MULE3USER/Classloader+Control+in+Mule

но по-прежнему возникает множество проблем с jar-файлами, которые создаются в Mule Studio как плагины, а затем пытаются развернуться в автономном Mule. Создам отсортированный список таких проблем в другой ветке.

person Soumya    schedule 27.07.2012