Hi Freeman, Now I am trying to use JMeter having a load test on the case that I showed to you in this mail. Do you have any experience working on it that can share with us?
Thanks & best regards Jackey 2008/4/28 Jackey Ding <[EMAIL PROTECTED]>: > Ok, Thanks Freeman. > > Jackey > > 2008/4/28 Freeman Fang <[EMAIL PROTECTED]>: > > Btw, you shouldn't use locationURI for the cxf bc provider configuration > > with jms transport, we just parse it from the wsdl. > > > > Cheers > > > > Freeman > > > > Freeman Fang wrote: > > > Hi Jackey, > > > > > > get this issue fixed > > > > > > Freeman > > > > > > Freeman Fang wrote: > > > > > >> Hi Jackey, > > >> > > >> >From the log, JMSConduit shouldn't wait for response since it's > > oneway > > >> method. > > >> I go through the code and found there is a bug for oneway invocation, > > >> fill jira [1] to track it. > > >> > > >> I will fix it up asap > > >> [1]https://issues.apache.org/activemq/browse/SM-1334 > > >> > > >> Freeman > > >> > > >> Jackey Ding wrote: > > >> > > >> > > >>> Any response? > > >>> > > >>> Jackey > > >>> > > >>> 2008/4/25 Jackey Ding <[EMAIL PROTECTED]>: > > >>> > > >>> > > >>> > > >>> > > >>>> Hi Freeman, > > >>>> > > >>>> 1. I have a JMS provider running outside of SMX, the WSDL is > > >>>> <wsdl:definitions name="JMSGreeterService" > > >>>> targetNamespace="http://cxf.apache.org/jms_greeter" > > >>>> xmlns="http://schemas.xmlsoap.org/wsdl/" > > >>>> xmlns:jms="http://cxf.apache.org/transports/jms" > > >>>> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > > >>>> xmlns:tns="http://cxf.apache.org/jms_greeter" > > >>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > >>>> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > > >>>> xmlns:x1="http://cxf.apache.org/jms_greeter/types"> > > >>>> <wsdl:types> > > >>>> <schema targetNamespace=" > > http://cxf.apache.org/jms_greeter/types" > > >>>> xmlns="http://www.w3.org/2001/XMLSchema" > > >>>> elementFormDefault="qualified"> > > >>>> <element name="sayHi"> > > >>>> <complexType/> > > >>>> </element> > > >>>> <element name="sayHiResponse"> > > >>>> <complexType> > > >>>> <sequence> > > >>>> <element name="responseType" > > type="xsd:string"/> > > >>>> </sequence> > > >>>> </complexType> > > >>>> </element> > > >>>> <element name="greetMe"> > > >>>> <complexType> > > >>>> <sequence> > > >>>> <element name="requestType" > > type="xsd:string"/> > > >>>> </sequence> > > >>>> </complexType> > > >>>> </element> > > >>>> <element name="greetMeResponse"> > > >>>> <complexType> > > >>>> <sequence> > > >>>> <element name="responseType" > > type="xsd:string"/> > > >>>> </sequence> > > >>>> </complexType> > > >>>> </element> > > >>>> <element name="greetMeOneWay"> > > >>>> <complexType> > > >>>> <sequence> > > >>>> <element name="requestType" > > type="xsd:string"/> > > >>>> </sequence> > > >>>> </complexType> > > >>>> </element> > > >>>> </schema> > > >>>> </wsdl:types> > > >>>> > > >>>> > > >>>> <wsdl:message name="sayHiRequest"> > > >>>> <wsdl:part element="x1:sayHi" name="in"/> > > >>>> </wsdl:message> > > >>>> <wsdl:message name="sayHiResponse"> > > >>>> <wsdl:part element="x1:sayHiResponse" name="out"/> > > >>>> </wsdl:message> > > >>>> <wsdl:message name="greetMeRequest"> > > >>>> <wsdl:part element="x1:greetMe" name="in"/> > > >>>> </wsdl:message> > > >>>> <wsdl:message name="greetMeResponse"> > > >>>> <wsdl:part element="x1:greetMeResponse" name="out"/> > > >>>> </wsdl:message> > > >>>> <wsdl:message name="greetMeOneWayRequest"> > > >>>> <wsdl:part element="x1:greetMeOneWay" name="in"/> > > >>>> </wsdl:message> > > >>>> > > >>>> <wsdl:portType name="JMSGreeterPortType"> > > >>>> <wsdl:operation name="sayHi"> > > >>>> <wsdl:input message="tns:sayHiRequest" > > name="sayHiRequest"/> > > >>>> <wsdl:output message="tns:sayHiResponse" > > >>>> name="sayHiResponse"/> > > >>>> </wsdl:operation> > > >>>> > > >>>> <wsdl:operation name="greetMe"> > > >>>> <wsdl:input message="tns:greetMeRequest" > > >>>> name="greetMeRequest"/> > > >>>> <wsdl:output message="tns:greetMeResponse" > > >>>> name="greetMeResponse"/> > > >>>> </wsdl:operation> > > >>>> > > >>>> <wsdl:operation name="greetMeOneWay"> > > >>>> <wsdl:input message="tns:greetMeOneWayRequest" > > >>>> name="greetMeOneWayRequest"/> > > >>>> </wsdl:operation> > > >>>> </wsdl:portType> > > >>>> > > >>>> <wsdl:binding name="JMSGreeterPortBinding" > > >>>> type="tns:JMSGreeterPortType"> > > >>>> <soap:binding style="document" transport=" > > >>>> http://cxf.apache.org/transport/jms"/< > > http://cxf.apache.org/transport/jms%22/> > > >>>> > > >>>> <wsdl:operation name="greetMe"> > > >>>> <soap:operation soapAction="" style="document"/> > > >>>> <wsdl:input name="greetMeRequest"> > > >>>> <soap:body use="literal"/> > > >>>> </wsdl:input> > > >>>> <wsdl:output name="greetMeResponse"> > > >>>> <soap:body use="literal"/> > > >>>> </wsdl:output> > > >>>> </wsdl:operation> > > >>>> > > >>>> <wsdl:operation name="sayHi"> > > >>>> <soap:operation soapAction="" style="document"/> > > >>>> <wsdl:input name="sayHiRequest"> > > >>>> <soap:body use="literal"/> > > >>>> </wsdl:input> > > >>>> <wsdl:output name="sayHiResponse"> > > >>>> <soap:body use="literal"/> > > >>>> </wsdl:output> > > >>>> </wsdl:operation> > > >>>> > > >>>> <wsdl:operation name="greetMeOneWay"> > > >>>> <soap:operation soapaction="" style="document"/> > > >>>> <wsdl:input name="greetMeOneWayRequest"> > > >>>> <soap:body use="literal"/> > > >>>> </wsdl:input> > > >>>> </wsdl:operation> > > >>>> </wsdl:binding> > > >>>> > > >>>> <wsdl:service name="JMSGreeterService"> > > >>>> <wsdl:port binding="tns:JMSGreeterPortBinding" > > >>>> name="GreeterPort"> > > >>>> <jms:address > > >>>> destinationStyle="queue" > > >>>> jndiConnectionFactoryName="ConnectionFactory" > > >>>> > > >>>> jndiDestinationName="dynamicQueues/test.cxf.jmstransport.queue"> > > >>>> > > >>>> <jms:JMSNamingProperty > > >>>> name="java.naming.factory.initial" > > >>>> value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/> > > >>>> <jms:JMSNamingProperty > > name="java.naming.provider.url" > > >>>> value="tcp://yfgm-2003b:61616"/> > > >>>> > > >>>> </jms:address> > > >>>> </wsdl:port> > > >>>> </wsdl:service> > > >>>> </wsdl:definitions> > > >>>> > > >>>> 2. I create a CXF-BC provider to communicate with that serivce. the > > wsdl > > >>>> is just as the same with above, the xbean.xml is > > >>>> <?xml version="1.0" encoding="UTF-8"?> > > >>>> <beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0" > > >>>> xmlns:greeter="http://cxf.apache.org/jms_greeter"> > > >>>> <cxfbc:provider wsdl="classpath:[EMAIL PROTECTED]" > > >>>> locationURI="tcp://yfgm-2003b:61616" > > >>>> service="greeter:JMSGreeterService" > > >>>> endpoint="GreeterPort"/> > > >>>> </beans> > > >>>> > > >>>> 3. Create a CXF-BC consumer as a proxied endpoint that other > > application > > >>>> can access the service via SMX, the xbean.xml is > > >>>> <?xml version="1.0" encoding="UTF-8"?> > > >>>> <beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0" > > >>>> xmlns:greeter="http://cxf.apache.org/jms_greeter"> > > >>>> <cxfbc:consumer wsdl="classpath:[EMAIL PROTECTED]" > > >>>> service="greeter:JMSGreeterService" > > >>>> endpoint="GreeterPort2" > > >>>> targetEndpoint="GreeterPort" > > >>>> targetService="greeter:JMSGreeterService" > > >>>> /> > > >>>> </beans> > > >>>> > > >>>> And the WSDL is > > >>>> <wsdl:definitions name="JMSGreeterService" > > >>>> targetNamespace="http://cxf.apache.org/jms_greeter" > > >>>> xmlns="http://schemas.xmlsoap.org/wsdl/" > > >>>> xmlns:jms="http://cxf.apache.org/transports/jms" > > >>>> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > > >>>> xmlns:tns="http://cxf.apache.org/jms_greeter" > > >>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > >>>> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > > >>>> xmlns:x1="http://cxf.apache.org/jms_greeter/types"> > > >>>> <wsdl:types> > > >>>> <schema targetNamespace=" > > http://cxf.apache.org/jms_greeter/types" > > >>>> xmlns="http://www.w3.org/2001/XMLSchema" > > >>>> elementFormDefault="qualified"> > > >>>> <element name="sayHi"> > > >>>> <complexType/> > > >>>> </element> > > >>>> <element name="sayHiResponse"> > > >>>> <complexType> > > >>>> <sequence> > > >>>> <element name="responseType" > > type="xsd:string"/> > > >>>> </sequence> > > >>>> </complexType> > > >>>> </element> > > >>>> <element name="greetMe"> > > >>>> <complexType> > > >>>> <sequence> > > >>>> <element name="requestType" > > type="xsd:string"/> > > >>>> </sequence> > > >>>> </complexType> > > >>>> </element> > > >>>> <element name="greetMeResponse"> > > >>>> <complexType> > > >>>> <sequence> > > >>>> <element name="responseType" > > type="xsd:string"/> > > >>>> </sequence> > > >>>> </complexType> > > >>>> </element> > > >>>> <element name="greetMeOneWay"> > > >>>> <complexType> > > >>>> <sequence> > > >>>> <element name="requestType" > > type="xsd:string"/> > > >>>> </sequence> > > >>>> </complexType> > > >>>> </element> > > >>>> </schema> > > >>>> </wsdl:types> > > >>>> > > >>>> > > >>>> <wsdl:message name="sayHiRequest"> > > >>>> <wsdl:part element="x1:sayHi" name="in"/> > > >>>> </wsdl:message> > > >>>> <wsdl:message name="sayHiResponse"> > > >>>> <wsdl:part element="x1:sayHiResponse" name="out"/> > > >>>> </wsdl:message> > > >>>> <wsdl:message name="greetMeRequest"> > > >>>> <wsdl:part element="x1:greetMe" name="in"/> > > >>>> </wsdl:message> > > >>>> <wsdl:message name="greetMeResponse"> > > >>>> <wsdl:part element="x1:greetMeResponse" name="out"/> > > >>>> </wsdl:message> > > >>>> <wsdl:message name="greetMeOneWayRequest"> > > >>>> <wsdl:part element="x1:greetMeOneWay" name="in"/> > > >>>> </wsdl:message> > > >>>> > > >>>> <wsdl:portType name="JMSGreeterPortType"> > > >>>> <wsdl:operation name="sayHi"> > > >>>> <wsdl:input message="tns:sayHiRequest" > > name="sayHiRequest"/> > > >>>> <wsdl:output message="tns:sayHiResponse" > > >>>> name="sayHiResponse"/> > > >>>> </wsdl:operation> > > >>>> > > >>>> <wsdl:operation name="greetMe"> > > >>>> <wsdl:input message="tns:greetMeRequest" > > >>>> name="greetMeRequest"/> > > >>>> <wsdl:output message="tns:greetMeResponse" > > >>>> name="greetMeResponse"/> > > >>>> </wsdl:operation> > > >>>> > > >>>> <wsdl:operation name="greetMeOneWay"> > > >>>> <wsdl:input message="tns:greetMeOneWayRequest" > > >>>> name="greetMeOneWayRequest"/> > > >>>> </wsdl:operation> > > >>>> </wsdl:portType> > > >>>> > > >>>> <wsdl:binding name="JMSGreeterPortBinding" > > >>>> type="tns:JMSGreeterPortType"> > > >>>> <soap:binding style="document" transport=" > > >>>> http://cxf.apache.org/transport/jms"/< > > http://cxf.apache.org/transport/jms%22/> > > >>>> > > >>>> <wsdl:operation name="greetMe"> > > >>>> <soap:operation soapAction="" style="document"/> > > >>>> <wsdl:input name="greetMeRequest"> > > >>>> <soap:body use="literal"/> > > >>>> </wsdl:input> > > >>>> <wsdl:output name="greetMeResponse"> > > >>>> <soap:body use="literal"/> > > >>>> </wsdl:output> > > >>>> </wsdl:operation> > > >>>> > > >>>> <wsdl:operation name="sayHi"> > > >>>> <soap:operation soapAction="" style="document"/> > > >>>> <wsdl:input name="sayHiRequest"> > > >>>> <soap:body use="literal"/> > > >>>> </wsdl:input> > > >>>> <wsdl:output name="sayHiResponse"> > > >>>> <soap:body use="literal"/> > > >>>> </wsdl:output> > > >>>> </wsdl:operation> > > >>>> > > >>>> <wsdl:operation name="greetMeOneWay"> > > >>>> <soap:operation style="document"/> > > >>>> <wsdl:input name="greetMeOneWayRequest"> > > >>>> <soap:body use="literal"/> > > >>>> </wsdl:input> > > >>>> </wsdl:operation> > > >>>> </wsdl:binding> > > >>>> > > >>>> <wsdl:service name="JMSGreeterService"> > > >>>> <wsdl:port binding="tns:JMSGreeterPortBinding" > > >>>> name="GreeterPort2"> > > >>>> <jms:address > > >>>> destinationStyle="queue" > > >>>> jndiConnectionFactoryName="ConnectionFactory" > > >>>> > > >>>> jndiDestinationName="dynamicQueues/test.cxf.jmstransport.queue"> > > >>>> > > >>>> <jms:JMSNamingProperty > > >>>> name="java.naming.factory.initial" > > >>>> value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/> > > >>>> <jms:JMSNamingProperty > > name="java.naming.provider.url" > > >>>> value="tcp://localhost:61616"/> > > >>>> > > >>>> </jms:address> > > >>>> </wsdl:port> > > >>>> </wsdl:service> > > >>>> </wsdl:definitions> > > >>>> > > >>>> 4. Then I run the client, the error occur like I show in the > > pervious > > >>>> mail. > > >>>> public final class Client { > > >>>> private Client() { > > >>>> } > > >>>> public static void main(String[] args) throws Exception { > > >>>> > > >>>> if (args.length == 0) { > > >>>> System.out.println("please specify wsdl"); > > >>>> System.exit(1); > > >>>> } > > >>>> > > >>>> if (args.length == 1) { > > >>>> System.out.println("please specify url"); > > >>>> System.exit(1); > > >>>> } > > >>>> > > >>>> if (args.length == 2) { > > >>>> System.out.println("please specify Service Name"); > > >>>> System.exit(1); > > >>>> } > > >>>> > > >>>> if (args.length == 3) { > > >>>> System.out.println("please specify Port Name"); > > >>>> System.exit(1); > > >>>> } > > >>>> > > >>>> final QName SERVICE_NAME = > > >>>> new QName(args[1], args[2]); > > >>>> final QName PORT_NAME = > > >>>> new QName(args[1], args[3]); > > >>>> File wsdl = new File(args[0]); > > >>>> JMSGreeterService service = new > > JMSGreeterService(wsdl.toURL(), > > >>>> SERVICE_NAME); > > >>>> JMSGreeterPortType greeter = > > >>>> (JMSGreeterPortType)service.getPort(PORT_NAME, > > JMSGreeterPortType.class); > > >>>> System.out.println("Invoking sayHi..."); > > >>>> System.out.println("server responded with: " + > > greeter.sayHi()); > > >>>> System.out.println(); > > >>>> System.out.println("Invoking greetMe..."); > > >>>> System.out.println("server responded with: " + > > >>>> greeter.greetMe(System.getProperty("user.name"))); > > >>>> System.out.println(); > > >>>> System.out.println("Invoking greetMeOneWay..."); > > >>>> greeter.greetMeOneWay(System.getProperty("user.name")); > > >>>> System.out.println("No response from server as method is > > OneWay"); > > >>>> System.out.println(); > > >>>> > > >>>> System.exit(0); > > >>>> } > > >>>> } > > >>>> Thanks & best regards > > >>>> Jackey > > >>>> > > >>>> 2008/4/25 Freeman Fang <[EMAIL PROTECTED]>: > > >>>> > > >>>> Hi Jackey, > > >>>> > > >>>> > > >>>> > > >>>>> How you run the tests in smx? Using maven? > > >>>>> And just append your configuration. > > >>>>> > > >>>>> Regards > > >>>>> > > >>>>> Freeman > > >>>>> > > >>>>> Jackey Ding wrote: > > >>>>> > > >>>>> > > >>>>> > > >>>>>> hi, > > >>>>>> > > >>>>>> I just run some cxf-bc tests in smx. All the cases are run ok, > > but I > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> found > > >>>>> > > >>>>> > > >>>>> > > >>>>>> some error message show in the smx console. Is something wrong > > with my > > >>>>>> configurations? > > >>>>>> > > >>>>>> 2008-4-25 13:06:12 org.apache.cxf.transport.jms.JMSConduit > > receive > > >>>>>> 严重: JMSClientTransport.receive() timed out. No message available. > > >>>>>> ERROR - CxfBcComponent - Error processing > > exchange > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> InOnly[ > > >>>>> > > >>>>> > > >>>>> > > >>>>>> id: ID:192.168.1.8-11983ed72fd-4:3 > > >>>>>> status: Active > > >>>>>> role: provider > > >>>>>> service: > > >>>>>> {http://cxf.apache.org/jms_greeter}JMSGreeterService<http://cxf.apache.org/jms_greeter%7DJMSGreeterService> > > <http://cxf.apache.org/jms_greeter%7DJMSGreeterService> > > >>>>>> endpoint: GreeterPort > > >>>>>> operation: > > >>>>>> {http://cxf.apache.org/jms_greeter}greetMeOneWay<http://cxf.apache.org/jms_greeter%7DgreetMeOneWay> > > <http://cxf.apache.org/jms_greeter%7DgreetMeOneWay> > > >>>>>> in: <?xml version="1.0" encoding="UTF-8"?><jbi:message > > xmlns:jbi=" > > >>>>>> http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper" xmlns:msg=" > > >>>>>> http://cxf.apache.org/j > > >>>>>> ms_greeter" name="greetMeOneWayRequest" > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> type="msg:greetMeOneWayRequest" > > >>>>> > > >>>>> > > >>>>> > > >>>>>> version="1.0"><jbi:part><greetMeOneWay xmlns=" > > >>>>>> http://cxf.apache.org/jms_greete > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > r/types"><requestType>Administrator</requestType></greetMeOneWay></jbi:part></jbi:message> > > >>>>> > > >>>>> > > >>>>> > > >>>>>> ] > > >>>>>> java.io.IOException: javax.jms.JMSException: > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> JMSClientTransport.receive() > > >>>>> > > >>>>> > > >>>>> > > >>>>>> timed out. No message available. > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > org.apache.cxf.transport.jms.JMSConduit$JMSOutputStream.handleResponse(JMSConduit.java:369) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > org.apache.cxf.transport.jms.JMSConduit$JMSOutputStream.doClose(JMSConduit.java:258) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:156) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > org.apache.servicemix.cxfbc.CxfBcProvider.process(CxfBcProvider.java:200) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:538) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:490) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > > >>>>> > > >>>>> > > >>>>> > > >>>>>> at java.lang.Thread.run(Thread.java:595) > > >>>>>> > > >>>>>> Thanks & best regards > > >>>>>> Jackey > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > >>>>> > > >>>>> > > >> > > >> > > > > > > > > > > > > > >
