cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Johnson Ma" <johnson...@iona.com>
Subject Re: Code first tool proposal
Date Wed, 25 Jul 2007 04:53:27 GMT
If you are going to generate the configuration file, we would like the same 
function to be added back to
wsdl2java tool as well.

Johnson
----- Original Message ----- 
From: "James Mao" <james.mao@iona.com>
To: <cxf-dev@incubator.apache.org>
Sent: Wednesday, July 25, 2007 11:26 AM
Subject: Re: Code first tool proposal


> Excellent work, Jim,
>
> If you can also comment on the relationship between the java2wsdl and 
> java2cs, that will be great
> IMHO, the java2wsdl does support the jaxws, and simple frontend, but it's 
> only generate the wsdl, is it the duplicate function in the java2cs,
> Or is it possible to extend the java2wsdl (we need to find a better name 
> for it)
> Or java2cs will call into the java2wsdl to generate the wsdl files, and 
> associate the artifacts (like the beans/binding files in case of jaxws)
>
> And the java2cs should also generate the configuration files, right? 
> (spring, servlet etc.), and also we need have the ant tasks, so generating 
> artifacts, and then compile, deploy, all in one command.
>
> All in all, looks a good plan :)
>
> James
>
>> 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