Hi Kalle, comment in-line.

Cheers,
Jervis

On Mon, Mar 24, 2008 at 5:39 AM, Kalle Korhonen <[EMAIL PROTECTED]>
wrote:

> On Sat, Mar 22, 2008 at 10:47 PM, Glen Mazza <[EMAIL PROTECTED]>
> wrote:
>
> > I'm not sure, but I think you're trying to create a dynamic client which
> > is unfortunately not working for you.  Hopefully someone else can answer
> > your specific question on this, but in the meantime, you might wish to
> > try the more traditional route of getting the WSDL and XSD's on your
> > machine locally, running wsdl2java and then coding your SOAP client
> > using the wsdl2java artifacts generated, similar to here[1].  Once done,
> > any missing XSD's from the server should no longer be a concern for you.
> >
>
> But it is a concern. I have the generated service stubs, but if I create
> the
> service by specifying the the server url (Service.create(new
> URL("http://<http://some.server/service?wsdl>..."),
> it'll try to fetch the xsds and fails because of that. The same doesn't
> happen if I point to a wsdl from classpath. I need to be able to specify
> the
> service location in code,


You've got it almost right. You need to point your client to use a local
copy of wsdl file and xsds etc. But you do not need to hard code the wsdl
location in your client. Take a look into any CXF sample, for example,
samples\hello_world. You can see the WSDL location is passed in from command
line or from ant script as below:

    public static void main(String args[]) throws Exception {

        if (args.length == 0) {
            System.out.println("please specify wsdl");
            System.exit(1);
        }

        URL wsdlURL;
        File wsdlFile = new File(args[0]);
        if (wsdlFile.exists()) {
            wsdlURL = wsdlFile.toURL();
        } else {
            wsdlURL = new URL(args[0]);
        }

        System.out.println(wsdlURL);
        SOAPService ss = new SOAPService(wsdlURL, SERVICE_NAME);
        Greeter port = ss.getSoapPort();

        .........
      }


> and obviously I can add a new service port
> dynamically (Service.addPort) to make it work. But that's not the point; I
> believe the spec says the schemaLocation is only a hint and furthermore, I
> should be able to use the service without forced validation, don't you
> think?
>
> Kalle
>
>
> Am Samstag, den 22.03.2008, 16:28 -0700 schrieb Kalle Korhonen:
> > > Hello cxfers,
> > >
> > > I'm trying to consume some web service with jaxws/cxf. I use
> > Service.create(new
> > > URL("http://some.server/service?wsdl";), SERVICE_NAME). The service's
> > wsdl
> > > imports xsd with a relative schemaLocation (e.g xsd:import
> > > namespace="servicens" schemaLocation="servicens.xsd") , but the .xsds
> > are
> > > not available through the server (from
> http://some.server/servicens.xsd),
> > so
> > > constructing the service (client) fails with FileNotFoundException. I
> > have
> > > the xsds but I don't know how to tell cxf's servicefactory where the
> > xsds
> > > are located. I've seen quite a few other threads on the list related
> to
> > > resolving references to xsds but the service is not mine so I cannot
> > change
> > > the references or make the xsds available on the server. If I point to
> a
> > > local wsdl, the service factory doesn't even try to resolve the
> schemas;
> > > probably because it's setting the validation off, but I don't know how
> > to
> > > control that. Anybody able to help me?
> > >
> > > Kalle
> >
> >
>

Reply via email to