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 > > > > >