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.