You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by brijesh <br...@gmail.com> on 2009/01/17 08:07:58 UTC

wsdl PortType and Operations in cxf-bc

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 

Any idea on this

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


Re: wsdl PortType and Operations in cxf-bc

Posted by brijesh <br...@gmail.com>.
thanks a lot for the response Freeman, now i can implement this 

regards

Brijesh N K



Freeman Fang wrote:
> 
> brijesh wrote:
>> 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?? 
>> , 
>>
>>   
> After processed by cxf bc consumer, the MessageExchange reach to your 
> camel component should be set operationName, you can get it by
> me.getOperation(),
> this will tell your camel it's create or update operation
> Freeman
>> 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-tp21513762p21541604.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: wsdl PortType and Operations in cxf-bc

Posted by brijesh <br...@gmail.com>.
Freeman , 

I am not getting getOperation() method in configure method ? it would be
great if u can give a code snippet or web link for sample implimentation??? 

following is my code I tried to implement it 

public class MyRouteBuilder extends RouteBuilder {

		   public void configure() {

		      from(jbi:service:http://esbinaction.com/helloworld/camelReceiver").
		    	  to("jbi:service:http://esbinaction.com/helloworld/sender");

		   }

		
}

in the above process i am not getting the getOperation() 

thanks a lot for the help 

Brijesh N K




Freeman Fang wrote:
> 
> brijesh wrote:
>> 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?? 
>> , 
>>
>>   
> After processed by cxf bc consumer, the MessageExchange reach to your 
> camel component should be set operationName, you can get it by
> me.getOperation(),
> this will tell your camel it's create or update operation
> Freeman
>> 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-tp21513762p21542631.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: wsdl PortType and Operations in cxf-bc

Posted by Freeman Fang <fr...@gmail.com>.
brijesh wrote:
> 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?? 
> , 
>
>   
After processed by cxf bc consumer, the MessageExchange reach to your 
camel component should be set operationName, you can get it by
me.getOperation(),
this will tell your camel it's create or update operation
Freeman
> 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 
>>>>>>>>   
>>>>>>>>       
>>>>>>>>           
>>>>>>>>                 
>>>>>>>     
>>>>>>>         
>>>>>>>               
>>>>>>   
>>>>>>       
>>>>>>             
>>>>>     
>>>>>           
>>>>   
>>>>         
>>>
>>>       
>>     
>
>   


Re: wsdl PortType and Operations in cxf-bc

Posted by brijesh <br...@gmail.com>.
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.


Re: wsdl PortType and Operations in cxf-bc

Posted by brijesh <br...@gmail.com>.
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-tp21513762p21537368.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: wsdl PortType and Operations in cxf-bc

Posted by Freeman Fang <fr...@gmail.com>.
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 
>>>>>   
>>>>>       
>>>>>           
>>>>     
>>>>         
>>>   
>>>       
>>
>>     
>
>   


Re: wsdl PortType and Operations in cxf-bc

Posted by brijesh <br...@gmail.com>.
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.   

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???

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-tp21513762p21537056.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: wsdl PortType and Operations in cxf-bc

Posted by Freeman Fang <fr...@gmail.com>.
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 
>>>   
>>>       
>>
>>     
>
>   


Re: wsdl PortType and Operations in cxf-bc

Posted by brijesh <br...@gmail.com>.
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??

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-tp21513762p21515101.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: wsdl PortType and Operations in cxf-bc

Posted by Freeman Fang <fr...@gmail.com>.
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 
>