This project is read-only.

WCF Client and Tibco Ems Server (JMS transport)

Topics: Technical Questions
Mar 16, 2010 at 5:23 PM

Hi,

I'm developing an application in which the WS client proxy is .NET (WCF) and the WS Host server is TIBCO EMS.

TIBCO EMS uses a specific transport Java Messaging Service (JMS) that .NET can’t handle so I use a TIBCO Library that allows creating a custom binding that handles JMS transport.

I was able to test successfully this connection and it was fully operational.

My problem is that I now must use Managed Services Engine to handle the WS clients and for start can’t even import the WSDL Client, I’m getting the following error:

Failed to import service due to Error [Exception Information Type[ArgumentNullException] Source[Microsoft.MSE.Tools.MetadataLoader.Module] Message[ServiceOperation collection is either null or empty Parameter name: serviceOperations] StackTrace[ at Microsoft.MSE.Tools.MetadataLoader.Module.ServiceImporter.ImportService(List`1 serviceOperations, ImportLevelType levelType)]]

 My question is the following, if I was able to generate the WCF proxy client, why can’t I import the same WSDL in MSE?

Mar 16, 2010 at 6:15 PM
Edited Mar 16, 2010 at 6:20 PM

well I found a solution to my problem.

I just added a soap location (any location it doesn't matter) and then the import was successful. As im using JMS transport, this particular parameter wasn't in the WSDL

Initially I had this:


<wsdl:port name="SOAPEventSource" binding="tns:SOAPEventSourceBinding">
    <soap:address/>
    <jms:connectionFactory>QueueConnectionFactory</jms:connectionFactory>
    <jms:targetAddress destination="queue">myQueue</jms:targetAddress>
</wsdl:port>

 and changed to this:

<wsdl:port name="SOAPEventSource" binding="tns:SOAPEventSourceBinding">
    <soap:address location="http://localhost/anything"/>
    <jms:connectionFactory>QueueConnectionFactory</jms:connectionFactory>
    <jms:targetAddress destination="queue">myQueue</jms:targetAddress>
</wsdl:port>

 

 

Mar 16, 2010 at 6:24 PM

So are you now able to access the TIBCO EMS binding from MSE? BTW the TIBCO library that you are using for creating custom Binding, is it available for free or comes with a TIBCO product?

Mar 16, 2010 at 6:46 PM
Edited Mar 16, 2010 at 6:46 PM

Hi,

No. I've just managed to overcome my first obstacle: import the WSDL in MSE (in which i'm kinda newbie). This WSDL was produced with some TIBCO WSDL Design Tools and implements JMS binding.

As I mentioned I was able to access TIBCO EMS Server (JMS transport) with a WCF client and using "TIBCO EMS Transport Channel for WCF" library.
Now I'm trying to evaluate if it's possible to do the same using MSE, providing the same custom bind that I used in WCF client.


Regarding the "TIBCO EMS Transport Channel for WCF" library, as far as I know it is not a free library.

Ricardo

Apr 22, 2010 at 5:37 PM
Edited Apr 22, 2010 at 5:39 PM

Hi,

 

Just to update this post, I was able to consume services by JMS transport.

Using the mentioned library "TIBCO EMS Transport Channel for WCF" and adding the following binding in MSE to acess the TIBCO EMS Server:

<bindings xmlns="">
          <customBinding>
            <binding name="customBinding">
              <textMessageEncoding messageVersion="Soap11WSAddressing10" />
              <TemsTransportExtensionElement messageProtocol="TIBCOSoapOverJMS2004" xmlns="clr-namespace:com.tibco.wcf.tems;assembly=TIBCO.EMS.WCF" />
            </binding>
          </customBinding>
        </bindings>

 

It's possible to consume JMS transported services.

 

And also put the library on the MSE install folder