I've been investigating a bit and I've seen the
JSSESocketFactory.create(...) method starts with

if (sslFactory == null) {
    initFactory();
}

that in case the sslFactory is not yet initialized, it creates a new
DefaultSSLSocketFactory.

My guess is that the embedded version does not initialize a
sslFactory, so when my third party code tries to create a socket it
creates a new one. On the other hand, in the standard version
somewhere ServiceMix must have created an sslFactory so my classes try
to use that socket and therefore get the security error. Does this
idea make sense? Does ServiceMix (not embedded) create some sslSocket
at any point?

Hope someone can help.

Sebastian Gomez.


On Thu, Jul 31, 2008 at 1:38 PM, Sebastian Gomez <[EMAIL PROTECTED]> wrote:
> Hi.
>
> I'm trying to send a signed message from a bean endpoint to a web
> service outside the ESB. I know servicemix-bean is a service engine,
> so I'm not supposed to do it that way, but I've got to use some third
> party java classes to communicate with the WS. When these try to
> create the SSLSocket for the connection, they throw the following
> exception (pasted below). The thing is that this works using the
> embedded jbi container, but when using the standard version it
> doesn't. I don't know if it can be something to do with ports that
> ServiceMix may or may not use depending on which version it's
> executing.
>
> Does anyone have any idea of what could be happening?
>
> Thanks in advance.
>
> Sebastian Gomez.
>
> PS: Here is the exception trace:
>
> AxisFault
>  faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
>  faultSubcode:
>  faultString: java.net.SocketException: third party class message
>  faultActor:
>  faultNode:
>  faultDetail:
>        {http://xml.apache.org/axis/}stackTrace:
> java.net.SocketException: third party class message
>        at 
> javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.j
> ava:156)
>        at 
> org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFac
> tory.java:130)
>        at 
> org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:1
> 57)
>        at 
> org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:114)
>
>        at 
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrateg
> y.java:71)
>        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150)
>        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:120)
>        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:180)
>        at org.apache.axis.client.Call.invokeEngine(Call.java:2564)
>        at org.apache.axis.client.Call.invoke(Call.java:2553)
>        at org.apache.axis.client.Call.invoke(Call.java:1753)
>        at third.party.class.invoke(Unknown Source)
>        at third.party.class.invoke(Unknown Source)
>        at myBean.myMethod(myBean.j
> ava:133)
>        at myBean.onMessageExchange(myBean.ja
> va:100)
>        at 
> org.apache.servicemix.bean.BeanEndpoint.onProviderExchange(BeanEndpoi
> nt.java:235)
>        at 
> org.apache.servicemix.bean.BeanEndpoint.process(BeanEndpoint.java:211
> )
>        at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLi
> feCycle.java:538)
>        at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(Async
> BaseLifeCycle.java:490)
>        at 
> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLife
> Cycle.java:46)
>        at 
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBoun
> d(DeliveryChannelImpl.java:610)
>        at 
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlo
> w.java:172)
>        at 
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.j
> ava:167)
>        at 
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.jav
> a:134)
>        at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:650)
>        at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:675)
>        at java.lang.Thread.run(Thread.java:595)
>

Reply via email to