« Return to Thread: How to generate wsdl programmatically using cxf?

Re: How to generate wsdl programmatically using cxf?

by liw :: Rate this Message:

Reply to Author | View in Thread

Hi Jim,

Since I have the service object already, is there any way that I can get the ServiceInfo for the service instead of creating a one?

If I have to create a ServiceInfo instance, what are the minimum fields I need to add before passing it to JavaToWSDLProcessor.


Here is the code I have. Unfortunately, the wdl file generated is empty.


  private void generateCXFWsdlStream(String serviceName, OutputStream os) throws IOException
    {
        Service service = getCXFServiceObject(serviceName);
        List serviceInfos = service.getServiceInfos();
   
    for (ServiceInfo serviceInfo : service.getServiceInfos()) {
    System.out.println("serviceInfo targetNamespace" + serviceInfo.getTargetNamespace());
    }
   
    File tempFile = new File(outdir, serviceName + ".wsdl");
    JavaToWSDLProcessor wsdlProcessor = new JavaToWSDLProcessor();
   
    wsdlProcessor.generate((ServiceInfo) serviceInfos.get(0),tempFile);
    }


Thanks in advance,

Li




jim ma wrote:
On Fri, Jun 19, 2009 at 1:29 PM, liw <pattiewang@yahoo.com> wrote:

>
> Hi, we are migrating from xfire to cxf. In xfire, we have the following
> code
> for generating wsdl.
>
>  XFire xfire = (XFire)BeanFactory.getBeanInstance("xfire");
>  Service origRegisteredService =
> xfire.getServiceRegistry().getService(serviceName);
>  origRegisteredService.getWSDLWriter().write(os);
>
> We need to migrate the above code from xfire to CXF.
>
> 1) Is JavaToWSDLProcessor.generate() the right API to use for generating
> wsdl in CXF?


Yes. You can also look at JavaToWSDLProcessor.generate(ServiceInfo service,
File output)  if you already
created a serviceInfo instance.


>
> 2) If so, given a serviceName, what are the APIs we need to use to get the
> ServiceInfo, so we can pass it to JavaToWSDLProcessor.generate() method?


JavaToWSDLProcessor uses serviceBuilder to create service . It only create
one serviceInfo for the given serviceClass.  So you can create ServiceInfo
first and pass it to the generate(serviceInfo, outputFile) api.
Dose this help ?


Jim.

 « Return to Thread: How to generate wsdl programmatically using cxf?