Я полностью в недоумении с моим пробелом в знаниях.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)
Может ли кто-нибудь сказать мне, почему добавление фильтра безопасности вызывает это?
Примечание: Исходное исключение было также NotSerializableException, но он перечислил класс объекта, который преобразовал вход в XSL. Я удалил все это, как не похожее на проблему, что добавление безопасности создает исключение. – Tad