Hi Freeman,

yes the OrderService is declared as a consumer. I thought if i send a
message from OrderService to CrmService (cxfbc-su), the OrderService would
act like a client. 

OrderService cxfbc-su

<?xml version="1.0" encoding="UTF-8"?>
<beans
  xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0";
  xmlns:order="http://xxx.xxx.net/orderservice/v1/";>

  <bean
   
class="net.xxx.xxx.common.util.spring.StagePropertiesPlaceholderConfigurer"/>
  
  <cxfbc:consumer
    wsdl="classpath:orderService.wsdl"
    targetService="order:OrderService"
    targetInterface="order:orderServicePort"
    timeout="${xxx.components.cxf-bc.timeout}"
    locationURI="${xxx.components.order.service.soapurl}"
    />

</beans>


The intension was, that we can contact CRMService also directly over a
client, like the OrderService. 
Is it possible to have a cxfbc:consumer and a cxfbc:provider defined in the
xbean.xml at same time?


My understanding:

client ---> Orderservice (cxfbc-su) ----> Orderservice (cxfse-su) --->
client | OrderService = consumer

client ---> CRMService(cxfbc-su) ---> CRMService (cxfse-su) ----> client  | 
CRMService = consumer

At time, it is like following:

client ---> OrderService(cxfbc-su)   ----> Orderservice (cxfse-su) ---->
CRMServic (cxfbc-su)  ---> CRMService (cxfse-su) ---> client  |
OrderService(cxfbc-su) = consumer and CRMService = consumer 


Orderservice cxfse-su

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0";>

  <bean
class="net.xxxx.xxxx.common.util.spring.StagePropertiesPlaceholderConfigurer"/>

  <import
resource="classpath:net/xxx/xxx/components/order/springBeans.xml"/>

  <cxfse:endpoint>
    <cxfse:pojo>
      <bean class="net.xxx.xxx.components.orderservice.OrderServiceImpl">
        <property name="crmProxy" ref="crmProxy"/>
        <property name="mptProxy" ref="mptProxy"/>
        <property name="dartProxy" ref="dartProxy"/>
        <property name="orderResponse" ref="orderResponse"/>
        <property name="dummyResponses" ref="dummyResponses"/>
        <property name="orderTransformer" ref="orderTransformer"/>
        <property name="requestValidator" ref="requestValidator"/>
        <property name="crmOrderValidator" ref="crmOrderValidator"/>
        <property name="errorHandler" ref="errorHandler"/>
        <property name="transformationService" ref="transformationService"/>
        <property name="serviceLogger" ref="serviceLogger"/>
      </bean>
    </cxfse:pojo>
  </cxfse:endpoint>

  <bean id="orderTransformer"
    class="net.xxx.xxx.components.orderservice.routing.TransformationProxy"
    parent="baseProxy"/>
  
  <bean id="dateUtil"
    class="net.xxx.xxxx.common.util.domain.DateUtil"/> 

  <bean id="crmProxy"
class="net.xxx.xxx.components.orderservice.routing.CRMProxy"
    parent="baseProxy">
    <property name="orderStateMapper" ref="orderStateMapper"/>
  </bean>

  <bean id="mptProxy"
class="net.xxx.xxx.components.orderservice.routing.MPTProxy"
    parent="baseProxy"/>
    
  <bean id="dartProxy"
class="net.xxxx.xxxx.components.orderservice.routing.DARTProxy"
    parent="baseProxy">
  </bean>

  <bean id="baseProxy"
class="net.xxx.xxx.components.orderservice.routing.BaseProxy"
    abstract="true">
    <property name="jbiWrapper" ref="jbiWrapper"/>
    <property name="dateUtil" ref="dateUtil"/>
    <property name="transformer" ref="transformationService"/>
    <property name="context" ref="context"/>
    <property name="errorHandler" ref="errorHandler"/>
  </bean>

</beans>

CRMService cxfse-su

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0";>

  <!-- load all beans from a distinct file which is also used within the
JUnit Tests -->
  <import resource="classpath:net/xxx/xxx/components/crm/springBeans.xml"/>

  <cxfse:endpoint>
    <cxfse:pojo>
      <bean class="net.xxx.xxx.components.crmservice.CRMServiceImpl" >
        <property name="aladdinOrderService" ref="aladdinService"/>
        <property name="aladdinCompanyService" ref="companyService"/>
        <property name="aladdinPersonService" ref="personService"/>
        <property name="aladdinOrderItemService" ref="orderItemService"/>
        <property name="aladdinUserService" ref="userService"/>
        <property name="errorHandler" ref="errorHandler"/>
      </bean>
    </cxfse:pojo>
  </cxfse:endpoint>

</beans>




Freeman Fang wrote:
> 
> Hi Stephan,
> 
> The threaddump shows the lots of threads are waiting for the sendSync 
> return, how about you use send instead.
> 
> And I'm confused with your flow,  would you please append all your 
> configuration for each endpoint?
> For example,
> the configuration for cxfbc-su OrderService ...  it should be a 
> consumer, right
> the configuration for cxfse-su OrderService ...
> the configuration for cxfbc-su CRMService ...  what's this? only 
> provider is valid here but I can't see you have an external service, 
> this endpoint confused me,
> the configuration for cxfse-su CRMService ...
> 
> Freeman
> 
> Crimor wrote:
>> Hi,
>>
>> the Threaddump is quit large
>> http://www.nabble.com/file/p19664362/Threaddump.txt Threaddump.txt .
>>
>> Greetings
>>
>> stephan
>>
>>
>>
>> Freeman Fang wrote:
>>   
>>> Hi,
>>>
>>> Would you please dump thread stack trace when the process hang?
>>>
>>> Regards
>>> Freeman
>>>
>>> Crimor wrote:
>>>     
>>>> Hi,
>>>>
>>>> I have a cxfse-su Orderservice which should send a message to an
>>>> cxfbc-su
>>>> CRMService. This works fine on low traffic but if on high traffic it
>>>> seems
>>>> that the sendSync hangs up.
>>>>
>>>>
>>>> So I started an JMeter load tests and I take only 3 users which cause
>>>> 500
>>>> request and everything works fine but if I increase the users to > 4 it
>>>> seems that the sendsync hangs up. Without the sendSync and both
>>>> services
>>>> testet separately  the cxf OrderService and cxf CRMService works fine
>>>> within
>>>> 50 users performing 1000 requests. 
>>>>
>>>> Flow:
>>>>
>>>> client ---> cxfbc-su OrderService --> cxfse-su OrderService
>>>> ---sendSync-->
>>>> cxfbc-su CRMService ---> cxfse-su CRMService --- reponse to -->
>>>> cxfse-su
>>>> OrderService --response to -> client
>>>>
>>>>
>>>> CXF-BC CRMSERVICE xbean.xml
>>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>
>>>> <beans
>>>>   xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0";
>>>>   xmlns:order="http://test.net/crmservice/v1/";>
>>>>
>>>>   <!-- Loads the  configuration-->
>>>>   <bean
>>>>    
>>>> class="xxx.xxx.xxxx.common.util.spring.StagePropertiesPlaceholderConfigurer"/>
>>>>
>>>>   <cxfbc:consumer
>>>>     wsdl="classpath:crmService.wsdl"
>>>>     targetService="order:CRMService"
>>>>     targetInterface="order:crmServicePort"
>>>>     timeout="${xxx.components.cxf-bc.timeout}" 
>>>>     locationURI="${xxx.components.crm.service.soapurl}"/>
>>>>
>>>> </beans>
>>>>
>>>>
>>>> The CXF OrderService send method:
>>>>
>>>> protected Source sendMessage(Source xmlMessage, QName serviceName,
>>>> QName
>>>> interfaceName, QName operationName)
>>>>         throws AdFusionException {
>>>>
>>>>     ServiceMixClient client = new ServiceMixClientFacade(context);
>>>>     NormalizedMessage message = null;
>>>>     InOut exchange = null;
>>>>     try {
>>>>       exchange = client.createInOutExchange();
>>>>       message = exchange.getInMessage();
>>>>       message.setContent(xmlMessage);
>>>>
>>>>       exchange.setService(serviceName);
>>>>       exchange.setInterfaceName(interfaceName);
>>>>       exchange.setOperation(operationName);
>>>>       // sending the message
>>>>       client.sendSync(exchange);
>>>>     } catch (MessagingException e) {
>>>>       StringBuilder sb = new StringBuilder();
>>>>       logger.error("sendMessage() - " + sb.toString(), e);
>>>>       throw new AdFusionException(sb.toString(), e);
>>>>     }
>>>>     // retrieving the answer
>>>>     // logger.info("sendMessage() - exchange: " + exchange);
>>>>     // logger.info("sendMessage() - exchange.getOutMessage(): " +
>>>> exchange.getOutMessage());
>>>>
>>>>     Source source = getContentFromMessage(exchange);
>>>>
>>>>     try {
>>>>       client.done(exchange);
>>>>     } catch (MessagingException e) {
>>>>       String msg = "Error setting status of response to
>>>> ExchangeStatus.DONE";
>>>>       logger.error("sendMessage() - " + msg + ": " + e.getMessage());
>>>>     } finally {
>>>>       try {
>>>>         client.close();
>>>>       } catch (JBIException e) {
>>>>         String msg = "Error closing client";
>>>>         logger.error("sendMessage() - " + msg + ": " + e.getMessage());
>>>>       }
>>>>     }
>>>>
>>>>     if (source == null) {
>>>>       throw new AdFusionException("Source could not be retrieved from
>>>> exchange.");
>>>>     }
>>>>     return source;
>>>>   }
>>>>
>>>>   private StringSource getContentFromMessage(InOut exchange) {
>>>>     Source source = null;
>>>>     if (exchange != null) {
>>>>       if (exchange.getFault() != null) {
>>>>         Fault fault = exchange.getFault();
>>>>         logger.debug("getContentFromMessage() - retrieving fault: " +
>>>> fault);
>>>>         source = fault.getContent();
>>>>       } else {
>>>>         if (exchange.getOutMessage() != null) {
>>>>           NormalizedMessage message = exchange.getOutMessage();
>>>>           logger.debug("getContentFromMessage() - retrieving message: "
>>>> +
>>>> message);
>>>>           source = message.getContent();
>>>>         } else {
>>>>           logger
>>>>                 .error("getContentFromMessage() - The CRM System did
>>>> not
>>>> answer, exchange.getOutMessage() and exchange.getFault() is null.
>>>> Please
>>>> check the CRM Log files.");
>>>>           AdfError adfError =
>>>> errorHandler.getById(AdfErrorCode.NO_CRM_ANSWER);
>>>>           throw new AdFusionException(AdfErrorCode.NO_CRM_ANSWER,
>>>> adfError);
>>>>         }
>>>>       }
>>>>     } else {
>>>>       logger.error("getContentFromMessage() - exchange was null");
>>>>     }
>>>>     String resource = jbiWrapper.sourceToString(source, false, false);
>>>>     StringSource stringSource = new StringSource(resource);
>>>>     logger.debug("getContentFromMessage() - Returned source: " +
>>>> resource);
>>>>     return stringSource;
>>>>   }
>>>>
>>>> May you can help me?
>>>>
>>>> Greetings 
>>>> Stephan
>>>>
>>>>   
>>>>       
>>>
>>>     
>>
>>   
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/sendSync-hangs-on-Loadtest.-tp19643829p19666393.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to