2013-11-14 2 views
0

Я полностью в недоумении с моим пробелом в знаниях.Mule защитный фильтр разрушающий поток

Mule 3.3.1 CE. Я должен использовать эту версию на данный момент.

У меня есть поток, который отлично работает, пока я не попытаюсь использовать фильтр безопасности с действительными учетными данными.

Далее следует код Мула. Это не будет иметь большого смысла в бизнесе, поскольку я уменьшил его до минимума, который создает проблему. Обычно исходящий вызов находится в отдельном потоке, но я привел его в основной поток для примера.

Если у меня есть фильтр безопасности на входящей конечной точке, закомментированный и выполняющий это, я получаю ожидаемый ответ сообщения регистратора и возвращаемой полезной нагрузки «foo».

<https:connector name="HTTPSConnector" validateConnections="true" sendBufferSize="0" receiveBufferSize="0" receiveBacklog="0" clientSoTimeout="10000" serverSoTimeout="10000" socketSoLinger="0" doc:name="HTTP\HTTPS"> 
    <https:tls-key-store path="/opt/eai/common/keystore/EAIKeystore.jks" keyPassword="${key.password}" storePassword="${store.password}"/> 
</https:connector> 

<spring:beans> 
    <ss:authentication-manager alias="authManager"> 
     <ss:authentication-provider> 
      <ss:user-service id="userService"> 
       <ss:user name="PortalUser" password="password" authorities="ROLE_USER"/> 
      </ss:user-service> 
     </ss:authentication-provider> 
    </ss:authentication-manager> 
</spring:beans> 

<mule-ss:security-manager> 
    <mule-ss:delegate-security-provider name="memory-provider" delegate-ref="authManager"/> 
</mule-ss:security-manager> 

<flow name="Main" doc:name="Main"> 
    <https:inbound-endpoint exchange-pattern="request-response" host="localhost" port="10029" path="sites/r.v1" mimeType="text/xml" encoding="UTF-8" connector-ref="HTTPSConnector"> 
     <mule-ss:http-security-filter realm="mule-realm"/> 
    </https:inbound-endpoint> 

    <custom-transformer class="com.ca.eai.esb.transformer.site.StrategySplittingTransformer" doc:name="Split"/> 
    <collection-splitter/> 

    <https:outbound-endpoint exchange-pattern="request-response" 
      address="${https.outbound.account.sap-nameaddress}" 
      connector-ref="HTTPSConnector" 
      mimeType="text/xml" responseTimeout="${https.outbound.timeout}"/> 

    <logger level="INFO" message="GOT HERE"/> 

    <set-payload value="foo"/> 
</flow> 

Обычая трансформатор также урезан до минимума:

@Override 
public Object transformMessage(MuleMessage message, String outputEncoding) 
{ 
    MuleMessageCollection collection = new DefaultMessageCollection(message.getMuleContext()); 

    collection.addMessage(message); 

    return collection; 
} 

Если я раскомментировать фильтр безопасности и передать в плохих полномочиях, я получаю ожидаемое исключение безопасности.

Если, однако, я передаю действительные учетные данные, я получаю исключение, которое не может быть сериализовано.

Root Exception stack trace: 
java.io.NotSerializableException: org.apache.commons.httpclient.ContentLengthInputStream 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
    at java.util.concurrent.CopyOnWriteArrayList.writeObject(CopyOnWriteArrayList.java:857) 
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything) 

Может ли кто-нибудь сказать мне, почему добавление фильтра безопасности вызывает это?

+0

Примечание: Исходное исключение было также NotSerializableException, но он перечислил класс объекта, который преобразовал вход в XSL. Я удалил все это, как не похожее на проблему, что добавление безопасности создает исключение. – Tad

ответ

Смежные вопросы