JBoss Community

Re: Consume a web service from another web service

created by florentine in JBoss Web Services - View the full discussion

Thank you for you answer. I took a look at JNDI and it looks a lower level solution where you have to code more. I saw several examples on the internet on how to create a client for a web service and I can make them work also on my small piece of code above. The problem is that I can't make a web service calling another web service. It sounds to me a very basic functionality, but I was really able to find a complete example on how to do that. I tried to copy and paste the code of my client inside the HelloWorld.getHiWorld() method, but I keep getting a proxy error. How people normally make more webservices communicating between each other? any example from where I could get an idea?

 

This is my updated code with the client :

 

 

HelloWorldImpl.java

package hw1;

 

import hw2.HelloWorld2;

 

import java.net.MalformedURLException;

import java.net.URL;

import javax.jws.WebService;

import javax.xml.namespace.QName;

import javax.xml.ws.Service;

 

 

@WebService(serviceName="HelloWorldService", name="HelloWorld")

public class HelloWorldImpl implements HelloWorld   {

 

    @Override    public String getHiWorld() {

       

        URL url=null;

        try {

            url = new URL("http://localhost:8080/HelloWorld2WS/HelloWorld2Service?wsdl");

        } catch (MalformedURLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        QName qname = new QName("http://hw2/", "HelloWorld2Service");

        Service    service = Service.create(url, qname);

        HelloWorld2 port = service.getPort(HelloWorld2.class);

       

        return "Hi World" + port.getHiWorld();

    }

 

    public HelloWorldImpl() {

 

    }

 

}

 

 

 

 

HelloWorld2Impl.java

 

package hw2;

 

import javax.jws.WebService;

 

@WebService(serviceName="HelloWorld2Service", name="HelloWorld2")

public class HelloWorld2Impl implements HelloWorld2 {

 

    @Override

    public String getHiWorld() {

            return " again!";

     }

   

public HelloWorld2Impl (){}

}

 

 

 

 

HelloWorldClient.java

 

package client;

 

import hw1.HelloWorld;

 

import java.net.URL;

 

import javax.xml.namespace.QName;

import javax.xml.ws.Service;

 

 

 

public class HelloWorldClient {

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

        URL url = new URL("http://localhost:8080/HelloWorldWS/HelloWorldService?wsdl");

        QName qname = new QName("http://hw1/", "HelloWorldService");

 

        Service service = Service.create(url, qname);

 

        HelloWorld eif = service.getPort(HelloWorld.class);

 

        System.out.println(eif.getHiWorld());

 

    }

 

}

 

 

Finally, this is the error my JBoss server is giving me:

 

 

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: hw2/HelloWorld2

    at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178)

    at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:111)

    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)

    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)

    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:129)

    at $Proxy19.getHiWorld(Unknown Source)

    at client.HelloWorldClient.main(HelloWorldClient.java:25)

 

 

 

Thank you!

Reply to this message by going to Community

Start a new discussion in JBoss Web Services at Community