Another thought on how this might work and this may not be possible with the
current Axis2 engine but one can dream ;-)

Create a single SCA service from wsdl.service using 1 URI and 1 http port.
Create a single Axis2 service that the SCA service is mapped to.
Add 3 ports to that Axis2 service.  Port1, Port2,  Port3.

Require reference to specify a port on binding.ws and possibly default using
some algorithym. (not sold on this yet)

Incoming request gets routed by Axis2 engine to correct wsdl port based on
inspection of incoming message.



On 5/6/08, Lou Amodeo <[EMAIL PROTECTED]> wrote:
>
> Vamsavardhana Reddy wrote:
>
> Should the service be available on http://localhost:8080/AService,
> http://localhost:8012/AService and http://localhost:8011/AService ?  With
> the current implementation, the service is available on
> http://localhost:8080/AComponent.
>
> Well, I thought this was referring to the service side where the service
> should be available for three distinct wsdl ports each defining a
> unique http listener port.   My understanding is that in the case of an
> SCA reference the WSDL endpoints take precedence but this
> doesn't apply to services since WSDL endpoints are not strictly supported
> in all hosting environments.  I think the Spec is rather vague in this area.
>
>
>
>  On 5/6/08, Simon Nash <[EMAIL PROTECTED]> wrote:
> >
> > Lou Amodeo wrote:
> >
> > > I thought Vamsi was illustrating a scenario and asking a question.
> > >
> > >
> > I thought so too, and I was doing my best to answer it :-)
> >
> > It's my understanding that the port definitions in the WSDL should
> > be used in preference to the endpoint URI that SCA would compute
> > using its default algorithm.
> >
> >  Simon
> >
> >                                                                      I
> > > agree
> > > with you as well, on the service side the spec does indicate some
> > > hosting
> > > environments cannot support endpoints defined in wsdl.  Still trying
> > > to nail
> > > down the semantics of this attribute.  The example above with the
> > > three http
> > > ports doesn't work for me.
> > >
> > >
> > >
> > > On 5/6/08, Simon Nash <[EMAIL PROTECTED]> wrote:
> > >
> > > > Vamsavardhana Reddy wrote:
> > > >
> > > >  I have my AService with wsdl given below:
> > > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > > <wsdl:definitions targetNamespace="
> > > > > http://wsbinding.vtest.sca.tuscany.apache.org"; xmlns:soap12="
> > > > > http://schemas.xmlsoap.org/wsdl/soap12/"; xmlns:ns0="
> > > > > http://wsbinding.vtest.sca.tuscany.apache.org"; xmlns:mime="
> > > > > http://schemas.xmlsoap.org/wsdl/mime/"; xmlns:http="
> > > > > http://schemas.xmlsoap.org/wsdl/http/"; xmlns:ns1="
> > > > > http://org.apache.axis2/xsd"; xmlns:wsaw="
> > > > > http://www.w3.org/2006/05/addressing/wsdl"; xmlns:xs="
> > > > > http://www.w3.org/2001/XMLSchema"; xmlns:soap="
> > > > > http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:wsdl="
> > > > > http://schemas.xmlsoap.org/wsdl/";>
> > > > >  <wsdl:types>
> > > > >   <xs:schema attributeFormDefault="qualified"
> > > > > elementFormDefault="qualified" targetNamespace="
> > > > > http://wsbinding.vtest.sca.tuscany.apache.org"; xmlns:ns="
> > > > > http://wsbinding.vtest.sca.tuscany.apache.org";>
> > > > >           <xs:element name="getGreetings">
> > > > >               <xs:complexType>
> > > > >                   <xs:sequence>
> > > > >                       <xs:element minOccurs="0" name="param0"
> > > > > nillable="true" type="xs:string"/>
> > > > >                   </xs:sequence>
> > > > >               </xs:complexType>
> > > > >
> > > > >           </xs:element>
> > > > >           <xs:element name="getGreetingsResponse">
> > > > >               <xs:complexType>
> > > > >                   <xs:sequence>
> > > > >                       <xs:element minOccurs="0" name="return"
> > > > > nillable="true" type="xs:string"/>
> > > > >                   </xs:sequence>
> > > > >               </xs:complexType>
> > > > >           </xs:element>
> > > > >       </xs:schema>
> > > > >
> > > > >  </wsdl:types>
> > > > >  <wsdl:message name="getGreetingsRequest">
> > > > >   <wsdl:part name="parameters" element="ns0:getGreetings">
> > > > >   </wsdl:part>
> > > > >  </wsdl:message>
> > > > >  <wsdl:message name="getGreetingsResponse">
> > > > >   <wsdl:part name="parameters" element="ns0:getGreetingsResponse">
> > > > >   </wsdl:part>
> > > > >  </wsdl:message>
> > > > >
> > > > >  <wsdl:portType name="AServicePortType">
> > > > >   <wsdl:operation name="getGreetings">
> > > > >     <wsdl:input message="ns0:getGreetingsRequest"
> > > > > wsaw:Action="urn:getGreetings">
> > > > >   </wsdl:input>
> > > > >     <wsdl:output message="ns0:getGreetingsResponse"
> > > > > wsaw:Action="urn:getGreetingsResponse">
> > > > >   </wsdl:output>
> > > > >   </wsdl:operation>
> > > > >  </wsdl:portType>
> > > > >  <wsdl:binding name="AServiceSOAP12Binding"
> > > > > type="ns0:AServicePortType">
> > > > >
> > > > >   <soap12:binding style="document" transport="
> > > > > http://schemas.xmlsoap.org/soap/http"/>
> > > > >   <wsdl:operation name="getGreetings">
> > > > >     <soap12:operation soapAction="urn:getGreetings"
> > > > > style="document"/>
> > > > >     <wsdl:input>
> > > > >       <soap12:body use="literal"/>
> > > > >     </wsdl:input>
> > > > >     <wsdl:output>
> > > > >       <soap12:body use="literal"/>
> > > > >     </wsdl:output>
> > > > >
> > > > >   </wsdl:operation>
> > > > >  </wsdl:binding>
> > > > >  <wsdl:binding name="AServicePortTypeBinding"
> > > > > type="ns0:AServicePortType">
> > > > >   <soap:binding style="document" transport="
> > > > > http://schemas.xmlsoap.org/soap/http"/>
> > > > >   <wsdl:operation name="getGreetings">
> > > > >     <soap:operation soapAction=""/>
> > > > >     <wsdl:input>
> > > > >       <soap:body use="literal"/>
> > > > >     </wsdl:input>
> > > > >
> > > > >     <wsdl:output>
> > > > >       <soap:body use="literal"/>
> > > > >     </wsdl:output>
> > > > >   </wsdl:operation>
> > > > >  </wsdl:binding>
> > > > >  <wsdl:binding name="AServiceHttpBinding"
> > > > > type="ns0:AServicePortType">
> > > > >   <http:binding verb="POST"/>
> > > > >   <wsdl:operation name="getGreetings">
> > > > >     <http:operation location="AService/getGreetings"/>
> > > > >
> > > > >     <wsdl:input>
> > > > >       <mime:content part="getGreetings" type="text/xml"/>
> > > > >     </wsdl:input>
> > > > >     <wsdl:output>
> > > > >       <mime:content part="getGreetings" type="text/xml"/>
> > > > >     </wsdl:output>
> > > > >   </wsdl:operation>
> > > > >  </wsdl:binding>
> > > > >  <wsdl:binding name="AServiceSOAP11Binding"
> > > > > type="ns0:AServicePortType">
> > > > >
> > > > >   <soap:binding style="document" transport="
> > > > > http://schemas.xmlsoap.org/soap/http"/>
> > > > >   <wsdl:operation name="getGreetings">
> > > > >     <soap:operation soapAction="urn:getGreetings"
> > > > > style="document"/>
> > > > >     <wsdl:input>
> > > > >       <soap:body use="literal"/>
> > > > >     </wsdl:input>
> > > > >     <wsdl:output>
> > > > >       <soap:body use="literal"/>
> > > > >     </wsdl:output>
> > > > >
> > > > >   </wsdl:operation>
> > > > >  </wsdl:binding>
> > > > >  <wsdl:service name="AServicePortTypeService">
> > > > >   <wsdl:port name="AServicePortTypePort"
> > > > > binding="ns0:AServicePortTypeBinding">
> > > > >     <soap:address location="http://localhost:8090/AService"/>
> > > > >   </wsdl:port>
> > > > >  </wsdl:service>
> > > > >  <wsdl:service name="AService">
> > > > >   <wsdl:port name="AServiceHttpport"
> > > > > binding="ns0:AServiceHttpBinding">
> > > > >
> > > > >     <http:address location="http://localhost:8080/AService"/>
> > > > >   </wsdl:port>
> > > > >   <wsdl:port name="AServiceSOAP12port_http"
> > > > > binding="ns0:AServiceSOAP12Binding">
> > > > >     <soap12:address location="http://localhost:8012/AService"/>
> > > > >   </wsdl:port>
> > > > >   <wsdl:port name="AServiceSOAP11port_http"
> > > > > binding="ns0:AServiceSOAP11Binding">
> > > > >     <soap:address location="http://localhost:8011/AService"/>
> > > > >   </wsdl:port>
> > > > >  </wsdl:service>
> > > > >
> > > > > </wsdl:definitions>
> > > > > --------
> > > > >
> > > > > I have my composite one.composite as given below:
> > > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > > <composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
> > > > >   targetNamespace="http://vtest";
> > > > >   name="one">
> > > > >
> > > > >   <component name="AComponent">
> > > > >       <implementation.java
> > > > > class="org.apache.tuscany.sca.vtest.wsbinding.impl.AServiceImpl"/>
> > > > >       <service name="AService">
> > > > >           <binding.ws wsdlElement="
> > > > >
> > > > > http://wsbinding.vtest.sca.tuscany.apache.org#wsdl.service(AService)<http://wsbinding.vtest.sca.tuscany.apache.org/#wsdl.service(AService)>
> > > > > <
> > > > > http://wsbinding.vtest.sca.tuscany.apache.org/#wsdl.service(AService)>
> > > > >
> > > > > "/>
> > > > >       </service>
> > > > >   </component>
> > > > > </composite>
> > > > > --------
> > > > > Should the service be available on http://localhost:8080/AService,
> > > > > http://localhost:8012/AService and http://localhost:8011/AService?
> > > > >  With
> > > > > the current implementation, the service is available on
> > > > > http://localhost:8080/AComponent.
> > > > >
> > > > > This seems like a bug to me.  The endpoints in the WSDL should
> > > > >
> > > > take precedence over those calculated using the default algorithm
> > > > (this seems be where http://localhost:8080/AComponent is coming
> > > > from).  However, I'm not sure if the port numbers in the WSDL
> > > > can always be exposed as written.  This would depend on what
> > > > hosting environment is used, and what ports it is able to open.
> > > >
> > > >  Simon
> > > >
> > > > ++Vamsi
> > > >
> > > > >
> > > > > On Tue, May 6, 2008 at 10:50 PM, Simon Nash <[EMAIL PROTECTED]>
> > > > > wrote:
> > > > >
> > > > > Lou Amodeo wrote:
> > > > >
> > > > > > I am reading the WS Binding Specification and am trying to
> > > > > > understand
> > > > > >
> > > > > > > the
> > > > > > > meaning of the wsdl.service form of the WSDL Element's URI and
> > > > > > > to
> > > > > > > what
> > > > > > > extent and how it is supported in Tuscany?   Thanks for your
> > > > > > > help.
> > > > > > >
> > > > > > > Service:
> > > > > > >
> > > > > > > 39 <WSDL-namespace-URI>#wsdl.service(<service-name>)
> > > > > > >
> > > > > > > 40 In this case, all the endpoints in the WSDL Service that
> > > > > > > have
> > > > > > > equivalent
> > > > > > > PortTypes with
> > > > > > >
> > > > > > > 41 the SCA service or reference must be available to the SCA
> > > > > > > service
> > > > > > > or
> > > > > > > reference.
> > > > > > >
> > > > > > >  To answer this, I'll start by talking about SCA services, as
> > > > > > >
> > > > > > > the meaning in this case seems clearer.
> > > > > >
> > > > > > Suppose the WSDL document for an SCA service refers to a WSDL
> > > > > > service Service1 that has WSDL ports Port1, Port2 and Port3.
> > > > > > Port1 and Port3 use bindings that refer to PortType1, and Port2
> > > > > > uses a binding that refers to PortType2.  The interface of the
> > > > > > SCA service is either the WSDL interface PortType1, or a Java
> > > > > > interface that's equivalent to PortType1.  In this case, the
> > > > > > SCA service would be listening on both Port1 and Port3 (but
> > > > > > not Port2).
> > > > > >
> > > > > > I'm having trouble applying this to references, though.  A
> > > > > > reference would normally only invoke via one port.  I'm not sure
> > > > > > how an SCA reference that specifies the WSDL service described
> > > > > > above could make use of both Port1 amd Port3.
> > > > > >
> > > > > >  Simon
> > > > > >
> > > > > >
> > > > > >
> > >
> >
>

Reply via email to