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