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> >>>>>> endpoint: GreeterPort >>>>>> operation: >>>>>> {http://cxf.apache.org/jms_greeter}greetMeOneWay<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 >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >> >> > > >
