如何在客户端应用程序中访问Web服务?

时间:2014-03-15 09:38:15

标签: java web-services soap jaxb wsdl

我正在研究Web服务。我为我的Web应用程序生成了 WSDL 文件。这里基于用户名我收到了用户详细信息。我想在另一个应用程序中运行此Web服务。

这就是我使用 d:> wsimport -keep -s src Wsdl url 生成 .java 文件的原因,我写了Client Class来获取详细信息。但在这里我得到了一个例外。我怎么能克服这一点。

以下是我的 UserName.java 类。通过使用这个类,我生成了wsdl文件。

public class UserName implements UserId {
String result = null;

@Override
public String getName(String name) {
    try {

        String name1 = name;

        JAXBContext jaxbContext = JAXBContext.newInstance(User.class);

        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        File file = new File("D:/MyWorkspace/JaxWsWithxml/User.xml");
        User userUnmarshal = (User) jaxbUnmarshaller.unmarshal(file);

        List<User> list = userUnmarshal.getUser();
        for (User user : list)
            if (user.getName().equals(name1)) {
                result = user.getName();
                System.out.println("Id " + " " + user.getId() + "  "+ user.getName());

            }

    } catch (JAXBException e) {
        e.printStackTrace();
    }
    return result;
}
}

以下是 UserId.java 界面

 public interface UserId
{
 public String getName(String name);
}

以下是 Client.java 在另一个应用程序中,我使用WSDL文件 .java 文件

public class Client {

public static void main(String[] args) {
    // TODO Auto-generated method stub
String name1="raj";
int id;
String a=name(name1);
System.out.println("Name is"+a);

}
public static String name(String name1)
{
    UserNameService us=new UserNameService();
    UserName userNmae=us.getUserName();
    return userNmae.getName(name1);
}

 }

此处 UserNameService WSDL 文件中的服务名称, WSDL 文件中的 UserName 端口名称。

我的例外是:

Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException:
HTTP transport error: java.net.ConnectException: Connection refused: connect
at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(Unknown Source)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source)

这是我的例外我该如何解决谢谢...

2 个答案:

答案 0 :(得分:1)

首先,您需要检查已部署的服务是否正常运行。因为您正面临连接拒绝异常,我猜服务器运行不正常。或者可能是您的客户端应用程序无法访问Web服务URL。由于您已经拥有WSDL,因此您还可以通过直接引用Java代码/ JAX-WS Client中的WSDL来调用Web服务。

答案 1 :(得分:0)

HTTP传输错误表示您的应用程序当前未运行。首先,您应首先运行Web服务应用程序,然后执行您的客户端代码。它会很好。您的代码无需更改。