Looks like the main concern for merging java2cs and java2wsdl together into one tool is java2wsdl brings a lot of flags, which complicates the new java2 tool. How about we do this in an incremental manor? We implement a new java2 tool first with basic flags suggested by Jim. Once the first version is out of door, based on the feedback from user groups, such as Eclipse STP project, we can exam these extra flags provided by java2wsdl (such as "-servicename <service-name> -portname <port-name> -createxsdimports") one by one to see if the flag is really necessary for a code-first approach.
Cheers, Jervis -----Original Message----- From: Daniel Kulp [mailto:[EMAIL PROTECTED] Sent: 2007?7?26? 15:28 To: [email protected] Subject: Re: Code first tool proposal 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 ---------------------------- IONA Technologies PLC (registered in Ireland) Registered Number: 171387 Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
