That would be nice, thx a lot! On 9/29/07, Willem Jiang <[EMAIL PROTECTED]> wrote: > Hi Guillaume, > > I will add some supports of creating the consumer server with just WSDL > url in the MESSAGE and PAYLOAD date formate mode in CXF component. > > I saw you just committed codes , you already created a server that can > consume the soap message. I'd like to fill the codes of exchanging the > messages with camel core. > > Willem. > > Guillaume Nodet wrote: > > I'm thinking that usually, if the target endpoint is not a jaxws pojo, > > we will often use an xml based content rather than marshal the data, > > so that you can do content based routing, transformation, etc... > > > > Btw, I'm working on the "soap:" component when time permits. If you > > ever want to look at it and work on it, just tell ! I've just > > committed a few things for that but we still need to fill the holes > > with cxf related code. > > > > On 9/29/07, Willem Jiang <[EMAIL PROTECTED]> wrote: > > > >> Hi Guillaume, > >> > >> Good questions. We could face lots of situations without Service > >> Endpoint Interface (SEI) provided for the endpoint. > >> > >> Current CXF DynmaicClientFactory[1] can create a client just use by > >> passing the wsdl url information into it , and use XJC to build up the > >> type classes for the message marshal and unmarshal . > >> For the Server side, I think we can do the same thing here by using > >> WSDL2Java to generate the SEI and type class. > >> > >> So we could support both WSDL first and Code first programing mode here, > >> and the SEI just be a optional parameter. > >> [1]https://svn.apache.org/repos/asf/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java > >> > >> > >> Willem. > >> > >> Guillaume Nodet wrote: > >> > >>> That's a bit better. > >>> But what if your service is not implemented using jaxws ? If you have > >>> a BPEL process rather than a pojo ? Or if your service is implemented > >>> by multiple small services and you use a CBR using the operation name > >>> to dispatch the request ? > >>> Or whatever use case one can imagine... > >>> > >>> On the consumer side, the role of CXF is to handle SOAP and WS-* > >>> stuff. This mainly relies on the WSDL rather than on a POJO. Using > >>> the pojo will certainly be handy if using code first approach, but we > >>> also need to support wsdl first, and especially when there is no POJO > >>> at all... > >>> > >>> I see the externalEndpoint uses a wsdlURL... (relative to what ?) Can > >>> both endpoints use only the WSDL so that the serviceClass becomes > >>> optional ? > >>> > >>> On 9/28/07, Willem Jiang <[EMAIL PROTECTED]> wrote: > >>> > >>> > >>>> Hi Guillaume, > >>>> > >>>> Oh, I got your means. > >>>> > >>>> I don't want to instantiate the Service from Spring , I just want to > >>>> pass enough endpoint information to build the CXF Service. I check the > >>>> server object code, and I know I can't set the invoker of a already > >>>> created server . > >>>> So I changed my proposal to use a customized CxfEndpointBean instead > >>>> of the already instantiate server object or client object. > >>>> Here is the changed example: > >>>> > >>>> <cxf:CxfEndpointBean id= "routerPoint" > >>>> serviceClass="org.apache.cxf.service.factory.HelloService" > >>>> address="http://localhost:8000/router" > >>>> serviceName="s:XMLService" > >>>> xmlns:s="http://apache.org/hello_world_soap_http" > >>>> endpointName="s:XMLPort" /> > >>>> > >>>> <cxf:CxfEndpointBean id= "externalPoint" > >>>> serviceClass="org.apache.cxf.service.factory.HelloService" > >>>> address="http://localhost:8000/RealService" > >>>> wsdlURL = "wsdl/hello_world" > >>>> serviceName="s:XMLService" > >>>> xmlns:s="http://apache.org/hello_world_soap_http" > >>>> endpointName="s:XMLPort" /> > >>>> > >>>> <camelContext id="camel" > >>>> xmlns="http://activemq.apache.org/camel/schema/spring"> > >>>> <route> > >>>> <from uri="cxf://CxfEndpointBean=routerPoint"/> > >>>> <to uri="cxf://CxfEndpointBean=externalPoint"/> > >>>> </route> > >>>> </camelContext> > >>>> > >>>> I will add the ServerFactoryBean and ClientFactoryBean configuration > >>>> with CxfEndpointBean code into the cxf component. So we still > >>>> instantiate the server or the client as we always do in the CXF > >>>> component . > >>>> > >>>> Thanks, > >>>> > >>>> Willem. > >>>> > >>>> Guillaume Nodet wrote: > >>>> > >>>> > >>>>> I'm still very concerned about the fact that we have to instanciate > >>>>> the service on the server side if it is not actually used (requests > >>>>> are just forwarded). Can we configure the server to just use a WSDL > >>>>> instead ? > >>>>> > >>>>> On 9/28/07, Willem Jiang <[EMAIL PROTECTED]> wrote: > >>>>> > >>>>> > >>>>> > >>>>>> Guillaume Nodet wrote: > >>>>>> > >>>>>> > >>>>>> > >>>>>>> On 9/28/07, Willem Jiang <[EMAIL PROTECTED]> wrote: > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>> Here is an example: > >>>>>>>> ... > >>>>>>>> <simple:client id="client1" > >>>>>>>> serviceClass="org.apache.cxf.service.factory.HelloService" > >>>>>>>> address="http://localhost:9000/foo2" > >>>>>>>> serviceName="s:XMLService" > >>>>>>>> xmlns:s="http://apache.org/hello_world_soap_http" > >>>>>>>> endpointName="s:XMLPort" > >>>>>>>> bindingId="http://cxf.apache.org/bindings/xformat"> > >>>>>>>> </simple:client> > >>>>>>>> > >>>>>>>> <simple:server id="server1" > >>>>>>>> address="http://localhost:8080/simpleWithAddress"> > >>>>>>>> <simple:serviceBean> > >>>>>>>> <bean class="org.apache.cxf.service.factory.HelloServiceImpl"/> > >>>>>>>> </simple:serviceBean> > >>>>>>>> </simple:server> > >>>>>>>> > >>>>>>>> <camelContext id="camel" > >>>>>>>> xmlns="http://activemq.apache.org/camel/schema/spring"> > >>>>>>>> <route> > >>>>>>>> <from uri="cxf://SpringBean=server1"/> > >>>>>>>> <to uri="cxf://SpringBean=client1"/> > >>>>>>>> </route> > >>>>>>>> </camelContext> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> Can you explain a bit what this route is supposed to do ? > >>>>>>> Is this supposed to accept requests on > >>>>>>> http://localhost:8080/simpleWithAddress > >>>>>>> and route them to an external service on > >>>>>>> http://localhost:9000/foo2 > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> Yes , it is exactly working as your said. > >>>>>> I just omitted the address information from the endpoint URI , because > >>>>>> they are already in the Spring bean's configuration. > >>>>>> > >>>>>> Willem. > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>> > >>> > >>> > >> > > > > > > > >
-- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/
