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/
