Eirini Graonidou
Eirini Graonidou

Reputation: 1566

Generate java classes from a wsdl url with basic authentication

I am trying to generate the java classes from a WSLD file, that uses basic authentication.

Although there are many plugins out there, I have to use the following one: org.jvnet.jaxb2.maven2:maven-jaxb2-plugin

With wsimport or wsdl2java i have found the way to configure the basic authentication parameters. Using the maven-jaxb2-plugin i had no luck.

My configuration follows:

       <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.13.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <packageName>com.mycompany</packageName>
                        <sourceType>wsdl</sourceType>
                        <specVersion>2.2</specVersion>
                        <schemas>
                            <schema>
                                <url>https://some-url?wsdl</url>
                            </schema>
                        </schemas>

                        <outputDirectory>target/generated-sources/xjb</outputDirectory>
                        <clearOutputDir>false</clearOutputDir>
                        <useActiveProxyAsHttpproxy>true</useActiveProxyAsHttpproxy>
                    </configuration>
                </execution>
            </executions>
        </plugin>

As expected, the build fails with the following message:

Caused by: java.io.IOException: Server returned HTTP response code: 401 for URL: https://some-url?wsdl
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:647)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:812)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2275)
... 36 more

Any ideas about the basic authentication configuration? Thank's in advance!

Note: https://username:pass@some-url?wsdl, i still get an IOException because of the unauthorized request.

Upvotes: 6

Views: 5527

Answers (3)

Prabah
Prabah

Reputation: 877

It took a while for me to understand what is there inside xauthfile. An xauthfile is nothing but, URL with basic authentication credentials.

https://username:pass@url:port/

Upvotes: 1

Eirini Graonidou
Eirini Graonidou

Reputation: 1566

I haven't found any way of solving this. I ended up downloading the .wsdl and the needed .xsd files and edited them (changed the import URL's) properly.

Note: For people that have the same issue, i would recommend the jaxws:wsimport plugin, that supports an xauthFile option for the configuration of the basic authentication.

Upvotes: 3

Sunil Singhal
Sunil Singhal

Reputation: 603

wsimport, wsdl2java, maven-jaxb2 are meant for generating Proxy classes out of the Descriptor file. Since you are getting Unauthorized (401), it could be either due to wrong creds or may be you are not sending credentials et all in a request.

For Basic Auth, refer another stackoverflow question here

Also, if you can post your exact code here where you configure the Creds, it will be helpful in identifying the cause

Upvotes: 1

Related Questions