Does the WSDL_LOCATION also point to the server which you need to access?
If so , here is my explain of this issue.
In CXF we just use WSDL4J and use a common URL class to load the wsdl, so what you set on the client side will not affect the WSDL4J's URL. CXF will build a service model with the WSDL before you client hit the server , so you got that error.

Willem

Glen Mazza wrote:
Sadly, I was able to get this portion of your code below to work for
Metro but not CXF:

        rc.put(BindingProvider.USERNAME_PROPERTY, userName);
        rc.put(BindingProvider.PASSWORD_PROPERTY, password);

I have been meaning to look at this to find out the reason why.  But in
the meantime, CXF has an alternate method of supplying this information,
documented here[1].

Glen

[1] http://tinyurl.com/ytc77j

Am Mittwoch, den 05.03.2008, 15:37 -0800 schrieb xbranko:
How should a webservice that requires basic username/password for
authentication be accessed? The CXF service class that is autogenerated
extends the javax.xml.ws.Service class. So when the client tries to
instantiate it, it fails because it gets java.io.IOException: Server
returned HTTP response code: 401 for URL.

Looking at the documentation, and on the web, it seems that what is needed
is to add something like this:

        //Create a dispatch instance
Dispatch<SOAPMessage> dispatch = createDispatch(WebService1, SOAPMessage.class,
Service.Mode.MESSAGE);

        // Use Dispatch as BindingProvider
        BindingProvider bp = (BindingProvider) dispatch;

        // Optionally Configure RequestContext to send SOAPAction HTTP
Header
        Map<String, Object> rc = bp.getRequestContext();
        rc.put(BindingProvider.USERNAME_PROPERTY, userName);
        rc.put(BindingProvider.PASSWORD_PROPERTY, password);

before the service hits the url. However, given that service derives from
javax.xml.ws.Service class whose constructor is protected, how do I do that,
given that constructor looks like:

    public WebServiceX() {
        super(WSDL_LOCATION, SERVICE);
    }
        
and in the super's constructor (javax.xml.ws.Service), the class tries to
connect to the url that needs the username and password, and due to java,
call to super must be the first call in the deriver class's constructor.

Note that this is not an https service, but just an http service that works
well when I invoke it from the browser (once I provide username and password
in the dialog box provided by the browser).

Any help greatly appreciated!



Reply via email to