Hi Daniel,
Here's the fragment of the code generated by wsdl2java. What you mean is
that "wsdlLocation" in the annotation and the variable WSDL_LOCATION can all
be null?
If I set them to null, that could speed up the first web service calls?
@WebServiceClient(name = "VehResModifyService",
wsdlLocation =
"classpath:com/sabre/webservices/wsdl/VehResModifyLLS1.3.1RQ.wsdl",
targetNamespace = "https://webservices.sabre.com/websvc")
public class VehResModifyService extends Service {
public final static URL WSDL_LOCATION;
public final static QName SERVICE = new QName("
https://webservices.sabre.com/websvc", "VehResModifyService");
public final static QName VehResModifyPortType = new QName("
https://webservices.sabre.com/websvc", "VehResModifyPortType");
static {
URL url = null;
try {
url =
((java.net.URLClassLoader)Thread.currentThread().getContextClassLoader()).findResource("com/sabre/webservices/wsdl/VehResModifyLLS1.3.1RQ.wsdl");
} catch (Exception e) {
System.err.println("Can not initialize the default wsdl from
classpath:com/sabre/webservices/wsdl/VehResModifyLLS1.3.1RQ.wsdl");
// e.printStackTrace();
}
WSDL_LOCATION = url;
}
On Wed, Feb 25, 2009 at 12:27 AM, Daniel Kulp <[email protected]> wrote:
> On Tue February 24 2009 3:30:58 am Christopher Cheng wrote:
> > After migration from Axis 1.2 to CXF 2.1, I found that CXF has an
> overhead
> > of loading wsdl definition during Runtime.
> > That means it will take much longer for the first call of every web
> > service. For a big wsdl, it may take more than 250 secs.
>
> Jeesh... that's got to be a HUGE wsdl. Wow....
>
> > It has not been the case for Axis, because the definiton seems to be
> > generated in the stub with wsdl2java.
> > Is it possible for CXF to have the wsdl definition to generated into the
> > stub?
>
> Well, not really. However, CXF doesn't HAVE to use the wsdl in many
> cases.
> You can get it to work by not specifying a wsdl. However, you will need
> to
> provide the URL of the service at runtime. That's the main thing that
> isn't
> burned into the code anywhere.
>
> QName portName = new QName(....);
> Service service = Service.create(new QName(.....));
> service.addPort(portName,
> SOAPBinding.SOAP11HTTP_BINDING,
> "http://localhost/blah/blah/blah");
> MySoapService port = service.getPort(portName,
> MySoapService.class);
>
>
>
> --
> Daniel Kulp
> [email protected]
> http://www.dankulp.com/blog
>