Hi All ,

Here is my proposal for implementing a code first tool to generate client ,server side code and wsdl . With this tool , user can more easily deploy a service with java class in cxf. If this is OK, I will start on writing this tool.
Goal
----------
1. Generate jaxws frontend client server code and wsdl from Jaxws conformed classes 2. Generate simple frontend client server code and wsdl from Pojo class . Tool can generate and compile interface class or impl class the server and client side needed
   from the user provided classes.

Tool Description
-----------
Tool Name    :   java2cs
Description : takes a user defined class to generate jaxws or simple frontend client and server side code Options : -cp classpath to load the user defined classes -server generate server side code only, if client and server is not specified , both client and server code will be generated
                       -client             generate client side code only
-frontend jaxws or simple , default is simple frontend. which control to generate jaxws and simple style server and client -databinding jaxb or aegis databinding. jaxws frontend will use jaxb databinding and simple frontend will use aegis databinding by default .
                       -wsdl              control to generate wsdl.
class the full class name used to generate client and server

Generated Code Sample
--------------------------
1. jaxws frontend.

       Server code :
       =========
                            public class Server {
                                    protected Server() throws Exception {
System.out.println("Starting Server"); Object implementor = new GreeterImpl(); String address = "http://localhost:9000/SoapContext/SoapPort";; Endpoint.publish(address, implementor);
                                     }

public static void main(String args[]) throws Exception {
                                     new Server();
                                     System.out.println("Server ready...");
                                     Thread.sleep(5 * 60 * 1000);
                                     System.out.println("Server exiting");
                                     System.exit(0);
                                 }
                           }

       Client code :
       ========
                                   ...
SOAPService ss = new SOAPService(wsdlURL, SERVICE_NAME); Greeter port = ss.getSoapPort(); port.sayHi();
                                   ...............

2. simple frontend :
        Server code
        =========
ServerFactoryBean svrBean = new ServerFactoryBean();
                           svrBean.setBus(CXFBusFactory.getDefaultBus());
svrBean.setAddress("http://localhost:8080/Hello";); svrBean.setTransportId("http://schemas.xmlsoap.org/wsdl/http/";); svrBean.setBindingId("http://schemas.xmlsoap.org/soap/";);
                            svrBean.setServiceBean(new GreeterImpl());
svrBean.getServiceFactory().setDataBinding(new AegisDatabinding());
                            svrBean.setStart(true);
                            svrBean.create();
                            System.out.println("Server started");

      Client code :
       ========
ClientProxyFactoryBean proxyFactory = new ClientProxyFactoryBean(); ClientFactoryBean clientBean = proxyFactory.getClientFactoryBean(); clientBean.setAddress("http://localhost:8088/Hello";);
                         clientBean.setBus(CXFBusFactory.getDefaultBus());
clientBean.setTransportId("http://schemas.xmlsoap.org/wsdl/http/";);
                          clientBean.setServiceClass(Greeter.class);
proxyFactory.getServiceFactory().setDataBinding(new AegisDatabinding());
                         Greeter client = (Greeter) proxyFactory.create();

Any thoughts and  directions would be appreciated !

Thanks

Jim

Reply via email to