Freeman, 

I have two operation create and modify in portType,  but both operation  in
parameters are same type(schema),  I mean there is no difference in message
payload. 

i am using camel CBR for routing.  But Is there any way to identify the
message from which operation(create/update) in camel cbr, based on header or
any other attribute as I can't makeout the difference in message payload?? 
, 

thanks 

Brijesh N K



brijesh wrote:
> 
> what i mean by multiple schema is , as you mentioned in your response  I
> can have different in/out parameter with different types(schemas) for each
> of this operations in a portType , I can still validate all of those
> schemas with turning on schemaValidation as you mentioned in ur last
> reponse, 
> 
> thanks Freeman this calrifies my doubt, 
> 
> Brijesh N K   
> 
> 
> Freeman Fang wrote:
>> 
>> brijesh wrote:
>>> thanks a lot Freeman for clarifying my doubts, yea i understand that
>>> even if
>>> a portType having multiple operations will allways have single
>>> targetService
>>> in cxf-bc. 
>>>
>>> But when a client generated through wsdl having portType with multiple
>>> operations. It will have multiple method, client can call this method,
>>> but i
>>> hope cxf-bc will still route it to a single targetService for any of
>>> this
>>> method called by client , when we configure this service(with portType
>>> with
>>> multiple opreration) cxf-bc will not throw any error.   
>>>   
>> Yeah, of course cxf bc support one portype with multiple operations.
>> The method identification and dispatch is based on the service model 
>> (which is generated from the wsdl model), so you needn't worry about the 
>> multiple operations issue yourself.
>>> but I was wodering how cxf-bc will take care schema validation. Each
>>> operation will have different in/out parameter, if we need to validate
>>> schema how will cxf-bc take care, can we have multple schema validation
>>> for
>>> a single cxf-bc end points???
>>>   
>> I can't follow what you mean here about multiple schema validation.
>> But of course you can import multiple xsd files into your wsdl, which 
>> will be used for schema validation if you turn the schemaValidation on, 
>> something like
>>  <jaxws:endpoint name="{http://apache.org/hello_world_soap_http}SoapPort";
>> wsdlLocation="wsdl/hello_world.wsdl"
>>  createdFromAPI="true">
>>  <jaxws:properties>
>> <entry key="schema-validation-enabled" value="true" />
>>  </jaxws:properties>
>>  </jaxws:endpoint>
>> 
>> Freeman
>> 
>> 
>> 
>>> thanks 
>>> Brijesh N K
>>>
>>>
>>>
>>>
>>>
>>> Freeman Fang wrote:
>>>   
>>>> brijesh wrote:
>>>>     
>>>>> thanks freeman for the response , 
>>>>> I do understand by using cxf-camel , i can route the to different 
>>>>> targetService. 
>>>>>
>>>>> But my doubt is , based on wsdl & porttype operation is there a
>>>>> possibility
>>>>> in cxf-bc xbean to give different targetService? 
>>>>> Something like , matching service name in wsdl with cxf-bc service
>>>>> attribute, is there any way to match portType operation in wsdl &
>>>>> cxf-bc
>>>>> to
>>>>> match and pass the message to different targetService??
>>>>>
>>>>>   
>>>>>       
>>>> No.
>>>> The relationship between service porttype and operation is
>>>>
>>>> service--->porttype -- operation1
>>>>                               |---operation2
>>>>                               |----operation n
>>>> there is noway cxf can route different message based on operation to 
>>>> different targetService, since only one targetService could be defined 
>>>> for cxf bc consumer. CBR should be taken care of by servicemix-eip or 
>>>> servicemix-camel
>>>>
>>>> One way is you can split your wsdl, define two portType and two
>>>> service, 
>>>> each portType have different operation, and use two cxf bc consumers.
>>>>
>>>> Freeman
>>>>
>>>>     
>>>>> Thanks 
>>>>> Brijesh N K  
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Freeman Fang wrote:
>>>>>   
>>>>>       
>>>>>> brijesh wrote:
>>>>>>     
>>>>>>         
>>>>>>> hello , 
>>>>>>>
>>>>>>> I need to know how to configure wsdl operations in cxf-bc xbean,
>>>>>>>
>>>>>>> the following is scenario 
>>>>>>>
>>>>>>> wsdl having portype as follows 
>>>>>>>
>>>>>>>            <wsdl:portType name="ContractPortType">
>>>>>>>                 <wsdl:operation name="createContract">
>>>>>>>                         <wsdl:input message="eka:createContractRequest" 
>>>>>>> />
>>>>>>>                         <wsdl:output 
>>>>>>> message="eka:createContractResponse" />
>>>>>>>             
>>>>>>>             <wsdl:fault name="fault"
>>>>>>> message="eka:createContract_faultMsg1"></wsdl:fault>
>>>>>>>         </wsdl:operation>
>>>>>>>                 <wsdl:operation name="modifyContract">
>>>>>>>                         <wsdl:input 
>>>>>>> message="eka:modifyContractRequest"></wsdl:input>
>>>>>>>                         <wsdl:output 
>>>>>>> message="eka:modifyContractResponse"></wsdl:output>
>>>>>>>             
>>>>>>>             <wsdl:fault name="fault"
>>>>>>> message="eka:modifyContract_faultMsg1"></wsdl:fault>
>>>>>>>         </wsdl:operation>
>>>>>>>
>>>>>>>     </wsdl:portType>
>>>>>>>
>>>>>>> the following service for the above port 
>>>>>>>
>>>>>>>             <wsdl:service name="ContractService">
>>>>>>>              <wsdl:port binding="eka:ContractBinding"
>>>>>>> name="ContractServicePort">
>>>>>>>                 <soap:address 
>>>>>>> location="http://localhost:8092/ContractService"; />
>>>>>>>                 </wsdl:port>
>>>>>>>         </wsdl:service>
>>>>>>>
>>>>>>> cxf-bc configureation as follows 
>>>>>>>
>>>>>>>
>>>>>>>  <cxfbc:consumer wsdl="classpath:contract.wsdl"
>>>>>>>         service="eka:ContractService"
>>>>>>>         targetService="eka:contractBeanRouter"
>>>>>>>         useJBIWrapper="false" 
>>>>>>>         useSOAPEnvelope="false"
>>>>>>>       />
>>>>>>>
>>>>>>> above xbean i can configure only one targetService, but service
>>>>>>> client
>>>>>>> can
>>>>>>> make call to createContract and modifyContract operations(see the
>>>>>>> above
>>>>>>> wsdl
>>>>>>> operations declaration in port type), both calls are going to same
>>>>>>> targetService. 
>>>>>>> wondering is there any way to configure multiple targetService based
>>>>>>> on
>>>>>>> my
>>>>>>> wsdl operation?? like createContract should have contractBeanRouter
>>>>>>> ,
>>>>>>> modifyContract should have modifyContractBeanRouter  as
>>>>>>> targetService?. 
>>>>>>>
>>>>>>> i can't define one more cxfbc conf with same service with different
>>>>>>> target
>>>>>>> space, it gives error as duplicate endpoint defined 
>>>>>>>   
>>>>>>>       
>>>>>>>           
>>>>>> For your case, you want route to different target Service based on 
>>>>>> different operation.
>>>>>> You can archieve it by using servicemix-eip or servicemix-camel, 
>>>>>> something like content based routing
>>>>>> The flow looks like
>>>>>>
>>>>>> external client ====> cxf bc consumer====> servicemix-eip or 
>>>>>> servicemix-camel ====> your different target service based on
>>>>>> different 
>>>>>> operation.
>>>>>>
>>>>>> Freeman
>>>>>>     
>>>>>>         
>>>>>>> Any idea on this
>>>>>>>
>>>>>>> thanks 
>>>>>>> Brijesh N K 
>>>>>>>   
>>>>>>>       
>>>>>>>           
>>>>>>     
>>>>>>         
>>>>>   
>>>>>       
>>>>
>>>>     
>>>
>>>   
>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/wsdl-PortType-and-Operations-in-cxf-bc-tp21513762p21539021.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to