cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Ma <...@iona.com>
Subject Code first tool proposal
Date Wed, 25 Jul 2007 02:54:27 GMT
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      

Mime
View raw message