I'm 100% OK with the idea of better tooling around the code first stuff.
My only concern is having two separate "java2" tools. I think I'd
prefer just having a single "java2" tool where -wsdl is just an option.
The java2wsdl command line tool would be deprecated in favor of the new
tool. You mentioned internally invoking java2wsdl... IMO, the
java2wsdl code would be merged into this tool so there is only a single
set of java2 stuff to maintain.
Basically, I completely agree with Jervis.
Dan
On Tuesday 24 July 2007 22:54, Jim Ma wrote:
> 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
--
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727 C: 508-380-7194
[EMAIL PROTECTED]
http://www.dankulp.com/blog