0

I am creating a spring boot 3 application that will consume publicly exposed webservice:

Web Service - https://www.dataaccess.com/webservicesserver/NumberConversion.wso WSDL - https://www.dataaccess.com/webservicesserver/NumberConversion.wso?wsdl

The web service doesn't require any authentication credentials. I have generated the stubs using wsimport.

Find below my code:

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

Configuration Class Code

@Configuration
public class NumberConversionConfiguration {

    @Bean
    public Jaxb2Marshaller marshaller() {
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        // this package must match the package in the <generatePackage> specified in
        // pom.xml
        marshaller.setContextPath("com.microservices.demo.soap.service.ws.numberconversion.stub");
        return marshaller;
    }

    @Bean
    public NumberConversionClient countryClient(Jaxb2Marshaller marshaller) {
        NumberConversionClient client = new NumberConversionClient();
        client.setDefaultUri("https://www.dataaccess.com/webservicesserver/NumberConversion.wso");
        client.setMarshaller(marshaller);
        client.setUnmarshaller(marshaller);
        return client;
    }

}

Client Class Code - Calling the SOAP endpoint

public class NumberConversionClient extends WebServiceGatewaySupport {
    
    private static final Logger log = LoggerFactory.getLogger(NumberConversionClient.class);

      public NumberToWordsResponse getNumberConversion(BigInteger number) {

        NumberToWords request = new NumberToWords();
        request.setUbiNum(number);

        log.info("Requesting number conversion for number " + number.intValue());

        NumberToWordsResponse response = (NumberToWordsResponse) getWebServiceTemplate()
            .marshalSendAndReceive(request);

        return response;
      }

}

Main Class Application Code - This will call the SOAP client to get the result

@SpringBootApplication
public class SoapServiceDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SoapServiceDemoApplication.class, args);
    }

    @Bean
    CommandLineRunner lookup(NumberConversionClient numberConversionClient) {
        return args -> {
            
            BigInteger number = BigInteger.valueOf(25);

            if (args.length > 0) {
                number = new BigInteger(args[0]);
            }
            NumberToWordsResponse response = numberConversionClient.getNumberConversion(number);
            System.out.println(response.getNumberToWordsResult());
        };
    }

}

Post executing the application, I am getting the below exception related to connection

java.lang.IllegalStateException: Failed to execute CommandLineRunner at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:774) ~[spring-boot-3.1.2.jar:3.1.2] at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:755) ~[spring-boot-3.1.2.jar:3.1.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:319) ~[spring-boot-3.1.2.jar:3.1.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-3.1.2.jar:3.1.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-3.1.2.jar:3.1.2] at com.microservices.demo.soap.service.SoapServiceDemoApplication.main(SoapServiceDemoApplication.java:17) > ~[classes/:na] Caused by: org.springframework.ws.client.WebServiceIOException: I/O error: Connection timed out: no further information at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:543) ~[spring-ws-core-4.0.5.jar:na] at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:391) ~[spring-ws-core-4.0.5.jar:na] at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:385) ~[spring-ws-core-4.0.5.jar:na] at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:375) ~[spring-ws-core-4.0.5.jar:na] at com.microservices.demo.soap.service.client.NumberConversionClient.getNumberConversion(NumberConversionClient.java:25) ~[classes/:na] at com.microservices.demo.soap.service.SoapServiceDemoApplication.lambda$0(SoapServiceDemoApplication.java:29) ~[classes/:na] at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771) ~[spring-boot-3.1.2.jar:3.1.2] ... 5 common frames omitted Caused by: java.net.ConnectException: Connection timed out: no further information at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na] at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:549) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[na:na] at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[na:na] at java.base/java.net.Socket.connect(Socket.java:633) ~[na:na] at java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:304) ~[na:na] at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:178) ~[na:na] at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:531) ~[na:na] at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:636) ~[na:na] at java.base/sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:266) ~[na:na] at java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:380) ~[na:na] at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:193) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1242) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1128) ~[na:na] at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:179) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1430) ~[na:na] at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1401) ~[na:na] at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:220) ~[na:na] at org.springframework.ws.transport.http.HttpUrlConnection.getRequestOutputStream(HttpUrlConnection.java:89) ~[spring-ws-core-4.0.5.jar:na] at org.springframework.ws.transport.AbstractSenderConnection$RequestTransportOutputStream.createOutputStream(AbstractSenderConnection.java:85) ~[spring-ws-core-4.0.5.jar:na] at org.springframework.ws.transport.TransportOutputStream.getOutputStream(TransportOutputStream.java:40) ~[spring-ws-core-4.0.5.jar:na] at org.springframework.ws.transport.TransportOutputStream.write(TransportOutputStream.java:67) ~[spring-ws-core-4.0.5.jar:na] at com.sun.xml.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java:1395) ~[saaj-impl-3.0.2.jar:3.0.2] at org.springframework.ws.soap.saaj.SaajSoapMessage.writeTo(SaajSoapMessage.java:246) ~[spring-ws-core-4.0.5.jar:na] at org.springframework.ws.transport.AbstractWebServiceConnection.send(AbstractWebServiceConnection.java:46) ~[spring-ws-core-4.0.5.jar:na] at org.springframework.ws.client.core.WebServiceTemplate.sendRequest(WebServiceTemplate.java:627) ~[spring-ws-core-4.0.5.jar:na] at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:585) ~[spring-ws-core-4.0.5.jar:na] at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:539) ~[spring-ws-core-4.0.5.jar:na] ... 11 common frames omitted

Please suggest, what I am missing.

Abhi
  • 21
  • 5

0 Answers0