This discussion is archived
3 Replies Latest reply: Mar 15, 2013 5:36 AM by Baan, Jos RSS

OSB and WSDL port question

996796 Newbie
Currently Being Moderated
I'm attempting to create a set of Proxy services based on the WSDL received from a customer. The WSDL defines a single service with three ports. Each port has a unique name, but share the same address (i.e. http://server:port/service/soap). When I take that WSDL into OSB, three separate proxy services are generated, as expected, but I'm forced to have a unique url for each proxy.

I need to have the path of the URL match all three proxies as the existing clients do not have the ability to change their URL, except for the host and port.

I have 2 questions...
1. Is there a way to map all three proxies to a single url, or map all three service ports to a single proxy?
2. I can't find in the WSDL spec that says this is not allowed. I think this is against best practices, but am unable to find any documentation that supports my stance. Any suggestions on where to look?

Example of the service definition:

<wsdl:service name="www.myservice.com">

<wsdl:documentation>A service implementation that utilizes a SOAP binding.</wsdl:documentation>

<wsdl:port name="SOAP-Port" binding="service-SOAP">
<soap:address location="http://server1:8084/service-2.0/soap"/>
</wsdl:port>

<wsdl:port name="wsn-notify-SOAP-Port" binding="tns:NotificationProducerSOAPBinding">
<soap:address location="http://server1:8084/wfs-2.0/soap"/>
</wsdl:port>

<wsdl:port name="wsn-subscription-SOAP-Port" binding="tns:SubscriptionManagerSOAPBinding">
<soap:address location="http://server1:8084/wfs-2.0/soap"/>
</wsdl:port>


</wsdl:service>
  • 1. Re: OSB and WSDL port question
    991448 Journeyer
    Currently Being Moderated
    Not sure if it will satisfy your requirement but you can create another wsdl with the required operations, and specify the required url in this proxy(i.e /service/soap), and in this proxy service called the required proxy services which you already created . You may use any branching like operational/conditional or tables like routing tables or dynamic routing to call the three proxy services as requried.
  • 2. Re: OSB and WSDL port question
    Abhinav Journeyer
    Currently Being Moderated
    HI aERonAUtical96 ,
    <wsdl:port name="SOAP-Port" binding="service-SOAP">
    <soap:address location="http://server1:8084/service-2.0/soap"/>
    </wsdl:port>
    <wsdl:port name="wsn-notify-SOAP-Port" binding="tns:NotificationProducerSOAPBinding">
    <soap:address location="http://server1:8084/wfs-2.0/soap"/>
    </wsdl:port>
    <wsdl:port name="wsn-subscription-SOAP-Port" binding="tns:SubscriptionManagerSOAPBinding">
    <soap:address location="http://server1:8084/wfs-2.0/soap"/>
    </wsdl:port>
    As per this you would be having different SoapAction for different operations.
    Inside Proxy service configuration Operation Selection ConfigurationSelect Selection Algorithm as SOAPAction Header

    Other way around is to virtualize your three proxy service( PS_2. ..3... 4 ) with another frontend proxy service.( PS_1) PS_1 ----> PS_2/PS_3/PS_4..----> Business Service
    You can make Any SOAP Proxy Service ( PS_1) and handle the SOAP request and then use conditional branching to route it to either PS_2/PS_3/PS_4 on local transport to avoid HTTP call from PS_1 to PS_2/PS_3/PS_4service.

    - It is considered good etiquette to reward answer with points (as "helpful" - 5 pts - or "correct" - 10pts).

    Regards,
    Abhinav Gupta
  • 3. Re: OSB and WSDL port question
    Baan, Jos Explorer
    Currently Being Moderated
    Hi,

    as far as I could understand from your post it would make more sene to create a BUSINESS service based on the WSDL of the customer. I expect you to contact that (external) service from within the OSB. I guess you will have to create 3 different proxy services (probably based on other WSDL then the one you received from your customer). Each of these proxy services will then invoke one of the operations of the business service.

    Regards
    Jos

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points