Hi Dan,

Yes, I have already seen this problem.

For your information, I have begun to implement a servicemix-ldap binding component. It's not yet released, but I'm going to resume code on it. You can get the current source code here:
http://svn.apache.org/repos/asf/servicemix/components/bindings/servicemix-ldap/trunk/

Nevertheless, if you want to use the Camel LDAP component, you can raise a jira task to change at least the ServiceMix initial context factory extend or to be able to bypass the ServiceMix interceptor.

Regards
JB

Dan Salt wrote:
Hi,

I'm trying to get LDAP working in Camel via ServiceMix 4. However, I get an
exception when trying to use the "search" method against the LDAP
"DirContext" object (obtained either using the Camel ProducerTemplate, or
directly in code).
I have diagnosed the problem via debugging, and have sourced the problem to
servicemix.naming.InitialContextWrapper. When the LDAP InitialContext is
created, Servicemix is internally intercepting this and inserting an
InitialContextWrapper instead.

This InitialContextWrapper extends InitialContext, not DirContext, and so
when the Java LDAP classes try to execute the "search(...)" method, it
checks to see if the Default Context is an instanceof "DirContext", which it
isn't, and throws an exception.

22:42:14,203 | WARN  | enerContainer-43 | EndpointMessageListener          |
nent.jms.EndpointMessageListener   98 |
Endpoint[activemq:queue:spf-jms-endpoint] consumer caught an exception while
processing JMS message: ActiveMQTextMessage {commandId = 8, responseRequired
= true, messageId = ID:saltda-cbg-3684-1246329564484-0:0:2:1:1,
originalDestination = null, originalTransactionId = null, producerId =
ID:saltda-cbg-3684-1246329564484-0:0:2:1, destination =
queue://spf-jms-endpoint, transactionId = null, expiration = 1246329584875,
timestamp = 1246329564875, arrival = 0, brokerInTime = 1246329564875,
brokerOutTime = 1246329564875, correlationId =
ID-saltda-cbg/3683-1246329563750/3-0, replyTo =
temp-queue://ID:saltda-cbg-3684-1246329564484-0:0:1, persistent = true, type
= null, priority = 4, groupID = null, groupSequence = 0, targetConsumerId =
null, compressed = false, userID = null, content = null,
marshalledProperties = org.apache.activemq.util.byteseque...@5faa7,
dataStructure = null, redeliveryCounter = 0, size = 0, properties =
{SPF_SERVICE_NAME=http://spf.sse.ge/ExampleObjectService/GetObjectValue},
readOnlyProperties = true, readOnlyBody = true, droppable = false, text =
<?xml version="1.0" encoding="UTF-8" standalo...ObjectValue>}
org.apache.camel.RuntimeCamelException: javax.naming.NotContextException:
Not an instance of DirContext
        at
org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:845)
        at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:138)
        at
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:101)
        at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:105)
        at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:121)
        at
org.apache.camel.impl.DefaultProducerTemplate.requestBody(DefaultProducerTemplate.java:201)
        at ge.sse.spf.spf_core_eips.ServiceLookup.process(ServiceLookup.java:38)

Please can anyone advise how to get around this - as it's a total
show-stopper for me. My only option is to run all my Camel routes OUTSIDE of
Servicemix, which isn't the solution I want.

Many thanks,
Dan Salt

Reply via email to